<?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>155456</bug_id>
          
          <creation_ts>2016-03-14 13:31:54 -0700</creation_ts>
          <short_desc>Merge CG ImageSource and non CG ImageSource implementation in one file</short_desc>
          <delta_ts>2016-04-11 17:09:08 -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>FIXED</resolution>
          
          
          <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>155444</dependson>
    
    <dependson>156465</dependson>
          <blocked>155322</blocked>
    
    <blocked>155498</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jfernandez</cc>
    
    <cc>jh718.park</cc>
    
    <cc>jonlee</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1174656</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 13:31:54 -0700</bug_when>
    <thetext>The goal is to make it easy to cache the ImageFrameData in the ImageSource instead of having it cached with the BitmapImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174665</commentid>
    <comment_count>1</comment_count>
      <attachid>274014</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 13:37:14 -0700</bug_when>
    <thetext>Created attachment 274014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174676</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-14 13:46:31 -0700</bug_when>
    <thetext>Is that the right patch? It looks like the full patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174688</commentid>
    <comment_count>3</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 13:55:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Is that the right patch? It looks like the full patch.

I mentioned in the Changelog that this patch is not for review. It is for EWS only. Once the bots are happy, I am going to post the diff based on the patch submitted to the previous bugs in the chain which is https://bugs.webkit.org/show_bug.cgi?id=155422.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174692</commentid>
    <comment_count>4</comment_count>
      <attachid>274023</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 14:01:11 -0700</bug_when>
    <thetext>Created attachment 274023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174741</commentid>
    <comment_count>5</comment_count>
      <attachid>274035</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 15:18:14 -0700</bug_when>
    <thetext>Created attachment 274035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174749</commentid>
    <comment_count>6</comment_count>
      <attachid>274038</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 15:36:30 -0700</bug_when>
    <thetext>Created attachment 274038
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175408</commentid>
    <comment_count>7</comment_count>
      <attachid>274038</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-16 11:28:12 -0700</bug_when>
    <thetext>Comment on attachment 274038
Patch for review

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

This patch needs to be done in such a way that it applies to TOT.

&gt; Source/WebCore/ChangeLog:11
&gt; +        Moving the ImageFrameData caching to ImageSource is hard with two separate
&gt; +        implementations for the same class. ImageSource.cpp and ImageSourceCG.cpp
&gt; +        have a lot of duplicated code. So merging them in one file will remove the
&gt; +        duplicated code and it is a step forward for the asynchronous image decoding.

This is contrary to our usual approach of putting platform-specific code in its own file. I think you need a strong justification for it.

Often we don&apos;t subclass per-platform, but do have platformFoo() methods that go into a separate file.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:61
&gt; +        // Recent versions of ImageIO discard previously decoded image frames if the client

A comment that says &quot;recent versions of foo&quot; quickly becomes useless, since the reader has no notion of what is &quot;recent&quot;.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:84
&gt; +    m_decoder = new ImageDecoder();

We never call bare &apos;new&apos;. This should be a unique_ptr.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:145
&gt; +    

Whitespace (lots of it here and below).

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:162
&gt; +#if USE(CG)
&gt; +        return cAnimationLoopOnce;
&gt; +#else
&gt; +        return cAnimationNone;
&gt; +#endif

Why this seemingly arbitrary difference?

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:205
&gt; +        

Whitespace.

&gt; Source/WebCore/platform/graphics/ImageSource.h:37
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Why does the header need this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179236</commentid>
    <comment_count>8</comment_count>
      <attachid>275237</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-30 16:44:16 -0700</bug_when>
    <thetext>Created attachment 275237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179277</commentid>
    <comment_count>9</comment_count>
      <attachid>275252</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-30 18:14:52 -0700</bug_when>
    <thetext>Created attachment 275252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179461</commentid>
    <comment_count>10</comment_count>
      <attachid>275300</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-31 10:33:04 -0700</bug_when>
    <thetext>Created attachment 275300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179625</commentid>
    <comment_count>11</comment_count>
      <attachid>274038</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-31 15:38:32 -0700</bug_when>
    <thetext>Comment on attachment 274038
Patch for review

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

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        duplicated code and it is a step forward for the asynchronous image decoding.
&gt; 
&gt; This is contrary to our usual approach of putting platform-specific code in its own file. I think you need a strong justification for it.
&gt; 
&gt; Often we don&apos;t subclass per-platform, but do have platformFoo() methods that go into a separate file.

The goal is to move all the platform specific code to the ImageDecoder and to make ImageSource platform independent. The goal also is to have one ImageDecoder header file but two implementations.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:61
&gt;&gt; +        // Recent versions of ImageIO discard previously decoded image frames if the client
&gt; 
&gt; A comment that says &quot;recent versions of foo&quot; quickly becomes useless, since the reader has no notion of what is &quot;recent&quot;.

The comment was changed.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:84
&gt;&gt; +    m_decoder = new ImageDecoder();
&gt; 
&gt; We never call bare &apos;new&apos;. This should be a unique_ptr.

Done. This has been taken care of in http://trac.webkit.org/changeset/198782.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:145
&gt;&gt; +    
&gt; 
&gt; Whitespace (lots of it here and below).

Removed.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:162
&gt;&gt; +#endif
&gt; 
&gt; Why this seemingly arbitrary difference?

This difference was inherited from the old separated code. We now return cAnimationNone if the decoder is not initialized.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:205
&gt;&gt; +        
&gt; 
&gt; Whitespace.

Removed.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.h:37
&gt;&gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; Why does the header need this?

You right. This header file is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179642</commentid>
    <comment_count>12</comment_count>
      <attachid>275346</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-31 15:57:47 -0700</bug_when>
    <thetext>Created attachment 275346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180141</commentid>
    <comment_count>13</comment_count>
      <attachid>275346</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-02 21:51:21 -0700</bug_when>
    <thetext>Comment on attachment 275346
Patch

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

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:68
&gt; +    // ImageIO discards previously decoded image frames if the client application no longer holds
&gt; +    // references to them, so there&apos;s no need to throw away the decoder unless we&apos;re explicitly asked
&gt; +    // to destroy all of the frames.

This comment is not written correctly for a platform-independent function. This explains why the behavior is correct for Cocoa platforms but not why it’s correct for other platforms. I’m not even sure it is.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:85
&gt;      m_decoder = ImageDecoder::create(*data, m_alphaOption, m_gammaAndColorProfileOption);

Since this function always dereferences data, it should take a reference rather than a pointer.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:109
&gt; +    // Values chosen to be appropriate for iOS.

Not a complete enough comment for a platform independent function. Why are values that are appropriate for iOS also good for other platforms?

&gt; Source/WebCore/platform/graphics/ImageSource.h:2
&gt; + * Copyright (C) 2004, 2005, 2006, 2016 Apple Inc.  All rights reserved.

Set of years is probably wrong. Did we really leave this header untouched during 2007-2015?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182440</commentid>
    <comment_count>14</comment_count>
      <attachid>276080</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-08 22:43:08 -0700</bug_when>
    <thetext>Created attachment 276080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182441</commentid>
    <comment_count>15</comment_count>
      <attachid>276081</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-08 22:55:48 -0700</bug_when>
    <thetext>Created attachment 276081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182445</commentid>
    <comment_count>16</comment_count>
      <attachid>276082</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-09 01:16:14 -0700</bug_when>
    <thetext>Created attachment 276082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182446</commentid>
    <comment_count>17</comment_count>
      <attachid>276083</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-09 02:55:11 -0700</bug_when>
    <thetext>Created attachment 276083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182447</commentid>
    <comment_count>18</comment_count>
      <attachid>276084</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-09 03:59:54 -0700</bug_when>
    <thetext>Created attachment 276084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182448</commentid>
    <comment_count>19</comment_count>
      <attachid>276085</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-09 04:22:37 -0700</bug_when>
    <thetext>Created attachment 276085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182531</commentid>
    <comment_count>20</comment_count>
      <attachid>276101</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-10 00:23:29 -0700</bug_when>
    <thetext>Created attachment 276101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182532</commentid>
    <comment_count>21</comment_count>
      <attachid>275346</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-10 00:27:18 -0700</bug_when>
    <thetext>Comment on attachment 275346
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:68
&gt;&gt; +    // to destroy all of the frames.
&gt; 
&gt; This comment is not written correctly for a platform-independent function. This explains why the behavior is correct for Cocoa platforms but not why it’s correct for other platforms. I’m not even sure it is.

Done. The comment was changed.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:85
&gt;&gt;      m_decoder = ImageDecoder::create(*data, m_alphaOption, m_gammaAndColorProfileOption);
&gt; 
&gt; Since this function always dereferences data, it should take a reference rather than a pointer.

Done. The image decoder create and setData are taking a reference instead of a pointer. But the image reader setData() is still taking a pointer.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:109
&gt;&gt; +    // Values chosen to be appropriate for iOS.
&gt; 
&gt; Not a complete enough comment for a platform independent function. Why are values that are appropriate for iOS also good for other platforms?

A FIXME comment is added.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.h:2
&gt;&gt; + * Copyright (C) 2004, 2005, 2006, 2016 Apple Inc.  All rights reserved.
&gt; 
&gt; Set of years is probably wrong. Did we really leave this header untouched during 2007-2015?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182570</commentid>
    <comment_count>22</comment_count>
      <attachid>276101</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-10 16:46:09 -0700</bug_when>
    <thetext>Comment on attachment 276101
Patch

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

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:36
&gt; +#if USE(CG)
&gt; +#include &quot;ImageDecoderCG.h&quot;
&gt; +#else
&gt;  #include &quot;ImageDecoder.h&quot;
&gt; +#endif

Long term we should clean this up, I think. There are better patterns for this than #if in the files using the header.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:97
&gt; +    

Stray whitespace here should be deleted.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:106
&gt; +    const int cMaximumImageAreaBeforeSubsampling = 5 * 1024 * 1024;

No need for the &quot;c&quot; prefix here.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:109
&gt; +    for (SubsamplingLevel subsamplingLevel = 0; subsamplingLevel &lt; maxSubsamplingLevel; ++subsamplingLevel) {

I think the local variable could just be named &quot;level&quot;.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:110
&gt; +        IntSize frameSize = frameSizeAtIndex(0, subsamplingLevel);

I think the code would read better without the local variable.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:121
&gt; +    if (scale &lt;= 0 || scale &gt; 1)
&gt; +        return 0;

Probably not important here, but a good habit is to write this the other way so it will reject a NaN:

    if (!(scale &gt; 0 &amp;&amp; scale &lt;= 1))
        return 0;

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:128
&gt; +    SubsamplingLevel result = ceilf(log2f(1 / scale));

Better to use std::ceil and std::log2 rather than ceilf and log2f.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:179
&gt; +    return !initialized() || m_decoder-&gt;frameHasAlphaAtIndex(index);

A little peculiar to return true for all frames when not initialized. In future we might want to return and reverse the boolean sense of this and give it a new name, since it’s really a function that checks for &quot;guaranteed not to have alpha&quot; and returns false if that guarantee holds.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:193
&gt; +    ImageOrientation orientation = orientationAtIndex(index);

Putting this in a local variable causes us to evaluate it even when shouldRespectImageOrientation means we would not need to. I suggest just moving this into the expression below.

&gt; Source/WebCore/platform/graphics/ImageSource.h:115
&gt; +    bool isSizeAvailable();

Strange that this is non-const, but the size function itself is const.

Generally unclear which ImageSource functions are const.

&gt; Source/WebCore/platform/graphics/ImageSource.h:123
&gt; +    bool getHotSpot(IntPoint&amp;) const;

In future could return and rename this to hotSpot and have it return Optional&lt;IntPoint&gt;.

&gt; Source/WebCore/platform/graphics/ImageSource.h:151
&gt; +    // The default value of m_allowSubsampling should be the same as defaultImageSubsamplingEnabled in Settings.cpp

Is there no better way to achieve this than with a comment?

&gt; Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:167
&gt;      RefPtr&lt;SharedBuffer&gt; pngData(SharedBuffer::create(&amp;m_data-&gt;data()[dirEntry.m_imageOffset], m_data-&gt;size() - dirEntry.m_imageOffset));

This should be a Ref, not a RefPtr, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182595</commentid>
    <comment_count>23</comment_count>
      <attachid>276125</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-10 20:20:19 -0700</bug_when>
    <thetext>Created attachment 276125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182596</commentid>
    <comment_count>24</comment_count>
      <attachid>276126</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-10 20:27:41 -0700</bug_when>
    <thetext>Created attachment 276126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182597</commentid>
    <comment_count>25</comment_count>
      <attachid>276127</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-10 20:42:38 -0700</bug_when>
    <thetext>Created attachment 276127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182600</commentid>
    <comment_count>26</comment_count>
      <attachid>276128</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-10 21:47:09 -0700</bug_when>
    <thetext>Created attachment 276128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182606</commentid>
    <comment_count>27</comment_count>
      <attachid>276101</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-10 23:38:26 -0700</bug_when>
    <thetext>Comment on attachment 276101
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:36
&gt;&gt; +#endif
&gt; 
&gt; Long term we should clean this up, I think. There are better patterns for this than #if in the files using the header.

Yes ideally we should have one header file for ImageDecoder and different implementations.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:97
&gt;&gt; +    
&gt; 
&gt; Stray whitespace here should be deleted.

Whitespace was removed.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:106
&gt;&gt; +    const int cMaximumImageAreaBeforeSubsampling = 5 * 1024 * 1024;
&gt; 
&gt; No need for the &quot;c&quot; prefix here.

The prefix was removed.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:109
&gt;&gt; +    for (SubsamplingLevel subsamplingLevel = 0; subsamplingLevel &lt; maxSubsamplingLevel; ++subsamplingLevel) {
&gt; 
&gt; I think the local variable could just be named &quot;level&quot;.

The name of the local variable was changed.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:121
&gt;&gt; +        return 0;
&gt; 
&gt; Probably not important here, but a good habit is to write this the other way so it will reject a NaN:
&gt; 
&gt;     if (!(scale &gt; 0 &amp;&amp; scale &lt;= 1))
&gt;         return 0;

The if-statment was changed.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:128
&gt;&gt; +    SubsamplingLevel result = ceilf(log2f(1 / scale));
&gt; 
&gt; Better to use std::ceil and std::log2 rather than ceilf and log2f.

Done.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:193
&gt;&gt; +    ImageOrientation orientation = orientationAtIndex(index);
&gt; 
&gt; Putting this in a local variable causes us to evaluate it even when shouldRespectImageOrientation means we would not need to. I suggest just moving this into the expression below.

Done.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.h:115
&gt;&gt; +    bool isSizeAvailable();
&gt; 
&gt; Strange that this is non-const, but the size function itself is const.
&gt; 
&gt; Generally unclear which ImageSource functions are const.

The function prototype was changed to be const. The const-ness of this class will be  cleaned in another patch.

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.h:123
&gt;&gt; +    bool getHotSpot(IntPoint&amp;) const;
&gt; 
&gt; In future could return and rename this to hotSpot and have it return Optional&lt;IntPoint&gt;.

Done.

&gt;&gt; Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:167
&gt;&gt;      RefPtr&lt;SharedBuffer&gt; pngData(SharedBuffer::create(&amp;m_data-&gt;data()[dirEntry.m_imageOffset], m_data-&gt;size() - dirEntry.m_imageOffset));
&gt; 
&gt; This should be a Ref, not a RefPtr, I think.

The only SharedBuffer::create() function which returns Ref requires the first parameter to be const unsigned char*. m_data-&gt;data() returns char*. This causes SharedBuffer::create() which returns PassRefPtr to be called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182613</commentid>
    <comment_count>28</comment_count>
      <attachid>276128</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 00:29:30 -0700</bug_when>
    <thetext>Comment on attachment 276128
Patch

Clearing flags on attachment: 276128

Committed r199290: &lt;http://trac.webkit.org/changeset/199290&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182614</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 00:29:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182658</commentid>
    <comment_count>30</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-04-11 03:01:09 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Comment on attachment 276128 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 276128
&gt; 
&gt; Committed r199290: &lt;http://trac.webkit.org/changeset/199290&gt;

This has caused 300 new failures on the GTK+ layout tests:

- Tests for r199289 148 unexpected failures https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20%28Tests%29/builds/15017
- Tests for r199290 449 unexpected failures https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20%28Tests%29/builds/15018


And since I don&apos;t see that this patch does any rebaseline on the Mac port, I wonder....

Does it make sense that the GTK+ port needs 300 new rebaselines after this patch but not the Mac port?
Or perhaps this is indicating that something broke in the GTK+ port?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182660</commentid>
    <comment_count>31</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-04-11 03:33:30 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #28)
&gt; &gt; Comment on attachment 276128 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 276128
&gt; &gt; 
&gt; &gt; Committed r199290: &lt;http://trac.webkit.org/changeset/199290&gt;
&gt; 
&gt; This has caused 300 new failures on the GTK+ layout tests:
&gt; 
&gt; - Tests for r199289 148 unexpected failures
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-
&gt; bit%20Release%20%28Tests%29/builds/15017
&gt; - Tests for r199290 449 unexpected failures
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-
&gt; bit%20Release%20%28Tests%29/builds/15018
&gt; 
&gt; 
&gt; And since I don&apos;t see that this patch does any rebaseline on the Mac port, I
&gt; wonder....
&gt; 
&gt; Does it make sense that the GTK+ port needs 300 new rebaselines after this
&gt; patch but not the Mac port?
&gt; Or perhaps this is indicating that something broke in the GTK+ port?

Something similar seems to happens on the EFL port:

- Tests for r199289 123 unexpected failures https://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release%20WK2/builds/27464
- Tests for r199290 308 unexpected failures https://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release%20WK2/builds/27465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182673</commentid>
    <comment_count>32</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-11 05:40:02 -0700</bug_when>
    <thetext>Looking at a couple of the tests, they do not need rebaselined, they&apos;re just broken. E.g. first one I checked:

--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/accessibility/aria-current-global-attribute-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/accessibility/aria-current-global-attribute-actual.txt
@@ -5,7 +5,7 @@
 
 
 PASS spanAccessible(&apos;text1&apos;) is false
-PASS spanAccessible(&apos;text2&apos;) is true
+FAIL spanAccessible(&apos;text2&apos;) should be true. Was false.
 PASS successfullyParsed is true
 
 TEST COMPLETE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182675</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 05:42:35 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 156465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182696</commentid>
    <comment_count>34</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-11 07:28:58 -0700</bug_when>
    <thetext>I rolled this out because it wasn&apos;t clear to me what went wrong; Said, any chance it&apos;s something easy to address?

Worth mentioning that this did unexpectedly fix approximately 10 broken tests on GTK (which are now broken again after the rollout).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182783</commentid>
    <comment_count>35</comment_count>
      <attachid>276165</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-11 12:28:23 -0700</bug_when>
    <thetext>Created attachment 276165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182789</commentid>
    <comment_count>36</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-11 12:36:55 -0700</bug_when>
    <thetext>The mistake I did was to access ImageDecoder::m_frameBufferCache directly to get the ImageFrame. In the original code, ImageDecoder::frameBufferAtIndex() was used instead which has the side effect of doing the decoding if it was not done.

The fix is to use frameBufferAtIndex() to get the ImageFrame in ImageDecoder::frameIsCompleteAtIndex(), ImageDecoder::frameDurationAtIndex() and ImageDecoder::createFrameImageAtIndex(). This is the same as we used to do in ImageSource::frameIsCompleteAtIndex(), ImageSource::frameDurationAtIndex() and ImageSource::createFrameImageAtIndex() for non CG code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182792</commentid>
    <comment_count>37</comment_count>
      <attachid>276166</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-11 12:48:06 -0700</bug_when>
    <thetext>Created attachment 276166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182826</commentid>
    <comment_count>38</comment_count>
      <attachid>276166</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 14:33:13 -0700</bug_when>
    <thetext>Comment on attachment 276166
Patch

Clearing flags on attachment: 276166

Committed r199312: &lt;http://trac.webkit.org/changeset/199312&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182827</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 14:33:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182888</commentid>
    <comment_count>40</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-11 17:09:08 -0700</bug_when>
    <thetext>GTK bot is happy :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274014</attachid>
            <date>2016-03-14 13:37:14 -0700</date>
            <delta_ts>2016-03-14 14:01:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160314133703.patch</filename>
            <type>text/plain</type>
            <size>143141</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjOThmYzYxZmI4ZmUx
ZTAxYTY5MWNjNzg0OTM0NmU1YTkwNzI1MC4uMjYyNDNkZDBlYzRlMzY5MGRlNzkwZjlmMjFkZDMx
ZGE4MmJmYzZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxNi0wMy0xNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaXMgbm90IGZvciByZXZpZXcuIEl0IGlzIG9ubHkgZm9yIEVXUy4gSXQgY29u
dGFpbnMgdGhlIGZpeCBvZgorICAgICAgICB3ZWJraXQgYnVncyAxNTU0MTIsIDE1NTQyMiwgMTU1
NDQ0IGFuZCAxNTU0NTYuIEEgc2VwYXJhdGUgcGF0Y2ggd2lsbCBiZQorICAgICAgICBwb3N0ZWQg
Zm9yIHJldmlldyBvbmNlIHRoaXMgY29tYmluZWQgcGF0Y2ggcGFzc2VzIHRoZSBFV1MuCisgICAg
ICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtQXBwbGVX
aW4uY21ha2U6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZv
cm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxh
dGZvcm1XaW5DYWlyby5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlcik6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpo
YXZlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRl
c3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJv
eU1ldGFkYXRhQW5kTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNo
ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRhdGVTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmlzU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
bWF5RmlsbFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpz
b2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkdW1wKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVE
YXRhOjp+RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
Y29uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlOjpzb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+
SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5zdXJl
RGVjb2RlcklzQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJz
YW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpm
cmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpm
cmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lRHVy
YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpvcmllbnRhdGlv
bkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjppbml0aWFsaXplZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjptYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
ZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxpbmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3Ip
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0
b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFw
SW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFt
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6ZGV0ZXJtaW5lTWluaW11bVN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFt
ZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3Ip
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZy
YW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW1hZ2VT
b3VyY2VPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlU291cmNlT3B0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWRCdWZmZXJSZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
SW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c3Vic2FtcGxp
bmdMZXZlbEZvclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Ynl0ZXNE
ZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Ojppc1NpemVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmdldEhvdFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjp+SW1hZ2VEZWNv
ZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RF
ZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29u
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6SWNvbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdJbWFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisK
KzIwMTYtMDMtMTQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4K
KworICAgICAgICBSZW5hbWUgRnJhbWVEYXRhIHRvIEltYWdlRnJhbWVEYXRhIGFuZCBtb3ZlIGl0
IHRvIGEgc2VwYXJhdGUgZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1NDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIHBsYW4gaXMgdG8gaGF2ZSBjYWNoaW5nIHRoZSBJbWFnZUZyYW1lRGF0
YSBiZSBkb25lIGJ5IHRoZSBJbWFnZVNvdXJjZS4KKyAgICAgICAgU28gbW92ZSB0aGUgSW1hZ2VG
cmFtZURhdGEgdG8gYSBzZXBhcmF0ZSBmaWxlIHNvIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5Cisg
ICAgICAgIEltYWdlU291cmNlIGFuZCBCaXRtYXBJbWFnZS4gQWxzbyBkbyB0aGUgZm9sbG93aW5n
IGNsZWFudXA6CisgICAgICAgIDEuIENhbGN1bGF0ZSB0aGUgaW1hZ2Ugc29saWRDb2xvcigpIGlu
IHRoZSBJbWFnZUZyYW1lRGF0YSB3aGVuIGl0IGlzIG5lZWRlZC4KKyAgICAgICAgMi4gSGF2ZSBh
IHNpbmdsZSBmdW5jdGlvbiBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkuCisgICAg
ICAgIDMuIEdldCByaWQgb2YgQml0bWFwSW1hZ2U6Om1faGFzVW5pZm9ybUZyYW1lU2l6ZSBzaW5j
ZSBpdCBpcyBub3QgdXNlZC4KKyAgICAgICAgNC4gUmVwbGFjZSBCaXRtYXBJbWFnZSBtX2lzU29s
aWRDb2xvciBhbmQgbV9jaGVja2VkRm9yU29saWRDb2xvciBieSBhIHRyaXN0YXRlIAorICAgICAg
ICAgICBtZW1iZXIgbmFtZWQgbV9zb2xpZENvbG9yVmFsdWUuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0
cm95TWV0YWRhdGFBbmROb3RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNh
Y2hlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnVwZGF0ZVNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjppc1NvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6Om1heUZpbGxXaXRoU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6c29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHVtcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lRGF0YTo6fkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzb2xpZENvbG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZURhdGEuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OkltYWdlRnJh
bWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c29saWRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRldGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVEYXRhOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Y2hlY2tGb3JTb2xpZENvbG9yKTogRGVsZXRlZC4KKworMjAxNi0wMy0xMyAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENyZWF0ZSBhIENHIElt
YWdlRGVjb2RlciBjbGFzcyBpbnN0ZWFkIG9mIGRlZmluaW5nIGl0IGFzIENHSW1hZ2VTb3VyY2VS
ZWYgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IHRoZSBpbWFnZSBkZWNvZGluZyBjb2RlIGZyb20gSW1hZ2VTb3VyY2VDRy5jcHAgb3V0IHRvIGEg
bmV3IGNsYXNzIG5hbWVkCisgICAgICAgIEltYWdlRGVjb2Rlci4gVGhlIHB1cnBvc2Ugb2YgdGhp
cyBzcGxpdCBpcyB0byBoYXZlIHRoZSBDRyBJbWFnZVNvdXJjZSBzaW1pbGFyCisgICAgICAgIHRv
IHRoZSBub25lIENHIEltYWdlU291cmNlIHdoZXJlIHRoZXJlIGlzIGEgc2VwYXJhdGUgY2xhc3Mg
Zm9yIGRlY29kaW5nLiBUaGUKKyAgICAgICAgcGxhbiBpcyB0byBtZXJnZSB0aGUgSW1hZ2VTb3Vy
Y2UuY3BwIGFuZCBJbWFnZVNvdXJjZUNHLmNwcCBpbiBvbmUgZmlsZSBzbworICAgICAgICBkZWNp
ZGluZyB3aGV0aGVyIHRoZSBkZWNvZGluZyBzaG91bGQgaGFwcGVuIHN5bmNocm9ub3VzbHkgb3Ig
YXN5bmNocm9ub3VzbHkKKyAgICAgICAgY2FuIGhhcHBlbiBpbiBvbmUgcGxhY2UgYW5kIHRoZSBj
YWNoaW5nIG9mIHRoZSBmcmFtZXMgY2FuIGJlIGhhbmRsZWQgYnkgdGhlCisgICAgICAgIEltYWdl
U291cmNlIGFzIHdlbGwuCisKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAg
ICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmltYWdlU2l6ZUZvclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6dXBkYXRlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aW5pdGlh
bGl6ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjppbWFnZVNvdXJjZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0
Qnl0ZXNBdFBvc2l0aW9uKTsKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlclJlbGVhc2Up
OworICAgICAgICAoV2ViQ29yZTo6b3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpyZXBldGl0
aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpnZXRIb3RTcG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0Ny
ZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVw
ZXRpdGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyUmVsZWFzZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmltYWdlU291cmNlT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6aW5pdGlhbGl6ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3Jp
ZW50YXRpb25Gcm9tUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXRlcm1pbmVNaW5p
bXVtU3Vic2FtcGxpbmdMZXZlbCk6CisKKzIwMTYtMDMtMTMgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBDaGFuZ2UgTmF0aXZlSW1hZ2VQdHIg
Zm9yIENHIHRvIGJlIFJldGFpblB0cjxDR0ltYWdlUmVmPgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2aW5nIE5hdGl2ZUltYWdlUHRyIGFzIGEgcmF3
IHBvaW50ZXIgbWFrZXMgbWFuYWdpbmcgdGhlIGxpZmUgY3ljbGUgb2YKKyAgICAgICAgdGhlIENH
SW1hZ2VSZWYgaGFyZC4gQSBsb3Qgb2Ygd29ya3Mgd2FzIGRvbmUgdG8gbWFrZSBzdXJlIHRoZSBD
RyBwb2ludGVyCisgICAgICAgIGlzIG1haW50YWluZWQgY29ycmVjdGx5LiBJdCB3YXMgYWxzbyBu
b3QgcG9zc2libGUgdG8gbW92ZSBhIEZyYW1lRGF0YSBzaW5jZQorICAgICAgICBjYWxsaW5nIHRo
ZSBkZXN0cnVjdG9yIHdhcyByZWxlYXNpbmcgdGhlIENHSW1hZ2VSZWYuCisKKyAgICAgICAgSSBh
bSBnb2luZyB0byBmb2xsb3cgdGhpcyBuYW1pbmcgY29udmVudGlvbjoKKyAgICAgICAgMS4gQW4g
SW1hZ2Ugb2JqZWN0IGNhbiBoYXZlIG9uZSBvciBtb3JlIEZyYW1lRGF0YS4gQSBGcmFtZURhdGEg
Y2FuIGJlIG5hbWVkCisgICAgICAgICAgIGZvciBzaG9ydG5lc3MgYXMgImZyYW1lIiwgIm1fZnJh
bWVzIiwgZXRjLgorICAgICAgICAyLiBBIEZyYW1lRGF0YSBjYW4gaGF2ZSB6ZXJvIG9yIG9uZSBO
YXRpdmVJbWFnZVB0ci4gQSBOYXRpdmVJbWFnZVB0ciBjYW4KKyAgICAgICAgICAgYmUgbmFtZWQg
YXMgImltYWdlIiwgIm1faW1hZ2UiLCBldGMuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9D
YWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OkZy
YW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CaXRtYXBJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0VElGRlJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKwogMjAxNi0wMy0xMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtGb3JtczogZm9jdXNdIGZvY3VzIHJpbmdzIGFyb3VuZCB0ZXh0IGZpZWxk
cyBkbyBub3QgZm9sbG93IGNvbnRvdXIgKGJvcmRlci1yYWRpdXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDZkYzU4YjI3OGQ4YzBhYzAzZTk3MDQyMWUxMWU0MmI5NTlhNjg2ZDYuLmU4ODc5MjAz
NmI3YzNkNjhlMjMyNzViOGVlZTkyM2YwNmVjMmRiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yMjE4LDYgKzIyMTgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvSVNPVlRUQ3VlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRnJhbWVEYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRp
b24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QXBwbGVXaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmlu
ZGV4IGU1MjA5Y2IyMGNmMDMzODdhMjUyNjQzZGY0ZTBiMjE1MTQ5MjA0ZjcuLjdiMzY3YTczYWM5
ZTE1YmQ5NWM4OWM5N2EzNmEwZjAyNWY3MjgwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBs
ZVdpbi5jbWFrZQpAQCAtNzEsNiArNzEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbnRQb2ludENHLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlY2UyYzUz
MDkxYTU2Y2Q5MzMwNmU1YmFiZmE0ODg2NjM0ZjI1OWY5Li5hZDdjN2Y0Y2MyNzY2NGU1Y2U1YjUx
ODY4YWM5NzQyYTc4ZDk5YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTIzLDYg
KzEyMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dsaWIv
S2V5ZWREZWNvZGVyR2xpYi5jcHAKICAgICBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybURpc3BsYXkuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGU2Yzg3YjJkN2U5NDFlMzQ5YTY3YWE2YzY4
M2FhMzRkYzYwYWRjMWYuLjk0OTg0OTUzZDM5YThiNWU3ZWJiMGNlOWI1MjIyMmY4NTJjM2YyZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05NCw2ICs5NCw3IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4MzViOWFhMjI0YWE5ZWFhZWUwNDYy
MzM5N2U5OTAxNmU5ZjdlZWJmLi5kYWNkYTU2OTFhNjVjNjY1NjA2M2E0YzA3MDZjMTBhMGVmYjYy
MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDAwLDYgKzQwMCw3IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1t
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IDM4YTAyOGM1Yjg5MWJjYjFmZGRlMmRkZWIyYTMxYmY4
MTNkNTM4Y2QuLjI0OGM4OWEwYjA1N2QxZTVkNmU0NDFlZWJjNGMzOGZmODI0ZjIyMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMzksNiArMzksNyBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAzMDdiYTM4ZmYwZjNhNGM0
NzFiOWQ0MjkxNDYxNjJhOTU5ZWU3NjYuLjlhY2E3MDkwZjQ3NjlhMjkwN2RiNzRhN2Y0YzYzNzY2
MGNhOGUzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIyOTEsNiArMjI5MSwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0
Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAv
KiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyog
UXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87
IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTU1OUJCODc5MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURl
Y29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTU5QkI4NzcxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5jcHAgKi87IH07CisJCTU1
OUJCODdBMUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUJCODc4MUM5NjQ2NTgwMDI0MTNDRCAv
KiBJbWFnZURlY29kZXIuaCAqLzsgfTsKKwkJNTU5QkI4N0QxQzk2QjJDODAwMjQxM0NEIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1OUJCODdCMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1OUJCODdFMUM5NkIyQzkwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5QkI4N0MxQzk2QjJD
ODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4MDM3MTYxMUE2NkYwMEEwMEJB
RjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovOyB9
OwpAQCAtNTAwMiw3ICs1MDA2LDYgQEAKIAkJQjI3NTM1NUEwQjA1MzgxNDAwMkNFNjRGIC8qIEZs
b2F0UmVjdENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi87IH07CiAJ
CUIyNzUzNTVCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyRDBCMDUzODE0MDAyQ0U2
NEYgLyogRmxvYXRTaXplQ0cuY3BwICovOyB9OwogCQlCMjc1MzU1RTBCMDUzODE0MDAyQ0U2NEYg
LyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi87IH07Ci0JCUIy
NzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjAwQjA1MzgxNDAwMkNFNjRG
IC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwICovOyB9
OwogCQlCMjc1MzU2MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMzMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2MjBCMDUzODE0MDAyQ0U2NEYg
LyogSW50U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwICovOyB9OwpA
QCAtOTg3NSw2ICs5ODc4LDEwIEBACiAJCTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0
aW5nc01hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5nc01h
Y3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTU1OUJCODc3MUM5
NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW1hZ2VEZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTU5QkI4NzgxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTU5QkI4N0IxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVEYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU5QkI4N0MxQzk2QjJDODAwMjQx
M0NEIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1RDQwOEY3
MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVk
Q2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxhdGVk
Q2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5MDUsNyArMTI5MTIs
NiBAQAogCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0UmVjdENHLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNp
emVDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMwMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI3NTM1MzEw
QjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlU291cmNlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UG9pbnRDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRS
ZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFJlY3RD
Ry5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTM0MEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRTaXplQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEludFNpemVDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTgzMyw3
ICsyMTgzOSw4IEBACiAJCQkJMjI5MkIyN0IxMzU2NjY5NDAwQ0YxMUVGIC8qIEltYWdlQnVmZmVy
RGF0YUNHLmNwcCAqLywKIAkJCQkyMkJEOUY4MDEzNTM2NEZFMDA5QkQxMDIgLyogSW1hZ2VCdWZm
ZXJEYXRhQ0cuaCAqLywKIAkJCQlCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5j
cHAgKi8sCi0JCQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3Bw
ICovLAorCQkJCTU1OUJCODc3MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuY3BwICov
LAorCQkJCTU1OUJCODc4MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuaCAqLywKIAkJ
CQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovLAogCQkJCTRC
MzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovLAogCQkJCUIy
NzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLywKQEAgLTIxOTk1LDYg
KzIyMDAyLDggQEAKIAkJCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VCdWZmZXIu
Y3BwICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlci5oICov
LAogCQkJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCAqLywK
KwkJCQk1NTlCQjg3QjFDOTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuY3BwICovLAor
CQkJCTU1OUJCODdDMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5oICovLAogCQkJ
CUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8sCiAJCQkJQTg3
NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovLAogCQkJCUE4
NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCkBAIC0yNTQ3
NSw2ICsyNTQ4NCw3IEBACiAJCQkJOTdCQzZBMjQxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
QXV0aG9yaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMzcxQTIxNjdDMTFENDAwRURCNzUy
IC8qIERhdGFiYXNlQmFzaWNUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjUxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTU1
OUJCODdFMUM5NkIyQzkwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTdCQzZBMjkxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlRGV0YWls
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUwOURCNDkxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFi
YXNlRXJyb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjY4MTIsNiArMjY4MjIsNyBAQAogCQkJCUZE
QTE1RUNFMTJCMDNGNjEwMDNBNTgzQSAvKiBKU1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTlGQTM3RUZCMTE3MkZEQTYwMEM0Q0Q1NSAvKiBKU1NjcmlwdFByb2ZpbGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlGQTM3RUZEMTE3MkZEQTYwMEM0Q0Q1NSAvKiBKU1Njcmlw
dFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTlCQjg3QTFDOTY0NjU4MDAyNDEz
Q0QgLyogSW1hZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUQwNkFEMTFDNzc3NTQ4
MDBGREZBRjEgLyogSlNTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5QkRBNjREODFCOTc1Q0YyMDA5QzQzODcgLyogSlNTaGFkb3dSb290LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDlERTE3QjE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjkyMDMsNiArMjkyMTQsNyBAQAogCQkJCUIyNzUzNTY2MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNGMzMyNDBG
MkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUJBNzZD
OTExRDIwRTQ3MDA0QzIwMUMgLyogQ29sb3JEYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU1
OUJCODc5MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMyOTkzNUQxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyNzUzNTc3MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTQzRURENjdFMUI0ODVEQkYwMDY0MEU3NSAvKiBDb21iaW5lZEZp
bHRlcnNBbHBoYWJldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NTk4LDYgKzI5NjEwLDcgQEAK
IAkJCQk4NTNCRjREQzBBQkI2QjU1MDA4NjQ3QkIgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1NTI2QzM4MEFCMEExN0UwMDAzMDJFQSAvKiBET01Ob2RlSXRlcmF0b3IubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4NUFDQUE4RTBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3Qu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk1NTlCQjg3RDFDOTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VG
cmFtZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU2QzhBRTUwQTkxMjY0OTAwNUM2ODdC
IC8qIERPTU9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QzdGNUQxMEFBRkI4RDkwMDQw
MTRERCAvKiBET01PdmVyZmxvd0V2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyODRCRDUx
MDQ0QTAxRTAwRUFFQjUyIC8qIERPTVBhZ2VUcmFuc2l0aW9uRXZlbnQubW0gaW4gU291cmNlcyAq
LywKQEAgLTMwMDYwLDcgKzMwMDczLDYgQEAKIAkJCQkyRDVBNTkyRjE1MjUyNTIzMDAzNkVFNTEg
LyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTFBMkY0MTE3RDdE
NURFMDA3MjUxN0EgLyogSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNEIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291
cmNlQ0dNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExNzBFNkUxREE3MDBCRjYwODgg
LyogSW1wbGljaXRBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU5NjFDNTQxOEFE
MzM4NTAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBmMzc4NzUy
MWRkZmZmNjgyYmQ4OGU2NDcyY2FmMDYyNWUzZjA0NTQ0Li45YTE0NzU3ODgzN2ZjZGUxMzEwZDFh
ZDEwNjIyYjdiYjcwNjg0YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBMYXlvdXRTaXplIENhY2hlZEltYWdlOjpp
bWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBmbG9hdAog
ICAgIGlmIChyZW5kZXJlciAmJiBpczxCaXRtYXBJbWFnZT4oKm1faW1hZ2UpKSB7CiAgICAgICAg
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHJlbmRl
cmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCByZW5kZXJlci0+c3R5bGUoKS5p
bWFnZU9yaWVudGF0aW9uKCkpOwogICAgICAgICBpZiAob3JpZW50YXRpb25EZXNjcmlwdGlvbi5y
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAg
ICAgICAgICAgaW1hZ2VTaXplID0gTGF5b3V0U2l6ZShkb3duY2FzdDxCaXRtYXBJbWFnZT4oKm1f
aW1hZ2UpLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikp
OworICAgICAgICAgICAgaW1hZ2VTaXplID0gTGF5b3V0U2l6ZShkb3duY2FzdDxCaXRtYXBJbWFn
ZT4oKm1faW1hZ2UpLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSk7CiAgICAgfQogI2Vsc2UK
ICAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKSAmJiAocmVuZGVyZXIgJiYgcmVuZGVy
ZXItPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5k
ZXggOTk5NDY1ZWEzOTA2OTdjYmUwMGZlNmZhODgzOGMxMzhlNTQ0N2ExNy4uODQ2YzBkYzkzODRl
NzVkYmEwODIwYzI4MGZiNjQxY2U4YTA4ZjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMjUsOCArMjI1LDYgQEAgYm9vbCBNZW1vcnlDYWNo
ZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3QKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBD
YWNoZWRJbWFnZTo6TWFudWFsbHlDYWNoZWQsIHNlc3Npb25JRCk7CiAKLSAgICAvLyBBY3R1YWwg
cmVsZWFzZSBvZiB0aGUgQ0dJbWFnZVJlZiBpcyBkb25lIGluIEJpdG1hcEltYWdlLgotICAgIENG
UmV0YWluKGltYWdlKTsKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCZkdW1teUNhY2hlZElt
YWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFn
ZS0+ZGVjb2RlZFNpemUoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBm
YWYwZjg2OTYyYzNmYjY1Nzc3NDViZmFmNzViNGM4NGQ4MGNjMDYwLi5jYjViMWM5YTQxODE2OGVm
N2ZlNzMxOWVjOGMxMjM2NjRhZWRjZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC00Nyw5ICs0Nyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2Vy
dmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xl
dmVsKDApCi0gICAgLCBtX2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkKLSAgICAsIG1f
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRGcmFt
ZSgwKQogICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3Jl
cGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQpAQCAtNjYsMTMgKzYzLDEwIEBAIEJpdG1hcElt
YWdlOjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICNlbHNlCiAgICAgLCBt
X2FsbG93U3Vic2FtcGxpbmcoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1faXNTb2xpZENvbG9yKGZh
bHNlKQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkKICAgICAsIG1fYW5pbWF0
aW9uRmluaXNoZWQoZmFsc2UpCiAgICAgLCBtX2FsbERhdGFSZWNlaXZlZChmYWxzZSkKICAgICAs
IG1faGF2ZVNpemUoZmFsc2UpCiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgLCBt
X2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFsc2Up
CiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAoZmFsc2UpCiB7CkBAIC05
Niw3ICs5MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIoZG91YmxlIGRlbGF5KQog
ICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0KIAotYm9vbCBCaXRtYXBJ
bWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitib29sIEJpdG1hcEltYWdlOjpo
YXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChpbmRleCA+PSBm
cmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNCw3ICs5OCw3IEBAIGJv
b2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChp
bmRleCA+PSBtX2ZyYW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhd
Lm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QKQEAgLTEyNSw3ICsxMTksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVj
b2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9y
IHRoZSBmcmFtZWJ1ZmZlciBkYXRhKSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAg
ICAvLyB0aGUgbWV0YWRhdGEuCiAgICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1l
c1tpXS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkp
CisgICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVN
ZXRhZGF0YSkpCiAgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOwog
ICAgIH0KIApAQCAtMTU4LDggKzE1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNv
ZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKIAogdm9pZCBCaXRtYXBJbWFnZTo6
ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVkIGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVh
cmVkU291cmNlIGNsZWFyZWRTb3VyY2UpCiB7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsK
LSAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gZmFsc2U7CisgICAgbV9zb2xpZENvbG9yVmFs
dWUgPSBUcmlTdGF0ZTo6VW5jaGVja2VkOwogICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsK
IAogICAgIEFTU0VSVChtX2RlY29kZWRTaXplID49IGZyYW1lQnl0ZXNDbGVhcmVkKTsKQEAgLTE4
MywxMSArMTc2LDkgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMu
c2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAK
LSAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAg
ICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChp
bmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZy
YW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7CisgICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwogICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7
CiAgICAgfQogCiAgICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3NvdXJjZS5v
cmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwpAQCAtMjAwLDExICsxOTEsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluZ0xldmVsLCBJbQogICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2Uu
ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1l
Qnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCk7CiAKLSAgICBjb25zdCBJbnRTaXplIGZyYW1lU2l6ZShpbmRleCA/IG1fc291cmNlLmZyYW1l
U2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbV9zaXplKTsKLSAgICBpZiAo
IXN1YnNhbXBsaW5nTGV2ZWwgJiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKLSAgICAgICAgbV9oYXNV
bmlmb3JtRnJhbWVTaXplID0gZmFsc2U7Ci0KLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWUpIHsKKyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKICAgICAgICAgaW50IGRl
bHRhQnl0ZXMgPSBzYWZlQ2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOwog
ICAgICAgICBtX2RlY29kZWRTaXplICs9IGRlbHRhQnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxs
eS1kZWNvZGVkIGZyYW1lIHdpbGwgc3Vic3VtZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1
c2VkCkBAIC0yMzYsMTYgKzIyMywxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWREZWNvZGVQcm9w
ZXJ0aWVzKCkgY29uc3QKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5n
ZWQodGhpcywgZGVsdGFCeXRlcyk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZVNpemUo
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAordm9pZCBCaXRt
YXBJbWFnZTo6dXBkYXRlU2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NpemVBdmFpbGFibGUg
fHwgbV9oYXZlU2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zaXplID0gbV9zb3VyY2Uu
c2l6ZShkZXNjcmlwdGlvbik7Ci0gICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9z
b3VyY2Uuc2l6ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50
YXRpb24sIGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSkpOwotCi0gICAgbV9pbWFnZU9y
aWVudGF0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLmltYWdlT3JpZW50
YXRpb24oKSk7Ci0gICAgbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAg
ICBtX3NpemUgPSBtX3NvdXJjZS5zaXplKCk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uID0gbV9zb3VyY2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwogCiAgICAgbV9oYXZl
U2l6ZSA9IHRydWU7CiAKQEAgLTI1OSw5ICsyNDMsOSBAQCBGbG9hdFNpemUgQml0bWFwSW1hZ2U6
OnNpemUoKSBjb25zdAogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLUludFNpemUgQml0bWFwSW1h
Z2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
IGRlc2NyaXB0aW9uKSBjb25zdAorSW50U2l6ZSBCaXRtYXBJbWFnZTo6c2l6ZVJlc3BlY3RpbmdP
cmllbnRhdGlvbigpIGNvbnN0CiB7Ci0gICAgdXBkYXRlU2l6ZShkZXNjcmlwdGlvbik7CisgICAg
dXBkYXRlU2l6ZSgpOwogICAgIHJldHVybiBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CiB9
CiAKQEAgLTMwMSw3ICsyODUsNyBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3Mp
IGZyYW1lcyEKICAgICAgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJh
bWVCeXRlczsKICAgICAgICAgaWYgKG1fZnJhbWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2Zy
YW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAo
bV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBmcmFtZUJ5dGVzIDogMCk7CisgICAgICAgICAgICBm
cmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmc6
OkNhY2hlTm9uZSkgPyBmcmFtZUJ5dGVzIDogMCk7CiAgICAgfQogICAgIGRlc3Ryb3lNZXRhZGF0
YUFuZE5vdGlmeShmcmFtZUJ5dGVzQ2xlYXJlZCwgQ2xlYXJlZFNvdXJjZTo6Tm8pOwogI2Vsc2UK
QEAgLTMwOSw3ICsyOTMsNyBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICBpbnQgZGVsdGFCeXRlcyA9IDA7CiAgICAgaWYgKCFtX2ZyYW1l
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6
ZSgpIC0gMV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbbV9mcmFtZXMuc2l6
ZSgpIC0gMV0uY2xlYXIodHJ1ZSkpIHsKKyAgICAgICAgaWYgKG1fZnJhbWVzW21fZnJhbWVzLnNp
emUoKSAtIDFdLmNsZWFyKEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpKSB7CiAgICAgICAg
ICAgICBkZWx0YUJ5dGVzICs9IGJ5dGVzOwogICAgICAgICAgICAgZGVsdGFCeXRlcyArPSBtX2Rl
Y29kZWRQcm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgICAgIG1fZGVjb2RlZFByb3BlcnRpZXNTaXpl
ID0gMDsKQEAgLTM0MCw3ICszMjQsNiBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChi
b29sIGFsbERhdGFSZWNlaXZlZCkKICNlbmRpZgogCiAgICAgbV9oYXZlRnJhbWVDb3VudCA9IGZh
bHNlOwotICAgIG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA9IHRydWU7CiAgICAgcmV0dXJuIGlzU2l6
ZUF2YWlsYWJsZSgpOwogfQogCkBAIC0zNzksMjYgKzM2MiwyNiBAQCBib29sIEJpdG1hcEltYWdl
OjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJh
bWVDYWNoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZy
YW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAgICAgICAgfHwgKGZyYW1lQ2FjaGlu
ZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRh
KSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVN
ZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKKyAgICAgICAgfHwg
KGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSAmJiAhbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwg
MCwgZnJhbWVDYWNoaW5nKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzTmF0aXZlSW1h
Z2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNl
bnRhdGlvblNjYWxlSGludCkKK1Bhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCiB7
CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSBzdGQ6Om1pbihtX3Nv
dXJjZS5zdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUocHJlc2VudGF0aW9uU2NhbGVIaW50KSwgbV9t
aW5pbXVtU3Vic2FtcGxpbmdMZXZlbCk7CisgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsID0gbV9zb3VyY2Uuc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKHByZXNlbnRhdGlvblNj
YWxlSGludCwgbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiAKICAgICAvLyBXZSBtYXkgaGF2
ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEgaGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGlj
aCBjYXNlIHdlIG5lZWQgdG8KICAgICAvLyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgot
ICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFt
ZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZl
bCkgeworICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxp
bmdMZXZlbCkgewogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQsIGJ1
dCBhdCB0b28gc21hbGwgYSBzaXplLCByZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KICAgICAg
ICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKLSAgICAg
ICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpOworICAgICAgICBtX2ZyYW1lc1tpbmRleF0u
Y2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSk7CiAgICAgICAgIGludmFsaWRhdGVQ
bGF0Zm9ybURhdGEoKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBzaXplQ2hhbmdlOwogICAg
ICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpAQCAtNDA2LDE1ICszODksMTUgQEAgUGFzc05hdGl2
ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBw
cmVzZW50YXRpb25TY2EKICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBm
cmFtZSB5ZXQsIGRvIHNvLgotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIGlmIChpbmRleCA+PSBtX2Zy
YW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQorICAgICAgICBjYWNoZUZy
YW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRh
ZGF0YUFuZEZyYW1lKTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAg
ICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6
OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJl
RnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJl
RnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXND
b21wbGV0ZTsKQEAgLTQyMiw3ICs0MDUsNyBAQCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIAogZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNo
ZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNo
ZWQoaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRhKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CkBAIC00MzAs
MTIgKzQxMywxMiBAQCBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90IGluZGV4KQogCiBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFt
ZSgpKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOwogfQog
CiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkp
CisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZzo6
Q2FjaGVNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fZnJhbWVz
W2luZGV4XS5tX2hhdmVNZXRhZGF0YSkKQEAgLTQ1MSw3ICs0MzQsNyBAQCBib29sIEJpdG1hcElt
YWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogCiBJbWFnZU9yaWVudGF0aW9uIEJp
dG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAg
aWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAg
aWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVN
ZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKIAogICAg
IGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpCkBAIC02NzgsMTkgKzY2MSw0OSBA
QCBib29sIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oQW5pbWF0aW9uQWR2
YW5jZW1lbnQgYWR2YW5jZW1lbnQpCiAKICAgICByZXR1cm4gYWR2YW5jZWRBbmltYXRpb247CiB9
CisgICAgCit2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQoreworICAgIG1f
c29saWRDb2xvclZhbHVlID0gVHJpU3RhdGU6Ok5vOworICAgIAorICAgIGlmIChmcmFtZUNvdW50
KCkgPiAxKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFoYXZlRnJhbWVJbWFnZUF0
SW5kZXgoMCkpIHsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJ
bmRleCgwLCAwKTsKKyAgICAgICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0
KCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGlmICghZW5z
dXJlRnJhbWVJc0NhY2hlZCgwKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgaWYgKCFtX2ZyYW1lcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAo
T3B0aW9uYWw8Q29sb3I+IGNvbG9yID0gbV9mcmFtZXNbMF0uc29saWRDb2xvcigpKSB7CisgICAg
ICAgIG1fc29saWRDb2xvciA9IGNvbG9yLnZhbHVlKCk7CisgICAgICAgIG1fc29saWRDb2xvclZh
bHVlID0gVHJpU3RhdGU6OlllczsKKyAgICB9Cit9CiAKLWJvb2wgQml0bWFwSW1hZ2U6Om1heUZp
bGxXaXRoU29saWRDb2xvcigpCitib29sIEJpdG1hcEltYWdlOjppc1NvbGlkQ29sb3IoKQogewot
ICAgIGlmICghbV9jaGVja2VkRm9yU29saWRDb2xvciAmJiBmcmFtZUNvdW50KCkgPiAwKSB7Cisg
ICAgaWYgKG1fc29saWRDb2xvclZhbHVlID09IFRyaVN0YXRlOjpVbmNoZWNrZWQgJiYgZnJhbWVD
b3VudCgpID4gMCkgewogICAgICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKLSAgICAgICAgQVNT
RVJUKG1fY2hlY2tlZEZvclNvbGlkQ29sb3IpOworICAgICAgICBBU1NFUlQobV9zb2xpZENvbG9y
VmFsdWUgIT0gVHJpU3RhdGU6OlVuY2hlY2tlZCk7CiAgICAgfQotICAgIHJldHVybiBtX2lzU29s
aWRDb2xvciAmJiAhbV9jdXJyZW50RnJhbWU7CisgICAgcmV0dXJuIG1fc29saWRDb2xvclZhbHVl
ID09IFRyaVN0YXRlOjpZZXM7CiB9Ci0KLUNvbG9yIEJpdG1hcEltYWdlOjpzb2xpZENvbG9yKCkg
Y29uc3QKKyAgICAKK2Jvb2wgQml0bWFwSW1hZ2U6Om1heUZpbGxXaXRoU29saWRDb2xvcigpCit7
CisgICAgcmV0dXJuIGlzU29saWRDb2xvcigpICYmICFtX2N1cnJlbnRGcmFtZTsKK30KKyAgICAK
K0NvbG9yIEJpdG1hcEltYWdlOjpzb2xpZENvbG9yKCkKIHsKLSAgICByZXR1cm4gbV9zb2xpZENv
bG9yOworICAgIHJldHVybiBpc1NvbGlkQ29sb3IoKSA/IG1fc29saWRDb2xvciA6IENvbG9yKCk7
CiB9CiAgICAgCiBib29sIEJpdG1hcEltYWdlOjpjYW5BbmltYXRlKCkKQEAgLTcxMiwxMSArNzI1
LDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICAK
ICAgICBpZiAoYWxsb3dTdWJzYW1wbGluZygpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImFs
bG93LXN1YnNhbXBsaW5nIiwgYWxsb3dTdWJzYW1wbGluZygpKTsKLSAgICBpZiAobV9pc1NvbGlk
Q29sb3IpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic29saWQtY29sb3IiLCBtX2lzU29saWRD
b2xvcik7Ci0gICAgCi0gICAgaWYgKG1faW1hZ2VPcmllbnRhdGlvbiAhPSBPcmlnaW5Ub3BMZWZ0
KQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm9yaWVudGF0aW9uIiwgbV9pbWFnZU9yaWVudGF0
aW9uKTsKKyAgICBpZiAobV9zb2xpZENvbG9yVmFsdWUgPT0gVHJpU3RhdGU6OlllcykKKyAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJzb2xpZC1jb2xvciIsIG1fc29saWRDb2xvcik7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4
IDc0OTNjNmE0YmZiODYzZDk3NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQuLmQ5OTdlZGQ1MmUyNjNi
NTVmYzJkMDgxOWE2YzczMjE2ODIzYjkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgi
CiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgpAQCAtNDcsNjEgKzQ4LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg
SEJJVE1BUF9fICpIQklUTUFQOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBz
dHJ1Y3QgRnJhbWVEYXRhOwotfQotCi1uYW1lc3BhY2UgV1RGIHsKLSAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6RnJhbWVEYXRhPiA6IHB1YmxpYyBTaW1wbGVDbGFz
c1ZlY3RvclRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkluaXRpYWxpemVX
aXRoTWVtc2V0ID0gZmFsc2U7IC8vIE5vdCBhbGwgRnJhbWVEYXRhIG1lbWJlcnMgaW5pdGlhbGl6
ZSB0byAwLgotICAgIH07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGltZXI7
CiAKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
Ly8gRnJhbWVEYXRhIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLQotc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRnJhbWVEYXRhKTsKLXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1f
ZnJhbWUoMCkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9u
KQotICAgICAgICAsIG1fc3Vic2FtcGxpbmdMZXZlbCgwKQotICAgICAgICAsIG1fZHVyYXRpb24o
MCkKLSAgICAgICAgLCBtX2hhdmVNZXRhZGF0YShmYWxzZSkKLSAgICAgICAgLCBtX2lzQ29tcGxl
dGUoZmFsc2UpCi0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKSAKLSAgICAgICAgLCBtX2ZyYW1l
Qnl0ZXMoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZyYW1lRGF0YSgpCi0gICAgeyAKLSAgICAg
ICAgY2xlYXIodHJ1ZSk7Ci0gICAgfQotCi0gICAgLy8gQ2xlYXIgdGhlIGNhY2hlZCBpbWFnZSBk
YXRhIG9uIHRoZSBmcmFtZSwgYW5kIChvcHRpb25hbGx5KSB0aGUgbWV0YWRhdGEuCi0gICAgLy8g
UmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4KLSAg
ICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7Ci0KLSAgICBOYXRpdmVJbWFnZVB0ciBt
X2ZyYW1lOwotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKLSAgICBTdWJzYW1w
bGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbDsKLSAgICBmbG9hdCBtX2R1cmF0aW9uOwotICAg
IGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsKLSAg
ICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlczsKLX07Ci0K
LS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8v
IEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdl
IHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTI1LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gRmxvYXRTaXplIGR1ZSB0byBvdmVycmlkZS4KICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbihJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkgY29u
c3Q7CisgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7CiAKICAg
ICBib29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTg5LDcg
KzEzOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc0JpdG1hcEltYWdlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdm9pZCB1cGRhdGVTaXplKEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKSBj
b25zdDsKKyAgICB2b2lkIHVwZGF0ZVNpemUoKSBjb25zdDsKICAgICB2b2lkIGRldGVybWluZU1p
bmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTIxNCwxMCAr
MTYzLDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHNpemVfdCBmcmFtZUNvdW50KCk7CiAKLSAgICBQ
YXNzTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9u
U2NhbGVIaW50ID0gMSk7Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1l
QXRJbmRleChzaXplX3QpOworICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOworICAgIFBhc3NOYXRp
dmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCi0gICAg
Ym9vbCBoYXZlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90KTsKIAogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qp
OwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CkBAIC0yMjUsMTEgKzE3
NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChzaXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5l
dmVyIGFjY2Vzc2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hp
bmcgeyBDYWNoZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9p
ZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNh
Y2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gSW1hZ2VGcmFt
ZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CiAKICAgICAvLyBDYWxsZWQgYmVmb3Jl
IGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0gZm9yIGluZm8gd2l0aG91dCBkZWNvZGluZy4gUmV0
dXJucyBmYWxzZSBvbiBpbmRleCBvdXQgb2YgYm91bmRzLgotICAgIGJvb2wgZW5zdXJlRnJhbWVJ
c0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFu
ZEZyYW1lKTsKKyAgICBib29sIGVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFn
ZUZyYW1lQ2FjaGluZyA9IEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRhQW5kRnJhbWUp
OwogCiAgICAgLy8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ry
b3lBbGx8IGlzIHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZm
ZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0yODAsOCAr
MjI4LDkgQEAgcHJvdGVjdGVkOgogICAgIC8vIGNoYW5nZWQuCiAgICAgdm9pZCBjaGVja0ZvclNv
bGlkQ29sb3IoKTsKIAorICAgIGJvb2wgaXNTb2xpZENvbG9yKCk7CiAgICAgYm9vbCBtYXlGaWxs
V2l0aFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKLSAgICBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQ29sb3Igc29saWRDb2xvcigpIG92ZXJyaWRlOwogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgIGJvb2wgbm90U29saWRDb2xvcigpIG92ZXJyaWRlOwpAQCAtMjk3LDEz
ICsyNDYsMTAgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplOyAvLyBUaGUg
c2l6ZSB0byB1c2UgZm9yIHRoZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1c3QgYmUgdGhlIHNpemUg
b2YgdGhlIGZpcnN0IGltYWdlKS4KICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGlu
Z09yaWVudGF0aW9uOwogCi0gICAgbXV0YWJsZSBTdWJzYW1wbGluZ0xldmVsIG1fbWluaW11bVN1
YnNhbXBsaW5nTGV2ZWw7Ci0KLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1faW1hZ2VPcmllbnRhdGlv
biA6IDQ7IC8vIEltYWdlT3JpZW50YXRpb25FbnVtCi0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX3No
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIDogMTsgLy8gUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtCisgICAgbXV0YWJsZSBTdWJzYW1wbGluZ0xldmVsIG1fbWF4aW11bVN1YnNhbXBsaW5n
TGV2ZWwgeyAwIH07CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWU7IC8vIFRoZSBpbmRleCBv
ZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9yPEZyYW1lRGF0YSwg
MT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmlt
YXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCisg
ICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4gYXJyYXkgb2YgdGhl
IGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byByZWYgZnJhbWVzIHRv
IHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9m
cmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwg
YW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4gVGhpcyB3aWxsIGJlIGNBbmltYXRpb25Ob25l
IGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0aW9uLgpAQCAtMzMwLDE2
ICsyNzYsMTUgQEAgcHJpdmF0ZToKICAgICB1aW50MTZfdCBtX3Byb2dyZXNzaXZlTG9hZENodW5r
Q291bnQ7CiAjZW5kaWYKIAorICAgIGVudW0gY2xhc3MgVHJpU3RhdGUgeyBVbmNoZWNrZWQsIE5v
LCBZZXMgfTsKKyAgICBUcmlTdGF0ZSBtX3NvbGlkQ29sb3JWYWx1ZSB7IFRyaVN0YXRlOjpVbmNo
ZWNrZWQgfTsKKyAgICAKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyA6IDE7IC8vIFdoZXRo
ZXIgd2Ugc2hvdWxkIGF0dGVtcHQgc3Vic2FtcGxpbmcgaWYgdGhpcyBpbWFnZSBpcyB2ZXJ5IGxh
cmdlLgotICAgIGJvb2wgbV9pc1NvbGlkQ29sb3IgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBh
cmUgYSAxeDEgc29saWQgaW1hZ2UuCi0gICAgYm9vbCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yIDog
MTsgLy8gV2hldGhlciB3ZSd2ZSBjaGVja2VkIHRoZSBmcmFtZSBmb3Igc29saWQgY29sb3IuCi0K
ICAgICBib29sIG1fYW5pbWF0aW9uRmluaXNoZWQgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSd2
ZSBjb21wbGV0ZWQgdGhlIGVudGlyZSBhbmltYXRpb24uCiAKICAgICBib29sIG1fYWxsRGF0YVJl
Y2VpdmVkIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UndmUgcmVjZWl2ZWQgYWxsIG91ciBkYXRh
LgogICAgIG11dGFibGUgYm9vbCBtX2hhdmVTaXplIDogMTsgLy8gV2hldGhlciBvciBub3Qgb3Vy
IHxtX3NpemV8IG1lbWJlciB2YXJpYWJsZSBoYXMgdGhlIGZpbmFsIG92ZXJhbGwgaW1hZ2Ugc2l6
ZSB5ZXQuCiAgICAgYm9vbCBtX3NpemVBdmFpbGFibGUgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3
ZSBjYW4gb2J0YWluIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSBmcmFtZSB5ZXQgZnJvbSBJ
bWFnZUlPLgotICAgIG11dGFibGUgYm9vbCBtX2hhc1VuaWZvcm1GcmFtZVNpemUgOiAxOwogICAg
IG11dGFibGUgYm9vbCBtX2hhdmVGcmFtZUNvdW50IDogMTsKICAgICBib29sIG1fYW5pbWF0aW9u
RmluaXNoZWRXaGVuQ2F0Y2hpbmdVcCA6IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ljb24uaAppbmRleCBkOTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIzYTRiOWFlZjNmM2MxN2I3
Li4yOGMxMzdkMjliMTE4YTljZjFiNjE2MWVkZTRkZTQ5MWQwNDg4MzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC02OCw4ICs2OCw4IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCi0gICAgSWNvbihDR0ltYWdlUmVmKTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOworICAgIEljb24oTmF0aXZlSW1hZ2VQdHIp
OworICAgIE5hdGl2ZUltYWdlUHRyIG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAg
ICBJY29uKE5TSW1hZ2UqKTsKICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbV9uc0ltYWdlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNDFmZWYyYTJiMDMxNzBl
M2IwM2ZkNmM1MmEyZmRmMjgzZTU2Mjc1OC4uYjEyYzBjMWVlMmZmODE0MTQ1ZGFkMGEzNDZkMWM3
YTc3NGI2YTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBA
IC0xOTQsNyArMTk0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU3VwcG9ydGluZyB0aWxlZCBk
cmF3aW5nCiAgICAgdmlydHVhbCBib29sIG1heUZpbGxXaXRoU29saWRDb2xvcigpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4g
Q29sb3IoKTsgfQorICAgIHZpcnR1YWwgQ29sb3Igc29saWRDb2xvcigpIHsgcmV0dXJuIENvbG9y
KCk7IH0KICAgICAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVk
SW1hZ2VEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZURhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZjY4MjA4N2EzNmY1ZGEyOTZiMGQ4ZjRhY2Ew
M2NiOGY2MjcxODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgorCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0
YSgpCit7Cit9CisKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShJbWFnZURlY29kZXIm
IGRlY29kZXIsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAg
ICwgbV9zdWJzYW1wbGluZ0xldmVsKHN1YnNhbXBsaW5nTGV2ZWwpCisgICAgLCBtX2hhdmVNZXRh
ZGF0YSh0cnVlKQoreworI2lmIFVTRShDRykKKyAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5v
cmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOworICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1l
SGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICBtX2ZyYW1lQnl0ZXMgPSBkZWNvZGVyLmZyYW1l
Qnl0ZXNBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAKKyAgICBtX2FsbG93
U3Vic2FtcGxpbmcgPSBkZWNvZGVyLmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRl
eCk7CisgICAgCisgICAgbV9pc0NvbXBsZXRlID0gZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdElu
ZGV4KGluZGV4KTsKKyAgICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBjQW5pbWF0
aW9uTm9uZSkKKyAgICAgICAgbV9kdXJhdGlvbiA9IGRlY29kZXIuZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoaW5kZXgpOworI2Vsc2UKKyAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5vcmllbnRhdGlv
bigpOworICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4
KTsKKyAgICBtX2ZyYW1lQnl0ZXMgPSBkZWNvZGVyLmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KTsK
KyAgICAKKyAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBkZWNvZGVyLmZyYW1lQnVmZmVyQXRJbmRl
eChpbmRleCk7CisgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1cygpICE9IEltYWdlRnJh
bWU6OkZyYW1lRW1wdHkpIHsKKyAgICAgICAgbV9pc0NvbXBsZXRlID0gYnVmZmVyLT5zdGF0dXMo
KSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAgICAgICBpZiAoZGVjb2Rlci5yZXBl
dGl0aW9uQ291bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkgeworICAgICAgICAgICAgLy8gTWFueSBh
bm5veWluZyBhZHMgc3BlY2lmeSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBh
cyBxdWlja2x5IGFzIHBvc3NpYmxlLgorICAgICAgICAgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gn
cyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRo
YXQgc3BlY2lmeQorICAgICAgICAgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxy
ZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Cisg
ICAgICAgICAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIG1fZHVyYXRp
b24gPSBzdGQ6Om1heChidWZmZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBmLCAwLjEwMGYpOworICAg
ICAgICB9CisgICAgfQorI2VuZGlmCit9CisKK0ltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURh
dGEoKQoreworICAgIGNsZWFyKEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpOworfQorCitJ
bWFnZUZyYW1lU3RhdHVzIEltYWdlRnJhbWVEYXRhOjpzdGF0dXMoKSBjb25zdAoreworICAgIGlm
ICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWVTdGF0dXM6OkRlY29kZU5vbmU7
CisgICAgCisgICAgcmV0dXJuIG1faXNDb21wbGV0ZSA/IEltYWdlRnJhbWVTdGF0dXM6OkRlY29k
ZUNvbXBsZXRlIDogSW1hZ2VGcmFtZVN0YXR1czo6RGVjb2RlUGFydGlhbDsKK30KKyAgICAKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE0YWZmODY0MjI4ODc5ZmZkNWZkZDM1MDczYWQ1ODk3YjU2MDYzM2EKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lRGF0YS5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbWFnZUZyYW1lRGF0YV9oCisjZGVmaW5lIEltYWdl
RnJhbWVEYXRhX2gKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRh
dGlvbi5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5o
IgorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5v
IHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordHlw
ZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwordHlwZWRlZiBzaXplX3QgSW1hZ2VGcmFtZUlu
ZGV4OworCitzdGF0aWMgY29uc3QgSW1hZ2VGcmFtZUluZGV4IE1heEltYWdlRnJhbWVJbmRleCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8SW1hZ2VGcmFtZUluZGV4Pjo6bWF4KCk7CisKK2VudW0gY2xh
c3MgSW1hZ2VGcmFtZUNhY2hpbmcgeworICAgIENhY2hlTm9uZSwKKyAgICBDYWNoZU1ldGFkYXRh
LAorICAgIENhY2hlRnJhbWUsCisgICAgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lCit9OworCitlbnVt
IGNsYXNzIEltYWdlRnJhbWVTdGF0dXMgeworICAgIERlY29kZU5vbmUsCisgICAgRGVjb2RlUGFy
dGlhbCwKKyAgICBEZWNvZGVDb21wbGV0ZQorfTsKKworY2xhc3MgSW1hZ2VEZWNvZGVyOworCitz
dHJ1Y3QgSW1hZ2VGcmFtZURhdGEgeworcHVibGljOgorICAgIEltYWdlRnJhbWVEYXRhKCk7Cisg
ICAgSW1hZ2VGcmFtZURhdGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICBJbWFnZUZyYW1l
RGF0YShJbWFnZURlY29kZXImLCBJbWFnZUZyYW1lSW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiA9IG51bGxwdHIpOworICAgIH5JbWFnZUZyYW1lRGF0YSgpOwor
ICAgIAorICAgIEltYWdlRnJhbWVTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CisgICAgCisgICAgYm9v
bCBjbGVhcihJbWFnZUZyYW1lQ2FjaGluZyk7CisgICAgT3B0aW9uYWw8Q29sb3I+IHNvbGlkQ29s
b3IoKSBjb25zdDsKKyAgICAKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlIHsgbnVsbHB0ciB9
OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVu
dGF0aW9uIH07CisgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07
CisgICAgZmxvYXQgbV9kdXJhdGlvbiB7IDAgfTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgc3Ry
dWN0IHsKKyAgICAgICAgICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOworICAgICAgICAgICAg
Ym9vbCBtX2lzQ29tcGxldGUgOiAxOworICAgICAgICAgICAgYm9vbCBtX2hhc0FscGhhIDogMTsK
KyAgICAgICAgICAgIGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIDogMTsKKyAgICAgICAgfTsKKyAg
ICAgICAgdWludDhfdCBtX2ZsYWdzW3NpemVvZihib29sKV0geyAwIH07CisgICAgfTsKKyAgICB1
bnNpZ25lZCBtX2ZyYW1lQnl0ZXMgeyAwIH07CisgICAgSW50U2l6ZSBtX3NpemU7Cit9OworICAg
IAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSW1hZ2VGcmFtZURhdGFfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmlu
ZGV4IDc0ZWYwNTNhMzMzZmY1ZmM1NzhlODE4MDBjYzZmYzk3NTVlZmJhYjguLmNkODBkMDdkYzUy
ZDZiMDRiNWMzZDRlODBlZmEzNDAyMTczZTVjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28u
dWs+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYwpAQCAtMjks
OCArMjksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgi
CiAKLSNpZiAhVVNFKENHKQotCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCkBAIC0zOCwxNSArMzYsMTcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLXVuc2ln
bmVkIEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IDEwMjQgKiAxMDI0
OwotI2VuZGlmCi0KIEltYWdlU291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IG1fZGVjb2RlcigwKQotICAgICwg
bV9hbHBoYU9wdGlvbihhbHBoYU9wdGlvbikKKyNpZiAhVVNFKENHKQorICAgIDogbV9hbHBoYU9w
dGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24oZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisjZW5kaWYKIHsKKyNpZiBVU0UoQ0cpCisgICAgVU5V
U0VEX1BBUkFNKGFscGhhT3B0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOworI2VuZGlmCisKIH0KIAogSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgp
CkBAIC01NCwxMjggKzU0LDE5MCBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKICAgICBj
bGVhcih0cnVlKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxs
LCBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1l
cywgSW1hZ2VGcmFtZUluZGV4IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgaWYgKCFkZXN0cm95QWxsKSB7CisgICAgaWYg
KCFkZXN0cm95QWxsRnJhbWVzKSB7CisjaWYgVVNFKENHKQorICAgICAgICAvLyBSZWNlbnQgdmVy
c2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBmcmFtZXMg
aWYgdGhlIGNsaWVudAorICAgICAgICAvLyBhcHBsaWNhdGlvbiBubyBsb25nZXIgaG9sZHMgcmVm
ZXJlbmNlcyB0byB0aGVtLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheQorICAgICAg
ICAvLyB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZCB0byBkZXN0cm95
IGFsbCBvZiB0aGUgZnJhbWVzLgorICAgICAgICBVTlVTRURfUEFSQU0oY2xlYXJCZWZvcmVGcmFt
ZSk7CisjZWxzZQogICAgICAgICBpZiAobV9kZWNvZGVyKQogICAgICAgICAgICAgbV9kZWNvZGVy
LT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7CisjZW5kaWYKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGRlbGV0ZSBtX2RlY29kZXI7Ci0gICAgbV9kZWNvZGVy
ID0gMDsKKyAgICBtX2RlY29kZXIgPSBudWxscHRyOwogICAgIGlmIChkYXRhKQogICAgICAgICBz
ZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6Omlu
aXRpYWxpemVkKCkgY29uc3QKKyAgICAKK3ZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJ
c0NyZWF0ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotICAgIHJldHVybiBtX2RlY29kZXI7Cisg
ICAgaWYgKG1fZGVjb2RlcikKKyAgICAgICAgcmV0dXJuOworI2lmIFVTRShDRykKKyAgICBVTlVT
RURfUEFSQU0oZGF0YSk7CisgICAgbV9kZWNvZGVyID0gbmV3IEltYWdlRGVjb2RlcigpOworI2Vs
c2UKKyAgICBtX2RlY29kZXIgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbWFnZURlY29kZXJQdHI+KE5h
dGl2ZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBtX2FscGhhT3B0aW9uLCBtX2dhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKSk7CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKKyAgICBpZiAobV9kZWNvZGVyKQorICAgICAgICBtX2RlY29kZXItPnNldE1heE51bVBp
eGVscyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7CisjZW5kaWYKKyNlbmRpZgorICAgIAog
fQogCiB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgLy8gTWFrZSB0aGUgZGVjb2RlciBieSBzbmlmZmluZyB0
aGUgYnl0ZXMuCi0gICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBleGFtaW5lIHRoZSBkYXRhIGFuZCBp
bnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgZGVjb2RlciBwbHVnaW4u
Ci0gICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBhdmFpbGFibGUgdG8gZGV0ZXJtaW5l
IHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3aWxsIGJlCi0gICAgLy8gbWFkZS4K
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBlbnN1cmVEZWNvZGVy
SXNDcmVhdGVkKGRhdGEpOwogICAgIGlmICghbV9kZWNvZGVyKSB7Ci0gICAgICAgIG1fZGVjb2Rl
ciA9IHN0YXRpY19jYXN0PE5hdGl2ZUltYWdlRGVjb2RlclB0cj4oTmF0aXZlSW1hZ2VEZWNvZGVy
OjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pKTsKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAgICAgICBp
ZiAobV9kZWNvZGVyICYmIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKQotICAgICAgICAgICAg
bV9kZWNvZGVyLT5zZXRNYXhOdW1QaXhlbHMoc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOwot
I2VuZGlmCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CiAg
ICAgfQotCi0gICAgaWYgKG1fZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVyLT5zZXREYXRhKGRh
dGEsIGFsbERhdGFSZWNlaXZlZCk7CisgICAgCisgICAgbV9kZWNvZGVyLT5zZXREYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdAorYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigp
IDogU3RyaW5nKCk7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgaWYgKCFtX3NpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGlmICghbV9kZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIG1fc2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7Cisg
ICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN1YnNhbXBs
aW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCkgY29u
c3QKK0ludFNpemUgSW1hZ2VTb3VyY2U6OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBpc1NpemVBdmFpbGFibGUoKSA/IG1fc2l6ZSA6IEludFNpemUoKTsKIH0KIAot
Ym9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkg
Y29uc3QKK0ludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBj
b25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNTaXplQXZhaWxhYmxlKCkg
PyBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gOiBJbnRTaXplKCk7CiB9Ci0KLWJvb2wgSW1h
Z2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCisgICAgCitTdWJzYW1wbGluZ0xldmVsIEltYWdl
U291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5n
TGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVj
b2RlciAmJiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOworI2lmIFVTRShDRykKKyAgICBy
ZXR1cm4gSW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoc2NhbGUsIG1heGlt
dW1TdWJzYW1wbGluZ0xldmVsKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNjYWxlKTsKKyAg
ICBVTlVTRURfUEFSQU0obWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiAwOwor
I2VuZGlmCiB9Ci0KLUludFNpemUgSW1hZ2VTb3VyY2U6OnNpemUoSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAorICAgIAorc2l6ZV90IEltYWdlU291cmNlOjpi
eXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdAogewotICAgIHJldHVybiBm
cmFtZVNpemVBdEluZGV4KDAsIDAsIGRlc2NyaXB0aW9uKTsKKyNpZiBVU0UoQ0cpCisgICAgcmV0
dXJuIEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9Ci0KLUludFNpemUgSW1hZ2VTb3VyY2U6OmZy
YW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pIGNvbnN0CisgICAgCitpbnQgSW1hZ2VTb3Vy
Y2U6OnJlcGV0aXRpb25Db3VudCgpCiB7Ci0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJl
dHVybiBJbnRTaXplKCk7Ci0KLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6
ZUF0SW5kZXgoaW5kZXgpOwotICAgIGlmICgoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50
YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgJiYgbV9kZWNvZGVyLT5vcmllbnRh
dGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBJbnRTaXplKHNpemUu
aGVpZ2h0KCksIHNpemUud2lkdGgoKSk7Ci0KLSAgICByZXR1cm4gc2l6ZTsKKyAgICBpZiAoIWlu
aXRpYWxpemVkKCkpCisjaWYgVVNFKENHKQorICAgICAgICByZXR1cm4gY0FuaW1hdGlvbkxvb3BP
bmNlOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGNBbmltYXRpb25Ob25lOworI2VuZGlmCisgICAg
cmV0dXJuIG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCk7CiB9Ci0KLWJvb2wgSW1hZ2VTb3Vy
Y2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CisgICAgCitzaXplX3QgSW1h
Z2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2RlY29kZXIgPyBt
X2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCkgOiBmYWxzZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6
ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KLQotc2l6ZV90IEltYWdlU291
cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdAorICAgIAorU3Ry
aW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24o
KSA6IFN0cmluZygpOwogfQogCi1pbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCiti
b29sIEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAogewot
ICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0Fu
aW1hdGlvbk5vbmU7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisjaWYgVVNFKENHKQorICAgIGJvb2wgcmVzdWx0ID0gbV9kZWNvZGVyLT5nZXRIb3RTcG90
KGhvdFNwb3QpOworI2Vsc2UKKyAgICBib29sIHJlc3VsdCA9IG1fZGVjb2Rlci0+aG90U3BvdCho
b3RTcG90KTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBJbWFnZVNv
dXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0Citib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBs
aW5nT2ZGcmFtZUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4IGluZGV4KSBjb25zdAogewotICAgIHJl
dHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CisjaWYgVVNFKENH
KQorICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGlu
Z09mRnJhbWVBdEluZGV4KGluZGV4KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsK
KyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KLQotUGFzc05hdGl2ZUltYWdlUHRyIEltYWdl
U291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
KQorICAgIAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChJbWFnZUZy
YW1lSW5kZXggaW5kZXgpCiB7Ci0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiAw
OwotCisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYg
VVNFKENHKQorICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+ZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleChpbmRleCk7CisjZWxzZQogICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1f
ZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKLSAgICBpZiAoIWJ1ZmZlciB8fCBi
dWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Ig
c29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KLSAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24s
IGp1c3QgYmFpbC4KLSAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKKyAgICByZXR1cm4gYnVmZmVy
ICYmIGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyNlbmRp
ZgorfQorICAgIAordW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KEltYWdl
RnJhbWVJbmRleCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25z
dAoreworICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CisjaWYgVVNF
KENHKQorICAgIHJldHVybiBtX2RlY29kZXItPmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN1YnNhbXBsaW5nTGV2ZWwp
OworICAgIHJldHVybiBtX2RlY29kZXItPmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KTsKKyNlbmRp
ZgorfQogCi0gICAgLy8gUmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMgYSBuYXRpdmUgaW1h
Z2UuICBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKLSAgICAvLyBpcyBhbHJlYWR5IGluIGEgbmF0
aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNyZW1lbnRzIGl0cyByZWZjb3VudC4KLSAg
ICByZXR1cm4gYnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7Citib29sIEltYWdlU291cmNlOjpm
cmFtZUhhc0FscGhhQXRJbmRleChJbWFnZUZyYW1lSW5kZXggaW5kZXgpCit7CisgICAgaWYgKCFp
bml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gbV9k
ZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CiB9CiAKLWZsb2F0IEltYWdlU291
cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCitmbG9hdCBJbWFnZVNvdXJj
ZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4IGluZGV4KQogewotICAgIGlm
ICghbV9kZWNvZGVyKQorICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0KKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoaW5kZXgpOworI2Vsc2UKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZy
YW1lQnVmZmVyQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0
dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQogICAgICAgICByZXR1cm4gMDsKLQorICAg
IAogICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2Ug
YW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KICAgICAvLyBXZSBmb2xsb3cg
RmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBm
cmFtZXMgdGhhdCBzcGVjaWZ5CiAgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxy
ZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+CkBA
IC0xODQsMzYgKzI0Niw1OSBAQCBmbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKICAgICAgICAgcmV0
dXJuIDAuMTAwZjsKICAgICByZXR1cm4gZHVyYXRpb247CisjZW5kaWYKIH0KLQotSW1hZ2VPcmll
bnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QKKyAg
ICAKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChJbWFn
ZUZyYW1lSW5kZXggaW5kZXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVj
b2Rlci0+b3JpZW50YXRpb24oKSA6IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOworICAgIGlmIChp
bml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gRGVmYXVsdEltYWdlT3JpZW50YXRpb247Cisj
aWYgVVNFKENHKQorICAgIHJldHVybiBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRl
eCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgcmV0dXJuIG1fZGVjb2Rl
ci0+b3JpZW50YXRpb24oKTsKKyNlbmRpZgogfQogCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCitJbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNp
emVBdEluZGV4KEltYWdlRnJhbWVJbmRleCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdl
T3JpZW50YXRpb24pIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIHJldHVybiBtX2RlY29kZXItPmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4
KTsKKyAgICBpZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7Cisj
aWYgVVNFKENHKQorICAgIEludFNpemUgc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbiA9IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIEludFNpemUgc2l6ZSA9IG1fZGVj
b2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiA9IG1fZGVjb2Rlci0+b3JpZW50YXRpb24oKTsKKyNlbmRpZgorICAgIHJldHVybiBz
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAm
JiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgp
IDogc2l6ZTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QgaW5kZXgpCitQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KEltYWdlRnJhbWVJbmRleCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsKQogewogICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBudWxscHRyOworI2lmIFVTRShDRykKKyAgICByZXR1cm4gbV9k
ZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdWJzYW1wbGluZ0xldmVsKTsKIAogICAgIEltYWdl
RnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKLSAg
ICByZXR1cm4gYnVmZmVyICYmIGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVD
b21wbGV0ZTsKLX0KKyAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdl
RnJhbWU6OkZyYW1lRW1wdHkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi11bnNpZ25lZCBJ
bWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsKSBjb25zdAotewotICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gbV9kZWNvZGVyLT5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCk7CisgICAgLy8gWmVy
by1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2Ug
aGF2ZSBhbgorICAgIC8vIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgorICAgIGlm
IChzaXplKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFJl
dHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiBGb3Igc29tZSBwb3J0
cywgdGhlIGRhdGEKKyAgICAvLyBpcyBhbHJlYWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5k
IHRoaXMganVzdCBpbmNyZW1lbnRzIGl0cyByZWZjb3VudC4KKyAgICByZXR1cm4gYnVmZmVyLT5h
c05ld05hdGl2ZUltYWdlKCk7CisjZW5kaWYKIH0KIAogfQogCi0jZW5kaWYgLy8gVVNFKENHKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXgg
YWNkZDFjZTRjZTMwMGRlODFjOWUwNjJlZWU3NjA3YmY0NzJhNzBhZi4uZTE4YWYxNjY5MDk4ZmEw
ZGYyOTEzOWUwMWVlMzIxNWZkZjliNzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0yNywxMiArMjcsMTQgQEAKICNpZm5kZWYgSW1h
Z2VTb3VyY2VfaAogI2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKKyNpbmNsdWRlICJJbWFnZUZyYW1l
RGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJOYXRpdmVJ
bWFnZVB0ci5oIgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlU291cmNl
KiBDR0ltYWdlU291cmNlUmVmOwpAQCAtNDYsMTggKzQ4LDkgQEAgY2xhc3MgSW50UG9pbnQ7CiBj
bGFzcyBJbnRTaXplOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCi0jaWYgVVNFKENHKQotdHlwZWRl
ZiBDR0ltYWdlU291cmNlUmVmIE5hdGl2ZUltYWdlRGVjb2RlclB0cjsKLSNlbHNlCiBjbGFzcyBJ
bWFnZURlY29kZXI7CiB0eXBlZGVmIEltYWdlRGVjb2RlciogTmF0aXZlSW1hZ2VEZWNvZGVyUHRy
OwotI2VuZGlmCi0KLSNpZiBVU0UoQ0cpCi0jZGVmaW5lIE5hdGl2ZUltYWdlRGVjb2RlciBJbWFn
ZURlY29kZXIKLSNlbHNlCiB0eXBlZGVmIEltYWdlRGVjb2RlciBOYXRpdmVJbWFnZURlY29kZXI7
Ci0jZW5kaWYKIAogLy8gUmlnaHQgbm93IEdJRnMgYXJlIHRoZSBvbmx5IHJlY29nbml6ZWQgaW1h
Z2UgZm9ybWF0IHRoYXQgc3VwcG9ydHMgYW5pbWF0aW9uLgogLy8gVGhlIGFuaW1hdGlvbiBzeXN0
ZW0gYW5kIHRoZSBjb25zdGFudHMgYmVsb3cgYXJlIGRlc2lnbmVkIHdpdGggdGhpcyBpbiBtaW5k
LgpAQCAtNzcsOSArNzAsNiBAQCBjb25zdCBpbnQgY0FuaW1hdGlvbkxvb3BPbmNlID0gMDsKIGNv
bnN0IGludCBjQW5pbWF0aW9uTG9vcEluZmluaXRlID0gLTE7CiBjb25zdCBpbnQgY0FuaW1hdGlv
bk5vbmUgPSAtMjsKIAotLy8gU3Vic2FtcGxpbmdMZXZlbC4gMCBpcyBubyBzdWJzYW1wbGluZywg
MSBpcyBoYWxmIGRpbWVuc2lvbnMgb24gZWFjaCBheGlzIGV0Yy4KLXR5cGVkZWYgc2hvcnQgU3Vi
c2FtcGxpbmdMZXZlbDsKLQogY2xhc3MgSW1hZ2VTb3VyY2UgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEltYWdlU291cmNlKTsKIHB1YmxpYzoKQEAgLTExMCw2NyArMTAwLDUzIEBAIHB1Ymxp
YzoKICAgICAvLyBkZWNvZGVkIGZyYW1lcy4KICAgICAvLwogICAgIC8vIENhbGxlcnMgc2hvdWxk
IG5vdCBjYWxsIGNsZWFyKGZhbHNlLCBuKSBhbmQgc3Vic2VxdWVudGx5IGNhbGwKLSAgICAvLyBj
cmVhdGVGcmFtZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5sZXNzIHRoZXkgZmlyc3QgY2FsbCBj
bGVhcih0cnVlKS4KKyAgICAvLyBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChtKSB3aXRoIG0gPCBu
LCB1bmxlc3MgdGhleSBmaXJzdCBjYWxsIGNsZWFyKHRydWUpLgogICAgIC8vIFRoaXMgZW5zdXJl
cyB0aGF0IHN0YXRlZnVsIEltYWdlU291cmNlcy9kZWNvZGVycyB3aWxsIHdvcmsgcHJvcGVybHku
CiAgICAgLy8KICAgICAvLyBUaGUgfGRhdGF8IGFuZCB8YWxsRGF0YVJlY2VpdmVkfCBwYXJhbWV0
ZXJzIHNob3VsZCBiZSBzdXBwbGllZCBieSBjYWxsZXJzCiAgICAgLy8gd2hvIHNldCB8ZGVzdHJv
eUFsbHwgdG8gdHJ1ZSBpZiB0aGV5IHdpc2ggdG8gYmUgYWJsZSB0byBjb250aW51ZSB1c2luZwog
ICAgIC8vIHRoZSBJbWFnZVNvdXJjZS4gIFRoaXMgd2F5IGltcGxlbWVudGF0aW9ucyB3aGljaCBj
aG9vc2UgdG8gZGVzdHJveSB0aGVpcgogICAgIC8vIGRlY29kZXJzIGluIHNvbWUgY2FzZXMgY2Fu
IHJlY29uc3RydWN0IHRoZW0gY29ycmVjdGx5LgotICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95
QWxsLAotICAgICAgICAgICAgICAgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLAotICAgICAg
ICAgICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gTlVMTCwKLSAgICAgICAgICAgICAgIGJvb2wg
YWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxs
LCBJbWFnZUZyYW1lSW5kZXggY2xlYXJCZWZvcmVGcmFtZSA9IDAsIFNoYXJlZEJ1ZmZlciogZGF0
YSA9IG51bGxwdHIsIGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOwogCi0gICAgYm9vbCBp
bml0aWFsaXplZCgpIGNvbnN0OworICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVy
biBtX2RlY29kZXI7IH0KIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25z
dDsKLQotICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0
KSBjb25zdDsKLSAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3Qp
IGNvbnN0OwogCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICBib29sIGlzU2l6ZUF2
YWlsYWJsZSgpIGNvbnN0OwogICAgIC8vIEFsd2F5cyBvcmlnaW5hbCBzaXplLCB3aXRob3V0IHN1
YnNhbXBsaW5nLgotICAgIEludFNpemUgc2l6ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24g
PSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkgY29uc3Q7Ci0gICAgLy8gU2l6ZSBvZiBv
cHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKSBjb25zdDsKLQotICAgIGJvb2wgZ2V0
SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0OworICAg
IEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0OwogCisgICAgU3Vic2Ft
cGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2
ZWwpIGNvbnN0OwogICAgIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMo
KSBjb25zdDsKIAotICAgIGludCByZXBldGl0aW9uQ291bnQoKTsKLQogICAgIHNpemVfdCBmcmFt
ZUNvdW50KCkgY29uc3Q7CisgICAgaW50IHJlcGV0aXRpb25Db3VudCgpOworICAgIFN0cmluZyBm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OworICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYp
IGNvbnN0OworICAgIAorICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KElt
YWdlRnJhbWVJbmRleCkgY29uc3Q7CisgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KElt
YWdlRnJhbWVJbmRleCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBpcyBjb21wbGV0ZWx5
IGRlY29kZWQuCisgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoSW1hZ2VGcmFtZUluZGV4
LCBTdWJzYW1wbGluZ0xldmVsID0gMCkgY29uc3Q7CisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJ
bmRleChJbWFnZUZyYW1lSW5kZXgpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFs
bHkgdXNlZCBhbnkgYWxwaGEuCisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoSW1hZ2VG
cmFtZUluZGV4KTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChJbWFn
ZUZyYW1lSW5kZXgpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAKLSAgICAvLyBD
YWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEg
aGlnaGVyIGluZGV4OwotICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAg
IFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gMCk7Ci0KLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwot
ICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3Qg
dGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgotICAgIGJvb2wgZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxl
dGVseSBkZWNvZGVkLgotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNp
emVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KLQotICAgIC8vIFJldHVybiB0
aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUgaXMg
bm90IHlldAotICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1bnNpZ25lZCBmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKLQotI2lm
IEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVk
IG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2Rl
ZEltYWdlOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVu
c2lnbmVkIG1heFBpeGVscykgeyBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVs
czsgfQotI2VuZGlmCisgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KEltYWdlRnJhbWVJbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERv
Tm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OworICAgIFBhc3NOYXRpdmVJbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFnZUZyYW1lSW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgPSAwKTsKIAogcHJpdmF0ZToKLSAgICBOYXRpdmVJbWFnZURlY29kZXJQdHIgbV9kZWNvZGVy
OwotCisgICAgdm9pZCBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciopOworICAg
IAorICAgIE5hdGl2ZUltYWdlRGVjb2RlclB0ciBtX2RlY29kZXIgeyBudWxscHRyIH07CisgICAg
bXV0YWJsZSBJbnRTaXplIG1fc2l6ZTsKKyAgICBtdXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVj
dGluZ09yaWVudGF0aW9uOworICAgIAogI2lmICFVU0UoQ0cpCi0gICAgQWxwaGFPcHRpb24gbV9h
bHBoYU9wdGlvbjsKLSAgICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uOwotI2VuZGlmCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKLSAgICBzdGF0aWMgdW5zaWduZWQgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7
CisgICAgQWxwaGFPcHRpb24gbV9hbHBoYU9wdGlvbiB7IEFscGhhUHJlbXVsdGlwbGllZCB9Owor
ICAgIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24geyBHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQgfTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSAxMDI0ICogMTAyNDsKICNlbmRpZgog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmgKaW5kZXggZGY5NDFhNTY2YTllNDY5Mjc3MjdiYTFlYzY4NDhmMjE2ODAzYTQ1Yi4uZWNh
MWI5MmM0MWVlMTgyOGUzMTBkNWJlZGJiMmI1YWNhNTk1ZjU0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjZGVmaW5lIE5hdGl2ZUltYWdlUHRyX2gKIAogI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwogI2Vs
aWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCkBAIC00MSw3ICs0Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBOYXRpdmVJbWFnZVB0ciBhbmQgUGFzc05h
dGl2ZUltYWdlUHRyIHNob3VsZCBiZSBzbWFydAogLy8gcG9pbnRlcnMgKHNlZSBTVkdJbWFnZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkuCiAjaWYgVVNFKENHKQotdHlwZWRlZiBDR0lt
YWdlUmVmIE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0
aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwogdHlwZWRlZiBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gUGFzc05hdGl2ZUltYWdlUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggNjNkY2YwYTI1M2UyMzQw
ZjY3ZjFjODFkODVmYzI3MGRkMjMwZTg2ZC4uYTRjNjViZGZmMzJhOTJmOWMxZGYyNmQ0YmY1MzA4
MGYwNWFiOTYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMDM3LDcgKzEwMzcsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2Up
CiB7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgbmV3SW1hZ2UgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBuZXdJ
bWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLmdldCgpOwogICAgICAg
ICBpZiAoIW5ld0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwCmluZGV4IGNkNTdlZTQ4NWVhODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTllMTAyODIuLjEwMjIz
NWQ5YWYwMDU0ZDYzODkxZmM0YzdjZTVjZDc0NWM2MDAxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwCkBAIC00MCwxNiArNDAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCaXRtYXBJbWFn
ZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQotICAgICwgbV9z
aXplKGNhaXJvU3VyZmFjZVNpemUobmF0aXZlSW1hZ2UuZ2V0KCkpKQotICAgICwgbV9taW5pbXVt
U3Vic2FtcGxpbmdMZXZlbCgwKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fcmVw
ZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQogICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0
dXMoVW5rbm93bikKICAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQotICAgICwgbV9kZWNv
ZGVkU2l6ZShtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSAqIDQpCiAgICAgLCBtX2Zy
YW1lQ291bnQoMSkKLSAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVja2Vk
Rm9yU29saWRDb2xvcihmYWxzZSkKICAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQodHJ1ZSkKICAg
ICAsIG1fYWxsRGF0YVJlY2VpdmVkKHRydWUpCiAgICAgLCBtX2hhdmVTaXplKHRydWUpCkBAIC01
NywxMSArNTIsOSBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgICwgbV9oYXZlRnJhbWVD
b3VudCh0cnVlKQogewogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9o
YXNBbHBoYSA9IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobmF0aXZlSW1hZ2UuZ2V0KCkpICE9
IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IG5hdGl2ZUlt
YWdlOwotICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLQotICAgIGNoZWNr
Rm9yU29saWRDb2xvcigpOworICAgIG1fZnJhbWVzWzBdID0gSW1hZ2VGcmFtZURhdGEobmF0aXZl
SW1hZ2UpOworICAgIG1fc2l6ZSA9IG1fZnJhbWVzWzBdLm1fc2l6ZTsKKyAgICBtX2RlY29kZWRT
aXplID0gbV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCkgKiA0OwogfQogCiB2b2lkIEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKQEAgLTcy
LDcgKzY1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KIAogICAgIHN0YXJ0QW5pbWF0aW9u
KCk7CiAKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0g
ZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAgIGlmICghc3VyZmFjZSkgLy8g
SWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTI0LDQ3ICsxMTcsNTEgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KIAog
dm9pZCBCaXRtYXBJbWFnZTo6ZGV0ZXJtaW5lTWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25z
dAogewotICAgIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwgPSAwOworICAgIG1fbWF4aW11bVN1
YnNhbXBsaW5nTGV2ZWwgPSAwOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlk
Q29sb3IoKQorSW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKKyAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2hhdmVNZXRhZGF0YSh0
cnVlKQorICAgICwgbV9pc0NvbXBsZXRlKHRydWUpCiB7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBm
YWxzZTsKLSAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKLQotICAgIGlmIChmcmFt
ZUNvdW50KCkgPiAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICBpZiAoIXN1
cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0Lgot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNl
LmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEludFNpemUgc2l6ZSA9IGNhaXJvU3VyZmFjZVNpemUoc3VyZmFjZS5nZXQoKSk7Ci0KLSAg
ICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB1bnNpZ25lZCogcGl4ZWxDb2xvciA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlLmdldCgpKSk7
Ci0gICAgbV9zb2xpZENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29s
b3IpOwotCi0gICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOworICAgIEFTU0VSVChtX2ltYWdlKTsK
KyAgICBtX3NpemUgPSBjYWlyb1N1cmZhY2VTaXplKG1faW1hZ2UuZ2V0KCkpOworICAgIG1fZnJh
bWVCeXRlcyA9IG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpICogNDsKKyAgICBtX2hh
c0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChtX2ltYWdlLmdldCgpKSAhPSBDQUlS
T19DT05URU5UX0NPTE9SOwogfQogCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1l
dGFkYXRhKQorCitib29sIEltYWdlRnJhbWVEYXRhOjpjbGVhcihJbWFnZUZyYW1lQ2FjaGluZyBm
cmFtZUNhY2hpbmcpCiB7Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCisgICAgaWYgKGZyYW1lQ2Fj
aGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVOb25lKQogICAgICAgICBtX2hhdmVNZXRh
ZGF0YSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgbV9mcmFtZSA9IG51
bGxwdHI7CisgICAgaWYgKG1faW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK09wdGlv
bmFsPENvbG9yPiBJbWFnZUZyYW1lRGF0YTo6c29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2ltYWdlKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAKKyAgICBpZiAoY2Fpcm9f
c3VyZmFjZV9nZXRfdHlwZShtX2ltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1B
R0UpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworCisgICAgSW50U2l6ZSBzaXplID0gY2Fpcm9T
dXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKKworICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8
fCBzaXplLmhlaWdodCgpICE9IDEpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworCisgICAgdW5z
aWduZWQqIHBpeGVsQ29sb3IgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9pbWFnZS5nZXQoKSkpOworICAgIHJldHVybiBjb2xv
ckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWxDb2xvcik7Cit9CisKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RENhaXJvLmNwcAppbmRleCBjYzcwNDYxNDdhZTgxZjFmYWRhYTZkODQxNjI0OTgwYzZmZGZjYmYx
Li44YzQxODZkNzFlNTNhMTkwN2U5MmQ3M2EyYjAxNjQ3ZmZkNjZiMWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sCiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShtX2ltYWdlLT5kYXRhKCksIHRydWUp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1f
aW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAgIG1f
aW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKICAgICB9
IGVsc2UgewogICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAgICAgICAgIC8vIDEuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZp
ZGVvRWxtZW50IGlucHV0LCBhc3N1bWUgbm8gUHJlbXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBs
aWVkIGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMgMHhGRiBmb3IgZWFjaCBwaXhlbCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAK
aW5kZXggMDFiN2Q2OTJjZGJkN2FiNGQyMmJiYzEzOTljMTAzMjhmNTdlNWU0Ny4uNWFjMzM2ZDJh
ZmMyNmZiMTI0MzE5ZmRmNjQ2NWY1MmM1Y2Q4MTRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKQEAgLTQ5LDMxICs0
OSw2MyBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0ltYWdlRnJhbWVE
YXRhOjpJbWFnZUZyYW1lRGF0YShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCisgICAgOiBt
X2ltYWdlKGltYWdlKQorICAgICwgbV9oYXZlTWV0YWRhdGEodHJ1ZSkKKyAgICAsIG1faXNDb21w
bGV0ZSh0cnVlKQorICAgICwgbV9oYXNBbHBoYSh0cnVlKQoreworICAgIEFTU0VSVChtX2ltYWdl
KTsKKyAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1faW1hZ2UuZ2V0KCkpOwor
ICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2ltYWdlLmdldCgpKTsKKyAg
ICBtX2ZyYW1lQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CisgICAgbV9zaXplID0gSW50U2l6
ZSh3aWR0aCwgaGVpZ2h0KTsKK30KIAotYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJN
ZXRhZGF0YSkKK2Jvb2wgSW1hZ2VGcmFtZURhdGE6OmNsZWFyKEltYWdlRnJhbWVDYWNoaW5nIGZy
YW1lQ2FjaGluZykKIHsKLSAgICBpZiAoY2xlYXJNZXRhZGF0YSkKKyAgICBpZiAoZnJhbWVDYWNo
aW5nID09IEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpCiAgICAgICAgIG1faGF2ZU1ldGFk
YXRhID0gZmFsc2U7CiAKICAgICBtX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRp
b247CiAgICAgbV9zdWJzYW1wbGluZ0xldmVsID0gMDsKIAotICAgIGlmIChtX2ZyYW1lKSB7Cisg
ICAgaWYgKG1faW1hZ2UpIHsKICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICAgICAgc3ViaW1hZ2VD
YWNoZSgpLmNsZWFySW1hZ2UobV9mcmFtZSk7CisgICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVh
ckltYWdlKG1faW1hZ2UuZ2V0KCkpOwogI2VuZGlmCi0gICAgICAgIENHSW1hZ2VSZWxlYXNlKG1f
ZnJhbWUpOwotICAgICAgICBtX2ZyYW1lID0gMDsKKyAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisgICAg
CitPcHRpb25hbDxDb2xvcj4gSW1hZ2VGcmFtZURhdGE6OnNvbGlkQ29sb3IoKSBjb25zdAorewor
ICAgIGlmICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgCisgICAgLy8g
Q3VycmVudGx5IHdlIG9ubHkgY2hlY2sgZm9yIHNvbGlkIGNvbG9yIGluIHRoZSBpbXBvcnRhbnQg
c3BlY2lhbCBjYXNlIG9mIGEgMXgxIGltYWdlLgorICAgIGlmIChDR0ltYWdlR2V0V2lkdGgobV9p
bWFnZS5nZXQoKSkgIT0gMSB8fCBDR0ltYWdlR2V0SGVpZ2h0KG1faW1hZ2UuZ2V0KCkpICE9IDEp
CisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIAorICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxb
NF07IC8vIFJHQkEKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhl
bCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAKKyAgICBHcmFwaGljc0NvbnRleHQoYml0bWFwQ29u
dGV4dC5nZXQoKSkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOworICAgIENH
UmVjdCBkZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpOworICAgIENHQ29u
dGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBkZXN0aW5hdGlvblJlY3QsIG1faW1h
Z2UuZ2V0KCkpOworICAgIGlmICghcGl4ZWxbM10pCisgICAgICAgIHJldHVybiBDb2xvcigwLCAw
LCAwLCAwKTsKKyAgICAKKyAgICByZXR1cm4gQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFsz
XSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwg
cGl4ZWxbM10pOworfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0lt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShO
YXRpdmVJbWFnZVB0ciBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFn
ZShvYnNlcnZlcikKLSAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKLSAgICAsIG1f
aW1hZ2VPcmllbnRhdGlvbihPcmlnaW5Ub3BMZWZ0KQotICAgICwgbV9zaG91bGRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbihmYWxzZSkKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX3Jl
cGV0aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3Rh
dHVzKFVua25vd24pCkBAIC04MSwxNiArMTEzLDE0IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9k
ZWNvZGVkU2l6ZSgwKQogICAgICwgbV9kZWNvZGVkUHJvcGVydGllc1NpemUoMCkKICAgICAsIG1f
ZnJhbWVDb3VudCgxKQotICAgICwgbV9pc1NvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2NoZWNr
ZWRGb3JTb2xpZENvbG9yKGZhbHNlKQogICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQog
ICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAg
ICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQog
ewotICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSk7Ci0gICAgQ0dG
bG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOworICAgIENHRmxvYXQgd2lk
dGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIENHRmxvYXQgaGVpZ2h0ID0g
Q0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CiAgICAgbV9kZWNvZGVkU2l6ZSA9IHdpZHRo
ICogaGVpZ2h0ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogCkBA
IC05OSwxMSArMTI5LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJ
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgbV9zaXplUmVzcGVjdGluZ09yaWVu
dGF0aW9uID0gbV9zaXplOwogCiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1lc1sw
XS5tX2ZyYW1lID0gQ0dJbWFnZVJldGFpbihjZ0ltYWdlKTsKLSAgICBtX2ZyYW1lc1swXS5tX2hh
c0FscGhhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0K
LSAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKKyAgICBtX2ZyYW1lc1swXSA9IEltYWdlRnJhbWVE
YXRhKGltYWdlKTsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGV0ZXJtaW5lTWluaW11bVN1YnNh
bXBsaW5nTGV2ZWwoKSBjb25zdApAQCAtMTI1LDY0ICsxNTEsMjEgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZGV0ZXJtaW5lTWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZlbCA9IGN1cnJlbnRM
ZXZlbDsKLX0KLQotdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKLXsKLSAg
ICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKLSAgICBtX2lzU29saWRDb2xvciA9IGZh
bHNlOwotCi0gICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmICghaGF2ZUZyYW1lQXRJbmRleCgwKSkgewotICAgICAgICBJbnRTaXplIHNpemUgPSBtX3Nv
dXJjZS5mcmFtZVNpemVBdEluZGV4KDAsIDApOwotICAgICAgICBpZiAoc2l6ZS53aWR0aCgpICE9
IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZCgwKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBDR0ltYWdlUmVmIGltYWdlID0gbnVsbHB0cjsKLSAgICBpZiAobV9mcmFtZXMuc2l6
ZSgpKQotICAgICAgICBpbWFnZSA9IG1fZnJhbWVzWzBdLm1fZnJhbWU7Ci0KLSAgICBpZiAoIWlt
YWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBjaGVjayBm
b3Igc29saWQgY29sb3IgaW4gdGhlIGltcG9ydGFudCBzcGVjaWFsIGNhc2Ugb2YgYSAxeDEgaW1h
Z2UuCi0gICAgaWYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gMSAmJiBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlKSA9PSAxKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJH
QkEKLSAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBz
UkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKLSAgICAgICAgaWYgKCFiaXRtYXBD
b250ZXh0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBHcmFwaGljc0NvbnRleHQoYml0
bWFwQ29udGV4dC5nZXQoKSkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwot
ICAgICAgICBDR1JlY3QgZGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKTsK
LSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIGRlc3RpbmF0
aW9uUmVjdCwgaW1hZ2UpOwotICAgICAgICBpZiAoIXBpeGVsWzNdKQotICAgICAgICAgICAgbV9z
b2xpZENvbG9yID0gQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fc29saWRDb2xvciA9IENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFd
ICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsK
LQotICAgICAgICBtX2lzU29saWRDb2xvciA9IHRydWU7Ci0gICAgfQorICAgIG1fbWF4aW11bVN1
YnNhbXBsaW5nTGV2ZWwgPSBjdXJyZW50TGV2ZWw7CiB9CiAKIENHSW1hZ2VSZWYgQml0bWFwSW1h
Z2U6OmdldENHSW1hZ2VSZWYoKQogewotICAgIHJldHVybiBmcmFtZUF0SW5kZXgoMCk7CisgICAg
cmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApLmdldCgpOwogfQogCiBDR0ltYWdlUmVmIEJpdG1h
cEltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsK
ICAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lQXRJ
bmRleChpKTsKLSAgICAgICAgaWYgKGNnSW1hZ2UgJiYgSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgo
Y2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFnZSkpID09IHNpemUpCi0gICAgICAgICAg
ICByZXR1cm4gY2dJbWFnZTsKKyAgICAgICAgUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlID0gZnJh
bWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBJbnRTaXplKENHSW1hZ2VH
ZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA9PSBz
aXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlLmdldCgpOwogICAgIH0KIAogICAgIC8vIEZh
bGxiYWNrIHRvIHRoZSBkZWZhdWx0IENHSW1hZ2VSZWYgaWYgd2UgY2FuJ3QgZmluZCB0aGUgcmln
aHQgc2l6ZQpAQCAtMTk3LDggKzE4MCw4IEBAIFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJ
bWFnZTo6Z2V0Q0dJbWFnZUFycmF5KCkKICAgICAKICAgICBDRk11dGFibGVBcnJheVJlZiBhcnJh
eSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKE5VTEwsIGNvdW50LCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAg
aWYgKENHSW1hZ2VSZWYgY3VyckZyYW1lID0gZnJhbWVBdEluZGV4KGkpKQotICAgICAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJyRnJhbWUpOworICAgICAgICBpZiAoTmF0aXZl
SW1hZ2VQdHIgY3VyckZyYW1lID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkpCisgICAgICAgICAgICBD
RkFycmF5QXBwZW5kVmFsdWUoYXJyYXksIGN1cnJGcmFtZS5nZXQoKSk7CiAgICAgfQogICAgIHJl
dHVybiBhZG9wdENGKGFycmF5KTsKIH0KQEAgLTIxMSwxNSArMTk0LDE1IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGCiAgICAgc3RhcnRBbmltYXRpb24oKTsKICNlbmRpZgogCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGltYWdlOworICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOwogICAgIC8v
IE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0
cy4KICAgICBpZiAod2tDR0NvbnRleHRJc1BERkNvbnRleHQoY3R4dC5wbGF0Zm9ybUNvbnRleHQo
KSkpCi0gICAgICAgIGltYWdlID0gYWRvcHRDRihjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUpKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIENHUmVjdCB0cmFuc2Zv
cm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0
LCBDR0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgICAgICBmbG9h
dCBzdWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9y
bWVkRGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9y
bWVkRGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwogCi0g
ICAgICAgIGltYWdlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1Nj
YWxlKTsKKyAgICAgICAgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwg
c3Vic2FtcGxpbmdTY2FsZSk7CiAgICAgfQogCiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0
b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCkBAIC0yNTEsMTggKzIzNCwxOCBA
QCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERy
YXcodGhpcyk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6Y29weVVuc2Nh
bGVkRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK1Bhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJ
bWFnZTo6Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAg
IGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWUpCisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhd
Lm1faW1hZ2UpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDApOwogCiAgICAgaWYgKCFtX2Zy
YW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKQotICAgICAgICByZXR1cm4gQ0dJbWFnZVJl
dGFpbihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSk7CisgICAgICAgIHJldHVybiBtX2ZyYW1lc1tp
bmRleF0ubV9pbWFnZTsKIAotICAgIHJldHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgo
aW5kZXgpOworICAgIHJldHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRl
eCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKaW5kZXggNmMwM2EyY2VmODQ2MDY1NjFl
YTA3ZWI5MjhmMWNmMjk1ZjlmNWUzNi4uN2ExM2JiNTg0NjcwOGQzN2UwMmJkM2RkNjcyM2MyN2E0
OTUxNzZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTMzMywxMCArMzMzLDEwIEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBh
ZG9wdENGKGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApKTsKKyAgICAgICAgbV9kZWNvZGVk
SW1hZ2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgICAgICBtX2Nn
SW1hZ2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jZ0lt
YWdlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgbV9j
Z0ltYWdlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS5nZXQoKTsKICAg
ICBpZiAoIW1fY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MzYsNyArNTM2
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25l
ZCBjaGFyKiBpbWFnZVBpeGVscywgaW50IGltYWcKICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6
ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbWFnZUhlaWdodCk7CiAgICAg
Y29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsK
LSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLmdldCgpLCBpbWFnZVNpemUsIGNh
bnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZUNv
cHkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2Fu
dmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29w
eSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBh
NDQ5NjU0MDQ2YWU4ZjEwYWJhZDE2NDE1ZTY0NjBhZGJiYmI4ZTg4Li4xNjIwOWFmNTM0NDgxZGI0
Y2RkZDhiNDIzY2U3YmYyYTQwYjBkYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMTEsOCAr
MzExLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBmbG9hdCBhZGp1c3RlZFggPSBw
aGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRlZCB0aGUgY29udGV4
dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0cmFjdCBpdCBvdXQu
CiAgICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAocGhhc2UueSgpIC0g
ZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0
ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKIAotICAgIENHSW1hZ2VSZWYg
dGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBmbG9h
dCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UpOworICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiB0aWxlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CiAKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2U7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzI2LDEz
ICszMjYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICAgICAgLy8gQ29weWluZyBh
IHN1Yi1pbWFnZSBvdXQgb2YgYSBwYXJ0aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVj
b2Rpbmcgb2YgdGhlIG9yaWdpbmFsIGltYWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICAg
ICAgIC8vIGJlY2F1c2Ugc3ViLWltYWdlcyBhcmUgb25seSB1c2VkIGZvciBib3JkZXItaW1hZ2Us
IHdoaWNoIG9ubHkgcmVuZGVycyB3aGVuIHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkLgogICAg
ICAgICBBU1NFUlQoaCA9PSBpbWFnZS5oZWlnaHQoKSk7Ci0gICAgICAgIHN1YkltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwgdGlsZVJlY3QpKTsK
KyAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3Qo
dGlsZUltYWdlLmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQg
dG8gcGFpbnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBs
b2FkZWQgaW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhl
IGxlc3MgZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2Nh
bGVkVGlsZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
cGF0dGVyblRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGls
ZUltYWdlKTsKKyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS5nZXQoKSk7
CiAgICAgaWYgKHcgPT0gaW1hZ2Uuc2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCku
aGVpZ2h0KCkgJiYgIXNwYWNpbmcud2lkdGgoKSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogQ0cgc2VlbXMgdG8gc25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNp
emVzLiBXaGVuIHdlIGNhcmUgKGUuZy4gd2l0aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCks
CiAgICAgICAgIC8vIHdlIHNob3VsZCB0aWxlIGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2gg
dGhlIGxhc3QgaW1hZ2UgdG8gZml0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI1YWM0YWYxMzAxZTRi
NWIxYzcyMjZhNTU5ZjJmMzkzZWQ4YjQ5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTAsMCArMSw0MTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisKKyNpZiBVU0UoQ0cpCisK
KyNpbmNsdWRlICJDb3JlR3JhcGhpY3NTUEkuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9u
LmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCisjaWYgIVBMQVRGT1JNKElPUykKKyNpbmNsdWRl
IDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKyNlbHNlCisjaW5j
bHVkZSA8SW1hZ2VJTy9JbWFnZUlPLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2Vu
ZGlmCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8SW1hZ2VJTy9DR0lt
YWdlU291cmNlUHJpdmF0ZS5oPgorI2Vsc2UKK2NvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291
cmNlU3Vic2FtcGxlRmFjdG9yID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU3Vic2FtcGxlRmFjdG9y
Iik7Citjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVNvdXJjZVNob3VsZENhY2hlSW1tZWRpYXRl
bHkgPSBDRlNUUigia0NHSW1hZ2VTb3VyY2VTaG91bGRDYWNoZUltbWVkaWF0ZWx5Iik7CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY29uc3QgQ0ZTdHJpbmdSZWYgV2ViQ29y
ZUNHSW1hZ2VQcm9wZXJ0eUFQTkdVbmNsYW1wZWREZWxheVRpbWUgPSBDRlNUUigiVW5jbGFtcGVk
RGVsYXlUaW1lIik7Citjb25zdCBDRlN0cmluZ1JlZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBO
R0RlbGF5VGltZSA9IENGU1RSKCJEZWxheVRpbWUiKTsKK2NvbnN0IENGU3RyaW5nUmVmIFdlYkNv
cmVDR0ltYWdlUHJvcGVydHlBUE5HTG9vcENvdW50ID0gQ0ZTVFIoIkxvb3BDb3VudCIpOworCitj
b25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVNvdXJjZVNob3VsZFByZWZlclJHQjMyID0gQ0ZTVFIo
ImtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdCMzIiKTsKK2NvbnN0IENGU3RyaW5nUmVmIGtD
R0ltYWdlU291cmNlU2tpcE1ldGFkYXRhID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU2tpcE1ldGFk
YXRhIik7CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjcmVhdGVJbWFnZVNv
dXJjZU9wdGlvbnMoU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBEZWNvZGVNb2Rl
IGRlY29kZU1vZGUpCit7CisgICAgY29uc3QgQ0ZJbmRleCBiYXNpY09wdGlvbnMgPSAzOworICAg
IGNvbnN0IHZvaWQqIGtleXNbYmFzaWNPcHRpb25zICsgMl0gPSB7IGtDR0ltYWdlU291cmNlU2hv
dWxkQ2FjaGUsIGtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdCMzIsIGtDR0ltYWdlU291cmNl
U2tpcE1ldGFkYXRhIH07CisgICAgY29uc3Qgdm9pZCogdmFsdWVzW2Jhc2ljT3B0aW9ucyArIDJd
ID0geyBrQ0ZCb29sZWFuVHJ1ZSwga0NGQm9vbGVhblRydWUsIGtDRkJvb2xlYW5UcnVlIH07Cisg
ICAgQ0ZJbmRleCBudW1PcHRpb25zID0gYmFzaWNPcHRpb25zOworICAgIAorICAgIGlmIChzdWJz
YW1wbGluZ0xldmVsID4gMCkgeworICAgICAgICBzaG9ydCBjb25zdHJhaW5lZFN1YnNhbXBsaW5n
TGV2ZWwgPSBzdGQ6Om1pbjxzaG9ydD4oMywgc3RkOjptYXg8c2hvcnQ+KDAsIHN1YnNhbXBsaW5n
TGV2ZWwpKTsKKyAgICAgICAgaW50IHN1YnNhbXBsZUludCA9IDEgPDwgY29uc3RyYWluZWRTdWJz
YW1wbGluZ0xldmVsOyAvLyBbMC4uM10gPT4gWzEsIDIsIDQsIDhdCisgICAgICAgIFJldGFpblB0
cjxDRk51bWJlclJlZj4gc3Vic2FtcGxlTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShu
dWxscHRyLCAga0NGTnVtYmVySW50VHlwZSwgICZzdWJzYW1wbGVJbnQpKTsKKyAgICAgICAgCisg
ICAgICAgIGtleXNbbnVtT3B0aW9uc10gPSBrQ0dJbWFnZVNvdXJjZVN1YnNhbXBsZUZhY3RvcjsK
KyAgICAgICAgdmFsdWVzW251bU9wdGlvbnMrK10gPSBrQ0dJbWFnZVNvdXJjZVN1YnNhbXBsZUZh
Y3RvcjsKKyAgICB9CisgICAgCisgICAgaWYgKGRlY29kZU1vZGUgPT0gRGVjb2RlTW9kZTo6SW1t
ZWRpYXRlKSB7CisgICAgICAgIGtleXNbbnVtT3B0aW9uc10gPSBrQ0dJbWFnZVNvdXJjZVNob3Vs
ZENhY2hlSW1tZWRpYXRlbHk7CisgICAgICAgIHZhbHVlc1tudW1PcHRpb25zKytdID0ga0NGQm9v
bGVhblRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBhZG9wdENGKENGRGljdGlvbmFyeUNy
ZWF0ZShudWxscHRyLCBrZXlzLCB2YWx1ZXMsIG51bU9wdGlvbnMsICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKK30KKwor
c3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGltYWdlU291cmNlT3B0aW9ucyhTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBEZWNvZGVNb2RlIGRlY29kZU1vZGUg
PSBEZWNvZGVNb2RlOjpMYXp5KQoreworICAgIGlmIChzdWJzYW1wbGluZ0xldmVsIHx8IGRlY29k
ZU1vZGUgPT0gRGVjb2RlTW9kZTo6SW1tZWRpYXRlKQorICAgICAgICByZXR1cm4gY3JlYXRlSW1h
Z2VTb3VyY2VPcHRpb25zKHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kZU1vZGUpOworICAgIAorICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gb3B0aW9u
cyA9IGNyZWF0ZUltYWdlU291cmNlT3B0aW9ucygwLCBEZWNvZGVNb2RlOjpMYXp5KTsKKyAgICBy
ZXR1cm4gb3B0aW9uczsKK30KKworc3RhdGljIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25G
cm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1hZ2VQcm9wZXJ0aWVzKQoreworICAgIEFT
U0VSVChpbWFnZVByb3BlcnRpZXMpOworICAgIENGTnVtYmVyUmVmIG9yaWVudGF0aW9uUHJvcGVy
dHkgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1hZ2VQcm9wZXJ0aWVzLCBr
Q0dJbWFnZVByb3BlcnR5T3JpZW50YXRpb24pOworICAgIGlmICghb3JpZW50YXRpb25Qcm9wZXJ0
eSkKKyAgICAgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOworICAgIAorICAgIGlu
dCBleGlmVmFsdWU7CisgICAgQ0ZOdW1iZXJHZXRWYWx1ZShvcmllbnRhdGlvblByb3BlcnR5LCBr
Q0ZOdW1iZXJJbnRUeXBlLCAmZXhpZlZhbHVlKTsKKyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlv
bjo6ZnJvbUVYSUZWYWx1ZShleGlmVmFsdWUpOworfQorICAgIAorI2lmICFQTEFURk9STShDT0NP
QSkKK3NpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9p
ZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQoreworICAgIFNoYXJlZEJ1
ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7Cisg
ICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKKyAgICBpZiAocG9z
aXRpb24gPj0gc291cmNlU2l6ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgY29uc3Qg
Y2hhciogc291cmNlID0gc2hhcmVkQnVmZmVyLT5kYXRhKCkgKyBwb3NpdGlvbjsKKyAgICBzaXpl
X3QgYW1vdW50ID0gc3RkOjptaW48c2l6ZV90Pihjb3VudCwgc291cmNlU2l6ZSAtIHBvc2l0aW9u
KTsKKyAgICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGFtb3VudCk7CisgICAgcmV0dXJuIGFtb3Vu
dDsKK30KKwordm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8pCit7CisgICAgU2hh
cmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZv
KTsKKyAgICBzaGFyZWRCdWZmZXItPmRlcmVmKCk7Cit9CisjZW5kaWYKKworSW1hZ2VEZWNvZGVy
OjpJbWFnZURlY29kZXIoKQoreworICAgIG1fbmF0aXZlRGVjb2RlciA9IENHSW1hZ2VTb3VyY2VD
cmVhdGVJbmNyZW1lbnRhbCgwKTsKK30KKworU3Vic2FtcGxpbmdMZXZlbCBJbWFnZURlY29kZXI6
OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBt
YXhpbXVtU3Vic2FtcGxpbmdMZXZlbCkKK3sKKyAgICAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1w
bGluZyBsZXZlbHM6IDAgPSAxeCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KKyAg
ICBmbG9hdCBjbGFtcGVkU2NhbGUgPSBzdGQ6Om1heDxmbG9hdD4oMC4xMjUsIHN0ZDo6bWluPGZs
b2F0PigxLCBzY2FsZSkpOworICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9n
MmYoMSAvIGNsYW1wZWRTY2FsZSkpOworICAgIEFTU0VSVChyZXN1bHQgPj0wICYmIHJlc3VsdCA8
PSAzKTsKKyAgICByZXR1cm4gc3RkOjptaW4ocmVzdWx0LCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCk7Cit9CisKK3NpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJv
cGVydGllcygpCit7CisgICAgLy8gTWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2MvY2FsbG9jIGNh
bGxzIG9uIE1hYyBPUyAxMC42LjYsIHg4Nl82NC4KKyAgICAvLyBBIG5vbi16ZXJvIHZhbHVlIGVu
c3VyZXMgY2FjaGVkIGltYWdlcyB3aXRoIG5vIGRlY29kZWQgZnJhbWVzIHN0aWxsIGVudGVyCisg
ICAgLy8gdGhlIGxpdmUgZGVjb2RlZCByZXNvdXJjZXMgbGlzdCB3aGVuIHRoZSBDR0ltYWdlU291
cmNlIGRlY29kZXMgaW1hZ2UKKyAgICAvLyBwcm9wZXJ0aWVzLCBhbGxvd2luZyB0aGUgY2FjaGUg
dG8gcHJ1bmUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGltYWdlLgorICAgIC8vIFRoaXMgdmFsdWUg
aXMgbGlrZWx5IHRvIGJlIGluYWNjdXJhdGUgb24gb3RoZXIgcGxhdGZvcm1zLCBidXQgdGhlIG92
ZXJhbGwKKyAgICAvLyBiZWhhdmlvciBpcyB1bmNoYW5nZWQuCisgICAgcmV0dXJuIDEzMDg4Owor
fQorCitTdHJpbmcgSW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Cit7Cisg
ICAgQ0ZTdHJpbmdSZWYgaW1hZ2VTb3VyY2VUeXBlID0gQ0dJbWFnZVNvdXJjZUdldFR5cGUobV9u
YXRpdmVEZWNvZGVyKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9y
SW1hZ2VTb3VyY2VUeXBlKGltYWdlU291cmNlVHlwZSk7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVy
Ojppc1NpemVBdmFpbGFibGUoKSBjb25zdAoreworICAgIC8vIFJhZ25hcm9zIHllbGxzOiBUT08g
U09PTiEgWW91IGhhdmUgYXdha2VuZWQgbWUgVE9PIFNPT04sIEV4ZWN1dHVzIQorICAgIGlmIChD
R0ltYWdlU291cmNlR2V0U3RhdHVzKG1fbmF0aXZlRGVjb2RlcikgPCBrQ0dJbWFnZVN0YXR1c0lu
Y29tcGxldGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29w
eVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2RlciwgMCwgaW1hZ2VTb3VyY2VPcHRpb25z
KCkuZ2V0KCkpKTsKKyAgICBpZiAoIWltYWdlMFByb3BlcnRpZXMpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoaW1hZ2UwUHJv
cGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBpeGVsV2lkdGgpCisgICAgJiYgQ0ZEaWN0
aW9uYXJ5Q29udGFpbnNLZXkoaW1hZ2UwUHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0
eVBpeGVsSGVpZ2h0KTsKK30KKworSW50U2l6ZSBJbWFnZURlY29kZXI6OnNpemUoKSBjb25zdAor
eworICAgIGlmIChtX3NpemUuaXNFbXB0eSgpKQorICAgICAgICBtX3NpemUgPSBmcmFtZVNpemVB
dEluZGV4KDAsIDApOworICAgIHJldHVybiBtX3NpemU7Cit9CisKK3NpemVfdCBJbWFnZURlY29k
ZXI6OmZyYW1lQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBDR0ltYWdlU291cmNlR2V0Q291
bnQobV9uYXRpdmVEZWNvZGVyKTsKK30KKworaW50IEltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNv
dW50KCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVz
ID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXMobV9uYXRpdmVEZWNvZGVyLCBp
bWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOworICAgIGlmICghcHJvcGVydGllcykKKyAgICAg
ICAgcmV0dXJuIGNBbmltYXRpb25Mb29wT25jZTsKKyAgICAKKyAgICBDRkRpY3Rpb25hcnlSZWYg
Z2lmUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJv
cGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUdJRkRpY3Rpb25hcnkpOworICAgIGlmIChn
aWZQcm9wZXJ0aWVzKSB7CisgICAgICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShnaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5R0lGTG9v
cENvdW50KTsKKyAgICAgICAgCisgICAgICAgIC8vIE5vIHByb3BlcnR5IG1lYW5zIGxvb3Agb25j
ZS4KKyAgICAgICAgaWYgKCFudW0pCisgICAgICAgICAgICByZXR1cm4gY0FuaW1hdGlvbkxvb3BP
bmNlOworICAgICAgICAKKyAgICAgICAgaW50IGxvb3BDb3VudDsKKyAgICAgICAgQ0ZOdW1iZXJH
ZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZsb29wQ291bnQpOworICAgICAgICAKKyAg
ICAgICAgLy8gQSBwcm9wZXJ0eSB3aXRoIHZhbHVlIDAgbWVhbnMgbG9vcCBmb3JldmVyLgorICAg
ICAgICByZXR1cm4gbG9vcENvdW50ID8gbG9vcENvdW50IDogY0FuaW1hdGlvbkxvb3BJbmZpbml0
ZTsKKyAgICB9CisgICAgCisgICAgQ0ZEaWN0aW9uYXJ5UmVmIHBuZ1Byb3BlcnRpZXMgPSAoQ0ZE
aWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0lt
YWdlUHJvcGVydHlQTkdEaWN0aW9uYXJ5KTsKKyAgICBpZiAocG5nUHJvcGVydGllcykgeworICAg
ICAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
cG5nUHJvcGVydGllcywgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdMb29wQ291bnQpOworICAg
ICAgICBpZiAoIW51bSkKKyAgICAgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7Cisg
ICAgICAgIAorICAgICAgICBpbnQgbG9vcENvdW50OworICAgICAgICBDRk51bWJlckdldFZhbHVl
KG51bSwga0NGTnVtYmVySW50VHlwZSwgJmxvb3BDb3VudCk7CisgICAgICAgIHJldHVybiBsb29w
Q291bnQgPyBsb29wQ291bnQgOiBjQW5pbWF0aW9uTG9vcEluZmluaXRlOworICAgIH0KKyAgICAK
KyAgICAvLyBUdXJucyBvdXQgd2UncmUgbm90IGFuIGFuaW1hdGVkIGltYWdlIGFmdGVyIGFsbCwg
c28gd2UgZG9uJ3QgYW5pbWF0ZS4KKyAgICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7Cit9CisKK2Jv
b2wgSW1hZ2VEZWNvZGVyOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAorewor
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1h
Z2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLCAwLCBpbWFnZVNv
dXJjZU9wdGlvbnMoKS5nZXQoKSkpOworICAgIGlmICghcHJvcGVydGllcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIGludCB4ID0gLTEsIHkgPSAtMTsKKyAgICBDRk51bWJlclJl
ZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQo
KSwgQ0ZTVFIoImhvdHNwb3RYIikpOworICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdldFZhbHVl
KG51bSwga0NGTnVtYmVySW50VHlwZSwgJngpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMu
Z2V0KCksIENGU1RSKCJob3RzcG90WSIpKTsKKyAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRW
YWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIGlmICh4IDwgMCB8fCB5IDwgMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIGhvdFNwb3QgPSBJbnRQb2ludCh4LCB5KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
SW50U2l6ZSBJbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9w
ZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMo
c3Vic2FtcGxpbmdMZXZlbCkuZ2V0KCkpKTsKKyAgICAKKyAgICBpZiAoIXByb3BlcnRpZXMpCisg
ICAgICAgIHJldHVybiB7IH07CisgICAgCisgICAgaW50IHdpZHRoID0gMDsKKyAgICBpbnQgaGVp
Z2h0ID0gMDsKKyAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBpeGVsV2lkdGgpOwor
ICAgIGlmIChudW0pCisgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRU
eXBlLCAmd2lkdGgpOworICAgIAorICAgIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxIZWlnaHQpOwor
ICAgIGlmIChudW0pCisgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRU
eXBlLCAmaGVpZ2h0KTsKKyAgICAKKyAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsK
K30KKworYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAoreworICAgIEFTU0VSVChmcmFtZUNvdW50KCkpOworICAgIHJldHVybiBDR0lt
YWdlU291cmNlR2V0U3RhdHVzQXRJbmRleChtX25hdGl2ZURlY29kZXIsIGluZGV4KSA9PSBrQ0dJ
bWFnZVN0YXR1c0NvbXBsZXRlOworfQorCitJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6
b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVBy
b3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2RlciwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9u
cygpLmdldCgpKSk7CisgICAgaWYgKCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4gRGVmYXVs
dEltYWdlT3JpZW50YXRpb247CisgICAgCisgICAgcmV0dXJuIG9yaWVudGF0aW9uRnJvbVByb3Bl
cnRpZXMocHJvcGVydGllcy5nZXQoKSk7Cit9CisKK2Zsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVE
dXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIGZsb2F0IGR1cmF0aW9u
ID0gMDsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRD
RihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2RlciwgaW5k
ZXgsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7CisgICAgaWYgKHByb3BlcnRpZXMpIHsK
KyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGdpZlByb3BlcnRpZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVm
KUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlH
SUZEaWN0aW9uYXJ5KTsKKyAgICAgICAgaWYgKGdpZlByb3BlcnRpZXMpIHsKKyAgICAgICAgICAg
IGlmIChDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
Z2lmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUdJRlVuY2xhbXBlZERlbGF5VGltZSkpIHsK
KyAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIHVuY2xhbXBlZCBmcmFtZSBkZWxheSBpZiBpdCBl
eGlzdHMuCisgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckZs
b2F0VHlwZSwgJmR1cmF0aW9uKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoQ0ZOdW1iZXJSZWYg
bnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGdpZlByb3BlcnRpZXMsIGtD
R0ltYWdlUHJvcGVydHlHSUZEZWxheVRpbWUpKSB7CisgICAgICAgICAgICAgICAgLy8gRmFsbCBi
YWNrIHRvIHRoZSBjbGFtcGVkIGZyYW1lIGRlbGF5IGlmIHRoZSB1bmNsYW1wZWQgZnJhbWUgZGVs
YXkgZG9lcyBub3QgZXhpc3QuCisgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0s
IGtDRk51bWJlckZsb2F0VHlwZSwgJmR1cmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHBuZ1Byb3BlcnRpZXMgPSAoQ0ZE
aWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0lt
YWdlUHJvcGVydHlQTkdEaWN0aW9uYXJ5KTsKKyAgICAgICAgaWYgKHBuZ1Byb3BlcnRpZXMpIHsK
KyAgICAgICAgICAgIGlmIChDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUocG5nUHJvcGVydGllcywgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdVbmNs
YW1wZWREZWxheVRpbWUpKQorICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBr
Q0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7CisgICAgICAgICAgICBlbHNlIGlmIChDRk51
bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocG5nUHJvcGVy
dGllcywgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdEZWxheVRpbWUpKQorICAgICAgICAgICAg
ICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gTWFueSBhbm5veWluZyBhZHMgc3BlY2lm
eSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBvc3Np
YmxlLgorICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94J3MgYmVoYXZpb3IgYW5kIHVzZSBhIGR1cmF0
aW9uIG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0aGF0IHNwZWNpZnkKKyAgICAvLyBhIGR1cmF0
aW9uIG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzc2ODkzMDA+IGFuZCA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zNjA4Mj4KKyAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICBp
ZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAgICAgIHJldHVybiAwLjFmOworICAgIHJldHVybiBk
dXJhdGlvbjsKK30KKworYm9vbCBJbWFnZURlY29kZXI6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleChzaXplX3QpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleCht
X25hdGl2ZURlY29kZXIsIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7CisgICAgaWYg
KCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgQ0ZEaWN0aW9u
YXJ5UmVmIGpmaWZQcm9wZXJ0aWVzID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5SkZJRkRp
Y3Rpb25hcnkpKTsKKyAgICBpZiAoamZpZlByb3BlcnRpZXMpIHsKKyAgICAgICAgQ0ZCb29sZWFu
UmVmIGlzUHJvZ0NGQm9vbCA9IHN0YXRpY19jYXN0PENGQm9vbGVhblJlZj4oQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoamZpZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlKRklGSXNQcm9ncmVzc2l2
ZSkpOworICAgICAgICBpZiAoaXNQcm9nQ0ZCb29sKSB7CisgICAgICAgICAgICBib29sIGlzUHJv
Z3Jlc3NpdmUgPSBDRkJvb2xlYW5HZXRWYWx1ZShpc1Byb2dDRkJvb2wpOworICAgICAgICAgICAg
Ly8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzUxODQ2NTU+IC0gSGFuZyByZW5kZXJp
bmcgdmVyeSBsYXJnZSBwcm9ncmVzc2l2ZSBKUEVHLiBEZWNvZGluZyBwcm9ncmVzc2l2ZQorICAg
ICAgICAgICAgLy8gaW1hZ2VzIGhhbmdzIGZvciBhIHZlcnkgbG9uZyB0aW1lIHJpZ2h0IG5vdy4g
VW50aWwgdGhpcyBpcyBmaXhlZCwgZG9uJ3Qgc3ViLXNhbXBsZSBwcm9ncmVzc2l2ZSBpbWFnZXMu
IFRoaXMKKyAgICAgICAgICAgIC8vIHdpbGwgY2F1c2UgdGhlbSB0byBmYWlsIG91ciBsYXJnZSBp
bWFnZSBjaGVjayBhbmQgdGhleSB3b24ndCBiZSBkZWNvZGVkLgorICAgICAgICAgICAgLy8gRklY
TUU6IFJlbW92ZSBvbmNlIHVuZGVybHlpbmcgaXNzdWUgaXMgZml4ZWQgKDxyZGFyOi8vcHJvYmxl
bS81MTkxNDE4PikKKyAgICAgICAgICAgIHJldHVybiAhaXNQcm9ncmVzc2l2ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbWFnZURlY29kZXI6
OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoIWZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAK
KyAgICBDRlN0cmluZ1JlZiBpbWFnZVR5cGUgPSBDR0ltYWdlU291cmNlR2V0VHlwZShtX25hdGl2
ZURlY29kZXIpOworICAgIAorICAgIC8vIFJldHVybiBmYWxzZSBpZiB0aGVyZSBpcyBubyBpbWFn
ZSB0eXBlIG9yIHRoZSBpbWFnZSB0eXBlIGlzIEpQRUcsIGJlY2F1c2UKKyAgICAvLyBKUEVHIGRv
ZXMgbm90IHN1cHBvcnQgYWxwaGEgdHJhbnNwYXJlbmN5LgorICAgIGlmICghaW1hZ2VUeXBlIHx8
IENGRXF1YWwoaW1hZ2VUeXBlLCBDRlNUUigicHVibGljLmpwZWciKSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICAvLyBGSVhNRTogQ291bGQgcmV0dXJuIGZhbHNlIGZvciBvdGhl
ciBub24tdHJhbnNwYXJlbnQgaW1hZ2UgZm9ybWF0cy4KKyAgICAvLyBGSVhNRTogQ291bGQgbWF5
YmUgcmV0dXJuIGZhbHNlIGZvciBhIEdJRiBGcmFtZSBpZiB3ZSBoYXZlIGVub3VnaCBpbmZvIGlu
IHRoZSBHSUYgcHJvcGVydGllcyBkaWN0aW9uYXJ5CisgICAgLy8gdG8gZGV0ZXJtaW5lIHdoZXRo
ZXIgb3Igbm90IGEgdHJhbnNwYXJlbnQgY29sb3Igd2FzIGRlZmluZWQuCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3Vuc2lnbmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0Cit7CisgICAg
SW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKTsKKyAgICByZXR1cm4gZnJhbWVTaXplLndpZHRoKCkgKiBmcmFtZVNpemUuaGVpZ2h0KCkg
KiA0OworfQorCitQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgRGVjb2RlTW9kZSBkZWNvZGVNb2RlKSBjb25zdAoreworICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUltYWdlQXRJbmRleChtX25h
dGl2ZURlY29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoc3Vic2FtcGxpbmdMZXZlbCwg
ZGVjb2RlTW9kZSkuZ2V0KCkpKTsKKyAgICAgICAgCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8v
IDxyZGFyOi8vcHJvYmxlbS83MzcxMTk4PiAtIENvcmVHcmFwaGljcyBjaGFuZ2VkIHRoZSBkZWZh
dWx0IGNhY2hpbmcgYmVoYXZpb3VyIGluIGlPUyA0LjAgdG8ga0NHSW1hZ2VDYWNoaW5nVHJhbnNp
ZW50CisgICAgLy8gd2hpY2ggY2F1c2VkIGEgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBmb3IgdXMg
c2luY2UgdGhlIGltYWdlcyBoYWQgdG8gYmUgcmVzYW1wbGVkL3JlY3JlYXRlZCBldmVyeSB0aW1l
IHdlIGNhbGxlZAorICAgIC8vIENHQ29udGV4dERyYXdJbWFnZS4gV2Ugbm93IHRlbGwgQ0cgdG8g
Y2FjaGUgdGhlIGRyYXduIGltYWdlcy4gU2VlIGFsc28gPHJkYXI6Ly9wcm9ibGVtLzE0MzY2NzU1
PiAtCisgICAgLy8gQ29yZUdyYXBoaWNzIG5lZWRzIHRvIHVuLWRlcHJlY2F0ZSBrQ0dJbWFnZUNh
Y2hpbmdUZW1wb3Jhcnkgc2luY2UgaXQncyBzdGlsbCBub3QgdGhlIGRlZmF1bHQuCisjaWYgQ09N
UElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisjZW5kaWYK
KyAgICAgICAgQ0dJbWFnZVNldENhY2hpbmdGbGFncyhpbWFnZS5nZXQoKSwga0NHSW1hZ2VDYWNo
aW5nVGVtcG9yYXJ5KTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKKyNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyAgICAgICAgCisgICAg
Q0ZTdHJpbmdSZWYgaW1hZ2VVVEkgPSBDR0ltYWdlU291cmNlR2V0VHlwZShtX25hdGl2ZURlY29k
ZXIpOworICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB4Ym1VVEkgPSBDRlNUUigicHVibGlj
LnhiaXRtYXAtaW1hZ2UiKTsKKworICAgIGlmICghaW1hZ2VVVEkpCisgICAgICAgIHJldHVybiBp
bWFnZTsKKworICAgIGlmICghQ0ZFcXVhbChpbWFnZVVUSSwgeGJtVVRJKSkKKyAgICAgICAgcmV0
dXJuIGltYWdlOworCisgICAgLy8gSWYgaXQgaXMgYW4geGJtIGltYWdlLCBtYXNrIG91dCBhbGwg
dGhlIHdoaXRlIGFyZWFzIHRvIHJlbmRlciB0aGVtIHRyYW5zcGFyZW50LgorICAgIGNvbnN0IENH
RmxvYXQgbWFza2luZ0NvbG9yc1s2XSA9IHsyNTUsIDI1NSwgIDI1NSwgMjU1LCAyNTUsIDI1NX07
CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1hc2tlZEltYWdlID0gYWRvcHRDRihDR0ltYWdl
Q3JlYXRlV2l0aE1hc2tpbmdDb2xvcnMoaW1hZ2UuZ2V0KCksIG1hc2tpbmdDb2xvcnMpKTsKKyAg
ICByZXR1cm4gbWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6IGltYWdlOworfQorICAgIAordm9p
ZCBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBPbiBNYWMgdGhlIE5TRGF0
YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0
aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBTaGFyZWRC
dWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3Vu
ZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKKyAgICAvLyByZWFsbHkgbG9va2luZyBh
dCB0aGUgU2hhcmVkQnVmZmVyLgorICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZl
RGVjb2RlciwgZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7Cisj
ZWxzZQorICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1
ZmZlci4KKyAgICBkYXRhLT5yZWYoKTsKKyAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3Np
dGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2Ug
U2hhcmVkQnVmZmVyCisgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24g
dGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gK
KyAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2Fs
bGJhY2suCisgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFj
a3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVm
ZmVyUmVsZWFzZSB9OworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChkYXRhLCBkYXRhLT5zaXpl
KCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJv
dmlkZXIobV9uYXRpdmVEZWNvZGVyLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZl
ZCk7CisjZW5kaWYKK30KKworfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NTYxYWI5ZTE3NzkxNzJiZjNlZDI3ZmEwNDBhMGU0MTkxYmExNjZkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmgKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSW1hZ2VEZWNvZGVyX2gKKyNkZWZpbmUgSW1hZ2VEZWNvZGVyX2gKKworI2lu
Y2x1ZGUgIkltYWdlU291cmNlLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1N0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKTsKKworZW51bSBjbGFzcyBEZWNvZGVNb2RlIHsgSW1tZWRpYXRl
LCBMYXp5IH07CisKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgSW1hZ2VEZWNvZGVyIHsK
K3B1YmxpYzoKKyAgICBJbWFnZURlY29kZXIoKTsKKyAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIo
KSB7IH0KKworICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0
aWVzKCk7CisgICAgc3RhdGljIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNj
YWxlKGZsb2F0IHNjYWxlLCBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1wbGluZ0xldmVs
KTsKKworICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OworICAgIGJvb2wgaXNT
aXplQXZhaWxhYmxlKCkgY29uc3Q7CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgc2l6
ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKKyAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7
CisgICAgYm9vbCBnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdDsKKworICAgIElu
dFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0Owor
ICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgIEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7CisKKyAgICBmbG9h
dCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgIGJvb2wgZnJhbWVIYXNB
bHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZy
YW1lQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApIGNvbnN0OworCisgICAgUGFzc05hdGl2ZUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwg
RGVjb2RlTW9kZSA9IERlY29kZU1vZGU6OkxhenkpIGNvbnN0OworCisgICAgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAKK3Byb3RlY3RlZDoK
KyAgICBtdXRhYmxlIEludFNpemUgbV9zaXplOworICAgIENHSW1hZ2VTb3VyY2VSZWYgbV9uYXRp
dmVEZWNvZGVyOworfTsKKyAgICAKK30KKworI2VuZGlmIC8vIEltYWdlRGVjb2Rlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGEwMTJiNmY1N2JmNTM5MzA2NDc3
N2I2YzEwOTM2NmIyNGM0NDVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0cuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5j
bHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgotCi0jaW5jbHVkZSAiQ29yZUdyYXBoaWNzU1BJLmgiCi0j
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5j
bHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2lm
ICFQTEFURk9STShJT1MpCi0jaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmg+Ci0jZWxzZQotI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbXBvcnQgPEltYWdlSU8vQ0dJbWFnZVNvdXJjZVByaXZhdGUuaD4KLSNlbHNlCi1jb25z
dCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVNvdXJjZVN1YnNhbXBsZUZhY3RvciA9IENGU1RSKCJrQ0dJ
bWFnZVNvdXJjZVN1YnNhbXBsZUZhY3RvciIpOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY29uc3QgQ0ZTdHJpbmdSZWYgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdVbmNsYW1w
ZWREZWxheVRpbWUgPSBDRlNUUigiVW5jbGFtcGVkRGVsYXlUaW1lIik7Ci1jb25zdCBDRlN0cmlu
Z1JlZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR0RlbGF5VGltZSA9IENGU1RSKCJEZWxheVRp
bWUiKTsKLWNvbnN0IENGU3RyaW5nUmVmIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HTG9vcENv
dW50ID0gQ0ZTVFIoIkxvb3BDb3VudCIpOwotCi1jb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVNv
dXJjZVNob3VsZFByZWZlclJHQjMyID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVy
UkdCMzIiKTsKLWNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291cmNlU2tpcE1ldGFkYXRhID0g
Q0ZTVFIoImtDR0ltYWdlU291cmNlU2tpcE1ldGFkYXRhIik7Ci0KLSNpZiAhUExBVEZPUk0oQ09D
T0EpCi1zaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZv
aWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKLXsKLSAgICBTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwot
ICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7Ci0gICAgaWYgKHBv
c2l0aW9uID49IHNvdXJjZVNpemUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgY2hh
ciogc291cmNlID0gc2hhcmVkQnVmZmVyLT5kYXRhKCkgKyBwb3NpdGlvbjsKLSAgICBzaXplX3Qg
YW1vdW50ID0gc3RkOjptaW48c2l6ZV90Pihjb3VudCwgc291cmNlU2l6ZSAtIHBvc2l0aW9uKTsK
LSAgICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGFtb3VudCk7Ci0gICAgcmV0dXJuIGFtb3VudDsK
LX0KLQotdm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8pCi17Ci0gICAgU2hhcmVk
QnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsK
LSAgICBzaGFyZWRCdWZmZXItPmRlcmVmKCk7Ci19Ci0jZW5kaWYKLQotSW1hZ2VTb3VyY2U6Oklt
YWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQotICAgIDogbV9kZWNvZGVyKDApCi17Ci0gICAgLy8gRklYTUU6
IEFscGhhT3B0aW9uIGFuZCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBhcmUgaWdub3JlZC4K
LX0KLQotSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCi17Ci0gICAgY2xlYXIodHJ1ZSk7Ci19
Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1lcywgc2l6ZV90
LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotICAgIC8vIFJl
Y2VudCB2ZXJzaW9ucyBvZiBJbWFnZUlPIGRpc2NhcmQgcHJldmlvdXNseSBkZWNvZGVkIGltYWdl
IGZyYW1lcyBpZiB0aGUgY2xpZW50Ci0gICAgLy8gYXBwbGljYXRpb24gbm8gbG9uZ2VyIGhvbGRz
IHJlZmVyZW5jZXMgdG8gdGhlbSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHRocm93IGF3YXkKLSAg
ICAvLyB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZCB0byBkZXN0cm95
IGFsbCBvZiB0aGUgZnJhbWVzLgotICAgIGlmICghZGVzdHJveUFsbEZyYW1lcykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKG1fZGVjb2RlcikgewotICAgICAgICBDRlJlbGVhc2UobV9kZWNv
ZGVyKTsKLSAgICAgICAgbV9kZWNvZGVyID0gMDsKLSAgICB9Ci0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLQotc3RhdGljIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyhTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgaWYgKCFzdWJzYW1wbGluZ0xldmVsKSB7Ci0g
ICAgICAgIGNvbnN0IHVuc2lnbmVkIG51bU9wdGlvbnMgPSAzOwotICAgICAgICBjb25zdCB2b2lk
KiBrZXlzW251bU9wdGlvbnNdID0geyBrQ0dJbWFnZVNvdXJjZVNob3VsZENhY2hlLCBrQ0dJbWFn
ZVNvdXJjZVNob3VsZFByZWZlclJHQjMyLCBrQ0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSB9Owot
ICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbbnVtT3B0aW9uc10gPSB7IGtDRkJvb2xlYW5UcnVl
LCBrQ0ZCb29sZWFuVHJ1ZSwga0NGQm9vbGVhblRydWUgfTsKLSAgICAgICAgcmV0dXJuIENGRGlj
dGlvbmFyeUNyZWF0ZShudWxscHRyLCBrZXlzLCB2YWx1ZXMsIG51bU9wdGlvbnMsICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
OwotICAgIH0KLQotICAgIHNob3J0IGNvbnN0cmFpbmVkU3Vic2FtcGxpbmdMZXZlbCA9IHN0ZDo6
bWluPHNob3J0PigzLCBzdGQ6Om1heDxzaG9ydD4oMCwgc3Vic2FtcGxpbmdMZXZlbCkpOwotICAg
IGludCBzdWJzYW1wbGVJbnQgPSAxIDw8IGNvbnN0cmFpbmVkU3Vic2FtcGxpbmdMZXZlbDsgLy8g
WzAuLjNdID0+IFsxLCAyLCA0LCA4XQotCi0gICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBzdWJz
YW1wbGVOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsICBrQ0ZOdW1iZXJJ
bnRUeXBlLCAgJnN1YnNhbXBsZUludCkpOwotICAgIGNvbnN0IENGSW5kZXggbnVtT3B0aW9ucyA9
IDQ7Ci0gICAgY29uc3Qgdm9pZCoga2V5c1tudW1PcHRpb25zXSA9IHsga0NHSW1hZ2VTb3VyY2VT
aG91bGRDYWNoZSwga0NHSW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0IzMiwga0NHSW1hZ2VTb3Vy
Y2VTa2lwTWV0YWRhdGEsIGtDR0ltYWdlU291cmNlU3Vic2FtcGxlRmFjdG9yIH07Ci0gICAgY29u
c3Qgdm9pZCogdmFsdWVzW251bU9wdGlvbnNdID0geyBrQ0ZCb29sZWFuVHJ1ZSwga0NGQm9vbGVh
blRydWUsIGtDRkJvb2xlYW5UcnVlLCBzdWJzYW1wbGVOdW1iZXIuZ2V0KCkgfTsKLSAgICByZXR1
cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUobnVsbHB0ciwga2V5cywgdmFsdWVzLCBudW1P
cHRpb25zLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBpbWFnZVNvdXJjZU9wdGlvbnMoU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0g
MCkKLXsKLSAgICBpZiAoc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlt
YWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsKTsKLQotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gb3B0aW9ucyA9IGNyZWF0ZUltYWdl
U291cmNlT3B0aW9ucygwKTsKLSAgICByZXR1cm4gb3B0aW9uczsKLX0KLQotYm9vbCBJbWFnZVNv
dXJjZTo6aW5pdGlhbGl6ZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2RlY29kZXI7Ci19Ci0K
LXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoIW1fZGVjb2RlcikK
LSAgICAgICAgbV9kZWNvZGVyID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKDApOwot
ICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBz
ZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2Uu
ICBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eQotICAgIC8vIHRvIHdyYXAgaXRzZWxmIGlu
c2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMg
cmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBk
YXRlRGF0YShtX2RlY29kZXIsIGRhdGEtPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVj
ZWl2ZWQpOwotI2Vsc2UKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVyID0g
Q0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKDApOwotICAgIC8vIENyZWF0ZSBhIENHRGF0
YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLT5yZWYoKTsKLSAg
ICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0
aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCi0gICAgLy8gZG9lcyBu
b3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFu
dGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKLSAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZv
ciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCi0gICAgQ0dEYXRhUHJvdmlkZXJE
aXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZURpcmVjdChkYXRhLCBkYXRhLT5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwot
ICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9kZWNvZGVyLCBkYXRhUHJvdmlk
ZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIEltYWdlU291
cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2RlY29kZXIpCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBDRlN0cmluZ1JlZiBpbWFnZVNvdXJjZVR5cGUg
PSBDR0ltYWdlU291cmNlR2V0VHlwZShtX2RlY29kZXIpOwotICAgIHJldHVybiBXZWJDb3JlOjpw
cmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUoaW1hZ2VTb3VyY2VUeXBlKTsKLX0K
LQotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxl
KGZsb2F0IHNjYWxlKSBjb25zdAotewotICAgIC8vIFRoZXJlIGFyZSBmb3VyIHN1YnNhbXBsaW5n
IGxldmVsczogMCA9IDF4LCAxID0gMC41eCwgMiA9IDAuMjV4LCAzID0gMC4xMjV4LgotICAgIGZs
b2F0IGNsYW1wZWRTY2FsZSA9IHN0ZDo6bWF4PGZsb2F0PigwLjEyNSwgc3RkOjptaW48ZmxvYXQ+
KDEsIHNjYWxlKSk7Ci0gICAgaW50IHJlc3VsdCA9IGNlaWxmKGxvZzJmKDEgLyBjbGFtcGVkU2Nh
bGUpKTsKLSAgICBBU1NFUlQocmVzdWx0ID49MCAmJiByZXN1bHQgPD0gMyk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKLXsKLSAg
ICAvLyBSYWduYXJvcyB5ZWxsczogVE9PIFNPT04hIFlvdSBoYXZlIGF3YWtlbmVkIG1lIFRPTyBT
T09OLCBFeGVjdXR1cyEKLSAgICBpZiAoQ0dJbWFnZVNvdXJjZUdldFN0YXR1cyhtX2RlY29kZXIp
IDwga0NHSW1hZ2VTdGF0dXNJbmNvbXBsZXRlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihD
R0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fZGVjb2RlciwgMCwgaW1hZ2VTb3Vy
Y2VPcHRpb25zKCkuZ2V0KCkpKTsKLSAgICBpZiAoIWltYWdlMFByb3BlcnRpZXMpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBDRkRpY3Rpb25hcnlDb250YWluc0tleShpbWFn
ZTBQcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxXaWR0aCkKLSAgICAgICAg
JiYgQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoaW1hZ2UwUHJvcGVydGllcy5nZXQoKSwga0NHSW1h
Z2VQcm9wZXJ0eVBpeGVsSGVpZ2h0KTsKLX0KLQotc3RhdGljIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb25Gcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1hZ2VQcm9wZXJ0aWVzKQot
ewotICAgIEFTU0VSVChpbWFnZVByb3BlcnRpZXMpOwotICAgIENGTnVtYmVyUmVmIG9yaWVudGF0
aW9uUHJvcGVydHkgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1hZ2VQcm9w
ZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5T3JpZW50YXRpb24pOwotICAgIGlmICghb3JpZW50YXRp
b25Qcm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOwotCi0g
ICAgaW50IGV4aWZWYWx1ZTsKLSAgICBDRk51bWJlckdldFZhbHVlKG9yaWVudGF0aW9uUHJvcGVy
dHksIGtDRk51bWJlckludFR5cGUsICZleGlmVmFsdWUpOwotICAgIHJldHVybiBJbWFnZU9yaWVu
dGF0aW9uOjpmcm9tRVhJRlZhbHVlKGV4aWZWYWx1ZSk7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6
OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0Ci17Ci0gICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJj
ZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX2RlY29kZXIsIDAsIGltYWdlU291cmNlT3B0aW9ucygp
LmdldCgpKSk7Ci0gICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBDRkRpY3Rpb25hcnlSZWYgamZpZlByb3BlcnRpZXMgPSBzdGF0aWNfY2FzdDxDRkRpY3Rp
b25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdl
UHJvcGVydHlKRklGRGljdGlvbmFyeSkpOwotICAgIGlmIChqZmlmUHJvcGVydGllcykgewotICAg
ICAgICBDRkJvb2xlYW5SZWYgaXNQcm9nQ0ZCb29sID0gc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShqZmlmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUpG
SUZJc1Byb2dyZXNzaXZlKSk7Ci0gICAgICAgIGlmIChpc1Byb2dDRkJvb2wpIHsKLSAgICAgICAg
ICAgIGJvb2wgaXNQcm9ncmVzc2l2ZSA9IENGQm9vbGVhbkdldFZhbHVlKGlzUHJvZ0NGQm9vbCk7
Ci0gICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNTE4NDY1NT4g
LSBIYW5nIHJlbmRlcmluZyB2ZXJ5IGxhcmdlIHByb2dyZXNzaXZlIEpQRUcuIERlY29kaW5nIHBy
b2dyZXNzaXZlCi0gICAgICAgICAgICAvLyBpbWFnZXMgaGFuZ3MgZm9yIGEgdmVyeSBsb25nIHRp
bWUgcmlnaHQgbm93LiBVbnRpbCB0aGlzIGlzIGZpeGVkLCBkb24ndCBzdWItc2FtcGxlIHByb2dy
ZXNzaXZlIGltYWdlcy4gVGhpcwotICAgICAgICAgICAgLy8gd2lsbCBjYXVzZSB0aGVtIHRvIGZh
aWwgb3VyIGxhcmdlIGltYWdlIGNoZWNrIGFuZCB0aGV5IHdvbid0IGJlIGRlY29kZWQuCi0gICAg
ICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgdW5kZXJseWluZyBpc3N1ZSBpcyBmaXhlZCAo
PHJkYXI6Ly9wcm9ibGVtLzUxOTE0MTg+KQotICAgICAgICAgICAgcmV0dXJuICFpc1Byb2dyZXNz
aXZlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUludFNpemUg
SW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlw
dGlvbikgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVz
ID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fZGVjb2Rlciwg
aW5kZXgsIGltYWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsKS5nZXQoKSkpOwotCi0g
ICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwotCi0gICAgaW50
IHdpZHRoID0gMDsKLSAgICBpbnQgaGVpZ2h0ID0gMDsKLSAgICBDRk51bWJlclJlZiBudW0gPSAo
Q0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1h
Z2VQcm9wZXJ0eVBpeGVsV2lkdGgpOwotICAgIGlmIChudW0pCi0gICAgICAgIENGTnVtYmVyR2V0
VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmd2lkdGgpOwotICAgIG51bSA9IChDRk51bWJl
clJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3Bl
cnR5UGl4ZWxIZWlnaHQpOwotICAgIGlmIChudW0pCi0gICAgICAgIENGTnVtYmVyR2V0VmFsdWUo
bnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaGVpZ2h0KTsKLQotICAgIGlmICgoZGVzY3JpcHRpb24u
cmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgJiYg
b3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzLmdldCgpKS51c2VzV2lkdGhBc0hl
aWdodCgpKQotICAgICAgICByZXR1cm4gSW50U2l6ZShoZWlnaHQsIHdpZHRoKTsKLQotICAgIHJl
dHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwotfQotCi1JbWFnZU9yaWVudGF0aW9uIEltYWdl
U291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3Vy
Y2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRp
b25zKCkuZ2V0KCkpKTsKLSAgICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBEZWZh
dWx0SW1hZ2VPcmllbnRhdGlvbjsKLQotICAgIHJldHVybiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0
aWVzKHByb3BlcnRpZXMuZ2V0KCkpOwotfQotCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplKElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikgY29uc3QKLXsKLSAgICByZXR1
cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBkZXNjcmlwdGlvbik7Ci19Ci0KLWJvb2wgSW1hZ2VT
b3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0Ci17Ci0gICAgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNv
cHlQcm9wZXJ0aWVzQXRJbmRleChtX2RlY29kZXIsIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdl
dCgpKSk7Ci0gICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBpbnQgeCA9IC0xLCB5ID0gLTE7Ci0gICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVm
KUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIp
KTsKLSAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5
cGUsICZ4KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbnVtID0gKENGTnVtYmVyUmVm
KUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WSIp
KTsKLSAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5
cGUsICZ5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHggPCAwIHx8IHkgPCAw
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBob3RTcG90ID0gSW50UG9pbnQoeCwgeSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVk
VG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKLXsKLSAgICAvLyBNZWFzdXJlZCBieSB0cmFj
aW5nIG1hbGxvYy9jYWxsb2MgY2FsbHMgb24gTWFjIE9TIDEwLjYuNiwgeDg2XzY0LgotICAgIC8v
IEEgbm9uLXplcm8gdmFsdWUgZW5zdXJlcyBjYWNoZWQgaW1hZ2VzIHdpdGggbm8gZGVjb2RlZCBm
cmFtZXMgc3RpbGwgZW50ZXIKLSAgICAvLyB0aGUgbGl2ZSBkZWNvZGVkIHJlc291cmNlcyBsaXN0
IHdoZW4gdGhlIENHSW1hZ2VTb3VyY2UgZGVjb2RlcyBpbWFnZQotICAgIC8vIHByb3BlcnRpZXMs
IGFsbG93aW5nIHRoZSBjYWNoZSB0byBwcnVuZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgaW1hZ2Uu
Ci0gICAgLy8gVGhpcyB2YWx1ZSBpcyBsaWtlbHkgdG8gYmUgaW5hY2N1cmF0ZSBvbiBvdGhlciBw
bGF0Zm9ybXMsIGJ1dCB0aGUgb3ZlcmFsbAotICAgIC8vIGJlaGF2aW9yIGlzIHVuY2hhbmdlZC4K
LSAgICByZXR1cm4gMTMwODg7Ci19Ci0gICAgCi1pbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25D
b3VudCgpCi17Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gY0FuaW1h
dGlvbkxvb3BPbmNlOwotCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGll
cyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzKG1fZGVjb2RlciwgaW1hZ2VT
b3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKLSAgICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJl
dHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7Ci0KLSAgICBDRkRpY3Rpb25hcnlSZWYgZ2lmUHJvcGVy
dGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5n
ZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUdJRkRpY3Rpb25hcnkpOwotICAgIGlmIChnaWZQcm9wZXJ0
aWVzKSB7Ci0gICAgICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25h
cnlHZXRWYWx1ZShnaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5R0lGTG9vcENvdW50KTsK
LQotICAgICAgICAvLyBObyBwcm9wZXJ0eSBtZWFucyBsb29wIG9uY2UuCi0gICAgICAgIGlmICgh
bnVtKQotICAgICAgICAgICAgcmV0dXJuIGNBbmltYXRpb25Mb29wT25jZTsKLQotICAgICAgICBp
bnQgbG9vcENvdW50OwotICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50
VHlwZSwgJmxvb3BDb3VudCk7Ci0KLSAgICAgICAgLy8gQSBwcm9wZXJ0eSB3aXRoIHZhbHVlIDAg
bWVhbnMgbG9vcCBmb3JldmVyLgotICAgICAgICByZXR1cm4gbG9vcENvdW50ID8gbG9vcENvdW50
IDogY0FuaW1hdGlvbkxvb3BJbmZpbml0ZTsKLSAgICB9Ci0KLSAgICBDRkRpY3Rpb25hcnlSZWYg
cG5nUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJv
cGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBOR0RpY3Rpb25hcnkpOwotICAgIGlmIChw
bmdQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5
QVBOR0xvb3BDb3VudCk7Ci0gICAgICAgIGlmICghbnVtKQotICAgICAgICAgICAgcmV0dXJuIGNB
bmltYXRpb25Mb29wT25jZTsKLQotICAgICAgICBpbnQgbG9vcENvdW50OwotICAgICAgICBDRk51
bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJmxvb3BDb3VudCk7Ci0gICAgICAg
IHJldHVybiBsb29wQ291bnQgPyBsb29wQ291bnQgOiBjQW5pbWF0aW9uTG9vcEluZmluaXRlOwot
ICAgIH0KLQotICAgIC8vIFR1cm5zIG91dCB3ZSdyZSBub3QgYW4gYW5pbWF0ZWQgaW1hZ2UgYWZ0
ZXIgYWxsLCBzbyB3ZSBkb24ndCBhbmltYXRlLgotICAgIHJldHVybiBjQW5pbWF0aW9uTm9uZTsK
LX0KLQotc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9kZWNvZGVyID8gQ0dJbWFnZVNvdXJjZUdldENvdW50KG1fZGVjb2RlcikgOiAwOwotfQot
Ci1DR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgaWYgKCFpbml0aWFs
aXplZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUltYWdlQXRJbmRleChtX2Rl
Y29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoc3Vic2FtcGxpbmdMZXZlbCkuZ2V0KCkp
KTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzM3MTE5OD4g
LSBDb3JlR3JhcGhpY3MgY2hhbmdlZCB0aGUgZGVmYXVsdCBjYWNoaW5nIGJlaGF2aW91ciBpbiBp
T1MgNC4wIHRvIGtDR0ltYWdlQ2FjaGluZ1RyYW5zaWVudAotICAgIC8vIHdoaWNoIGNhdXNlZCBh
IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gZm9yIHVzIHNpbmNlIHRoZSBpbWFnZXMgaGFkIHRvIGJl
IHJlc2FtcGxlZC9yZWNyZWF0ZWQgZXZlcnkgdGltZSB3ZSBjYWxsZWQKLSAgICAvLyBDR0NvbnRl
eHREcmF3SW1hZ2UuIFdlIG5vdyB0ZWxsIENHIHRvIGNhY2hlIHRoZSBkcmF3biBpbWFnZXMuIFNl
ZSBhbHNvIDxyZGFyOi8vcHJvYmxlbS8xNDM2Njc1NT4gLQotICAgIC8vIENvcmVHcmFwaGljcyBu
ZWVkcyB0byB1bi1kZXByZWNhdGUga0NHSW1hZ2VDYWNoaW5nVGVtcG9yYXJ5IHNpbmNlIGl0J3Mg
c3RpbGwgbm90IHRoZSBkZWZhdWx0LgotI2lmIENPTVBJTEVSKENMQU5HKQotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Rl
cHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotI2VuZGlmCi0gICAgQ0dJbWFnZVNldENhY2hpbmdGbGFn
cyhpbWFnZS5nZXQoKSwga0NHSW1hZ2VDYWNoaW5nVGVtcG9yYXJ5KTsKLSNpZiBDT01QSUxFUihD
TEFORykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgotI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykKLQotICAgIENGU3RyaW5nUmVmIGltYWdlVVRJID0gQ0dJbWFnZVNvdXJjZUdl
dFR5cGUobV9kZWNvZGVyKTsKLSAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgeGJtVVRJID0g
Q0ZTVFIoInB1YmxpYy54Yml0bWFwLWltYWdlIik7Ci0KLSAgICBpZiAoIWltYWdlVVRJKQotICAg
ICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOwotCi0gICAgaWYgKCFDRkVxdWFsKGltYWdlVVRJ
LCB4Ym1VVEkpKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOwotICAgIAotICAgIC8v
IElmIGl0IGlzIGFuIHhibSBpbWFnZSwgbWFzayBvdXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byBy
ZW5kZXIgdGhlbSB0cmFuc3BhcmVudC4KLSAgICBjb25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNb
Nl0gPSB7MjU1LCAyNTUsICAyNTUsIDI1NSwgMjU1LCAyNTV9OwotICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBtYXNrZWRJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhNYXNraW5nQ29s
b3JzKGltYWdlLmdldCgpLCBtYXNraW5nQ29sb3JzKSk7Ci0gICAgaWYgKCFtYXNrZWRJbWFnZSkK
LSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKLQotICAgIHJldHVybiBtYXNrZWRJbWFn
ZS5sZWFrUmVmKCk7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQotewotICAgIEFTU0VSVChmcmFtZUNvdW50KCkpOwotICAgIHJldHVy
biBDR0ltYWdlU291cmNlR2V0U3RhdHVzQXRJbmRleChtX2RlY29kZXIsIGluZGV4KSA9PSBrQ0dJ
bWFnZVN0YXR1c0NvbXBsZXRlOwotfQotCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAg
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
ZjsKLSAgICByZXR1cm4gZHVyYXRpb247Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFz
QWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhNRTogd2h5IGRvZXNuJ3QgdGhpcyByZXR1cm4gdHJ1ZT8K
LQotICAgIGlmICghZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgQ0ZTdHJpbmdSZWYgaW1hZ2VUeXBlID0gQ0dJbWFnZVNvdXJjZUdldFR5
cGUobV9kZWNvZGVyKTsKLQotICAgIC8vIFJldHVybiBmYWxzZSBpZiB0aGVyZSBpcyBubyBpbWFn
ZSB0eXBlIG9yIHRoZSBpbWFnZSB0eXBlIGlzIEpQRUcsIGJlY2F1c2UKLSAgICAvLyBKUEVHIGRv
ZXMgbm90IHN1cHBvcnQgYWxwaGEgdHJhbnNwYXJlbmN5LgotICAgIGlmICghaW1hZ2VUeXBlIHx8
IENGRXF1YWwoaW1hZ2VUeXBlLCBDRlNUUigicHVibGljLmpwZWciKSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBDb3VsZCByZXR1cm4gZmFsc2UgZm9yIG90aGVyIG5v
bi10cmFuc3BhcmVudCBpbWFnZSBmb3JtYXRzLgotICAgIC8vIEZJWE1FOiBDb3VsZCBtYXliZSBy
ZXR1cm4gZmFsc2UgZm9yIGEgR0lGIEZyYW1lIGlmIHdlIGhhdmUgZW5vdWdoIGluZm8gaW4gdGhl
IEdJRiBwcm9wZXJ0aWVzIGRpY3Rpb25hcnkKLSAgICAvLyB0byBkZXRlcm1pbmUgd2hldGhlciBv
ciBub3QgYSB0cmFuc3BhcmVudCBjb2xvciB3YXMgZGVmaW5lZC4KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAotewotICAgIEludFNp
emUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSk7Ci0g
ICAgcmV0dXJuIGZyYW1lU2l6ZS53aWR0aCgpICogZnJhbWVTaXplLmhlaWdodCgpICogNDsKLX0K
LQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKaW5kZXgg
YmE0MTU5N2FhMTEwMWRiNjI5MDIzZDI3M2IyMDBlNzgxZDMzYWFjOS4uNTljYzJjOWJlOGIzZmZl
MTExODZhNjg1ZDJlOGNmNTk0YzFkMzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCkBA
IC0yNjMsNyArMjYzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6
OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDAp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
ZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
ZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CiAgICAgICAgIC8vIDEuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0
LCBhc3N1bWUgbm8gUHJlbXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxw
aGEgdmFsdWUgaXMgMHhGRiBmb3IgZWFjaCBwaXhlbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KaW5kZXggMjE1OTE1ZjI4YTE5MjE3MjM5NmQ0
NmYwODZkMjI0OWI4MWQ5ZDc2YS4uZTE4MzNkMTk4MzBiMTA3NjYzNjY0YjYxMjg0NDU5N2Y4M2Zj
MGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0lj
b25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25J
T1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotSWNv
bjo6SWNvbihDR0ltYWdlUmVmIGltYWdlKQorSWNvbjo6SWNvbihOYXRpdmVJbWFnZVB0ciBpbWFn
ZSkKICAgICA6IG1fY2dJbWFnZShpbWFnZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBmZjA3MTMxYTYxZmNlZDA0NTg2
YjM3MmQ5YmEyMDc5YTk4NzNjMzhiLi5mYTAxMWFhODgxNjMwMzAwMDk0NDk4ZWJjMGZmY2E5ZmI5
YzMwMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0lt
YWdlTWFjLm1tCkBAIC05NSw3ICs5NSw3IEBAIENGRGF0YVJlZiBCaXRtYXBJbWFnZTo6Z2V0VElG
RlJlcHJlc2VudGF0aW9uKCkKIAogICAgIFZlY3RvcjxDR0ltYWdlUmVmPiBpbWFnZXM7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZyYW1lczsgKytpICkgewotICAgICAgICBDR0lt
YWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1hZ2VSZWYgY2dJ
bWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwogICAgICAgICBpZiAoY2dJbWFnZSkK
ICAgICAgICAgICAgIGltYWdlcy5hcHBlbmQoY2dJbWFnZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDgz
NWVjZjNmNGZlZWViOGEwZGZhOGQzNjk3MzEyOGYzYjgwN2I5MjYuLjQ3MDczYzBlZDY5MGUwNDRm
ZmIzYTk0ZTU4NmYyNjAyNzlkMWM0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgQ0dJbWFn
ZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9
IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwogICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFn
ZUdldEhlaWdodChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgp
KSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6
ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVu
dEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4
IDI5YTIwMjNkYjYzYTkxNDM0YzM5NDhlYWE1NTIzYmI2MWZlODEwNzUuLjk3ZWQwOTc5MzVjNTFm
YzIwYTg0NWM5NThlMTU2OThkMjAwMGRiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTkzLDcgKzkzLDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNz
Q29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVD
b3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChpKTsKKyAg
ICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4
KGkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggYmJhZTkxZmE4
ZTNjMDY2NDQ3YzQ2NGQ2ZTMxMjAwZGUyNDhjZTgzZi4uOTFjOTJlOTEyY2MyMTg5MmY2NTllNjdh
OTU5NTcxZmJkZDAwMjdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0lt
YWdlTWFjLm1tCkBAIC05MSw3ICs5MSw3IEBAIFJldGFpblB0cjxOU0ltYWdlPiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpCiAgICAg
aWYgKGlzPEJpdG1hcEltYWdlPigqaW1hZ2UpKSB7CiAgICAgICAgIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb247CiAgICAgICAgIEJpdG1hcEltYWdlJiBiaXRtYXBJbWFnZSA9IGRvd25jYXN0
PEJpdG1hcEltYWdlPigqaW1hZ2UpOwotICAgICAgICBJbnRTaXplIHNpemVSZXNwZWN0aW5nT3Jp
ZW50YXRpb24gPSBiaXRtYXBJbWFnZS5zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKGRlc2NyaXB0
aW9uKTsKKyAgICAgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gYml0bWFw
SW1hZ2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwogCiAgICAgICAgIGlmIChkZXNjcmlw
dGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KQogICAgICAgICAgICAgb3JpZW50YXRpb24gPSBiaXRtYXBJbWFnZS5vcmllbnRhdGlvbkZvckN1
cnJlbnRGcmFtZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274023</attachid>
            <date>2016-03-14 14:01:11 -0700</date>
            <delta_ts>2016-03-14 15:18:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160314140059.patch</filename>
            <type>text/plain</type>
            <size>142786</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjOThmYzYxZmI4ZmUx
ZTAxYTY5MWNjNzg0OTM0NmU1YTkwNzI1MC4uMjYyNDNkZDBlYzRlMzY5MGRlNzkwZjlmMjFkZDMx
ZGE4MmJmYzZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxNi0wMy0xNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaXMgbm90IGZvciByZXZpZXcuIEl0IGlzIG9ubHkgZm9yIEVXUy4gSXQgY29u
dGFpbnMgdGhlIGZpeCBvZgorICAgICAgICB3ZWJraXQgYnVncyAxNTU0MTIsIDE1NTQyMiwgMTU1
NDQ0IGFuZCAxNTU0NTYuIEEgc2VwYXJhdGUgcGF0Y2ggd2lsbCBiZQorICAgICAgICBwb3N0ZWQg
Zm9yIHJldmlldyBvbmNlIHRoaXMgY29tYmluZWQgcGF0Y2ggcGFzc2VzIHRoZSBFV1MuCisgICAg
ICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtQXBwbGVX
aW4uY21ha2U6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZv
cm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxh
dGZvcm1XaW5DYWlyby5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlcik6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpo
YXZlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRl
c3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJv
eU1ldGFkYXRhQW5kTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNo
ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRhdGVTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmlzU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
bWF5RmlsbFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpz
b2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkdW1wKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVE
YXRhOjp+RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
Y29uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlOjpzb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+
SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5zdXJl
RGVjb2RlcklzQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJz
YW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpm
cmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpm
cmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lRHVy
YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpvcmllbnRhdGlv
bkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjppbml0aWFsaXplZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjptYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
ZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxpbmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3Ip
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0
b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFw
SW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFt
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6ZGV0ZXJtaW5lTWluaW11bVN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFt
ZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3Ip
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZy
YW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW1hZ2VT
b3VyY2VPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlU291cmNlT3B0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWRCdWZmZXJSZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
SW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c3Vic2FtcGxp
bmdMZXZlbEZvclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Ynl0ZXNE
ZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Ojppc1NpemVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmdldEhvdFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjp+SW1hZ2VEZWNv
ZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RF
ZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29u
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6SWNvbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdJbWFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisK
KzIwMTYtMDMtMTQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4K
KworICAgICAgICBSZW5hbWUgRnJhbWVEYXRhIHRvIEltYWdlRnJhbWVEYXRhIGFuZCBtb3ZlIGl0
IHRvIGEgc2VwYXJhdGUgZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1NDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIHBsYW4gaXMgdG8gaGF2ZSBjYWNoaW5nIHRoZSBJbWFnZUZyYW1lRGF0
YSBiZSBkb25lIGJ5IHRoZSBJbWFnZVNvdXJjZS4KKyAgICAgICAgU28gbW92ZSB0aGUgSW1hZ2VG
cmFtZURhdGEgdG8gYSBzZXBhcmF0ZSBmaWxlIHNvIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5Cisg
ICAgICAgIEltYWdlU291cmNlIGFuZCBCaXRtYXBJbWFnZS4gQWxzbyBkbyB0aGUgZm9sbG93aW5n
IGNsZWFudXA6CisgICAgICAgIDEuIENhbGN1bGF0ZSB0aGUgaW1hZ2Ugc29saWRDb2xvcigpIGlu
IHRoZSBJbWFnZUZyYW1lRGF0YSB3aGVuIGl0IGlzIG5lZWRlZC4KKyAgICAgICAgMi4gSGF2ZSBh
IHNpbmdsZSBmdW5jdGlvbiBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkuCisgICAg
ICAgIDMuIEdldCByaWQgb2YgQml0bWFwSW1hZ2U6Om1faGFzVW5pZm9ybUZyYW1lU2l6ZSBzaW5j
ZSBpdCBpcyBub3QgdXNlZC4KKyAgICAgICAgNC4gUmVwbGFjZSBCaXRtYXBJbWFnZSBtX2lzU29s
aWRDb2xvciBhbmQgbV9jaGVja2VkRm9yU29saWRDb2xvciBieSBhIHRyaXN0YXRlIAorICAgICAg
ICAgICBtZW1iZXIgbmFtZWQgbV9zb2xpZENvbG9yVmFsdWUuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0
cm95TWV0YWRhdGFBbmROb3RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNh
Y2hlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnVwZGF0ZVNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjppc1NvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6Om1heUZpbGxXaXRoU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6c29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHVtcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lRGF0YTo6fkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzb2xpZENvbG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZURhdGEuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OkltYWdlRnJh
bWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c29saWRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRldGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVEYXRhOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Y2hlY2tGb3JTb2xpZENvbG9yKTogRGVsZXRlZC4KKworMjAxNi0wMy0xMyAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENyZWF0ZSBhIENHIElt
YWdlRGVjb2RlciBjbGFzcyBpbnN0ZWFkIG9mIGRlZmluaW5nIGl0IGFzIENHSW1hZ2VTb3VyY2VS
ZWYgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IHRoZSBpbWFnZSBkZWNvZGluZyBjb2RlIGZyb20gSW1hZ2VTb3VyY2VDRy5jcHAgb3V0IHRvIGEg
bmV3IGNsYXNzIG5hbWVkCisgICAgICAgIEltYWdlRGVjb2Rlci4gVGhlIHB1cnBvc2Ugb2YgdGhp
cyBzcGxpdCBpcyB0byBoYXZlIHRoZSBDRyBJbWFnZVNvdXJjZSBzaW1pbGFyCisgICAgICAgIHRv
IHRoZSBub25lIENHIEltYWdlU291cmNlIHdoZXJlIHRoZXJlIGlzIGEgc2VwYXJhdGUgY2xhc3Mg
Zm9yIGRlY29kaW5nLiBUaGUKKyAgICAgICAgcGxhbiBpcyB0byBtZXJnZSB0aGUgSW1hZ2VTb3Vy
Y2UuY3BwIGFuZCBJbWFnZVNvdXJjZUNHLmNwcCBpbiBvbmUgZmlsZSBzbworICAgICAgICBkZWNp
ZGluZyB3aGV0aGVyIHRoZSBkZWNvZGluZyBzaG91bGQgaGFwcGVuIHN5bmNocm9ub3VzbHkgb3Ig
YXN5bmNocm9ub3VzbHkKKyAgICAgICAgY2FuIGhhcHBlbiBpbiBvbmUgcGxhY2UgYW5kIHRoZSBj
YWNoaW5nIG9mIHRoZSBmcmFtZXMgY2FuIGJlIGhhbmRsZWQgYnkgdGhlCisgICAgICAgIEltYWdl
U291cmNlIGFzIHdlbGwuCisKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAg
ICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmltYWdlU2l6ZUZvclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6dXBkYXRlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aW5pdGlh
bGl6ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjppbWFnZVNvdXJjZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0
Qnl0ZXNBdFBvc2l0aW9uKTsKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlclJlbGVhc2Up
OworICAgICAgICAoV2ViQ29yZTo6b3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpyZXBldGl0
aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpnZXRIb3RTcG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0Ny
ZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVw
ZXRpdGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyUmVsZWFzZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmltYWdlU291cmNlT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6aW5pdGlhbGl6ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3Jp
ZW50YXRpb25Gcm9tUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXRlcm1pbmVNaW5p
bXVtU3Vic2FtcGxpbmdMZXZlbCk6CisKKzIwMTYtMDMtMTMgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBDaGFuZ2UgTmF0aXZlSW1hZ2VQdHIg
Zm9yIENHIHRvIGJlIFJldGFpblB0cjxDR0ltYWdlUmVmPgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2aW5nIE5hdGl2ZUltYWdlUHRyIGFzIGEgcmF3
IHBvaW50ZXIgbWFrZXMgbWFuYWdpbmcgdGhlIGxpZmUgY3ljbGUgb2YKKyAgICAgICAgdGhlIENH
SW1hZ2VSZWYgaGFyZC4gQSBsb3Qgb2Ygd29ya3Mgd2FzIGRvbmUgdG8gbWFrZSBzdXJlIHRoZSBD
RyBwb2ludGVyCisgICAgICAgIGlzIG1haW50YWluZWQgY29ycmVjdGx5LiBJdCB3YXMgYWxzbyBu
b3QgcG9zc2libGUgdG8gbW92ZSBhIEZyYW1lRGF0YSBzaW5jZQorICAgICAgICBjYWxsaW5nIHRo
ZSBkZXN0cnVjdG9yIHdhcyByZWxlYXNpbmcgdGhlIENHSW1hZ2VSZWYuCisKKyAgICAgICAgSSBh
bSBnb2luZyB0byBmb2xsb3cgdGhpcyBuYW1pbmcgY29udmVudGlvbjoKKyAgICAgICAgMS4gQW4g
SW1hZ2Ugb2JqZWN0IGNhbiBoYXZlIG9uZSBvciBtb3JlIEZyYW1lRGF0YS4gQSBGcmFtZURhdGEg
Y2FuIGJlIG5hbWVkCisgICAgICAgICAgIGZvciBzaG9ydG5lc3MgYXMgImZyYW1lIiwgIm1fZnJh
bWVzIiwgZXRjLgorICAgICAgICAyLiBBIEZyYW1lRGF0YSBjYW4gaGF2ZSB6ZXJvIG9yIG9uZSBO
YXRpdmVJbWFnZVB0ci4gQSBOYXRpdmVJbWFnZVB0ciBjYW4KKyAgICAgICAgICAgYmUgbmFtZWQg
YXMgImltYWdlIiwgIm1faW1hZ2UiLCBldGMuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9D
YWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OkZy
YW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CaXRtYXBJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0VElGRlJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKwogMjAxNi0wMy0xMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtGb3JtczogZm9jdXNdIGZvY3VzIHJpbmdzIGFyb3VuZCB0ZXh0IGZpZWxk
cyBkbyBub3QgZm9sbG93IGNvbnRvdXIgKGJvcmRlci1yYWRpdXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDZkYzU4YjI3OGQ4YzBhYzAzZTk3MDQyMWUxMWU0MmI5NTlhNjg2ZDYuLmU4ODc5MjAz
NmI3YzNkNjhlMjMyNzViOGVlZTkyM2YwNmVjMmRiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yMjE4LDYgKzIyMTgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvSVNPVlRUQ3VlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRnJhbWVEYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRp
b24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QXBwbGVXaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmlu
ZGV4IGU1MjA5Y2IyMGNmMDMzODdhMjUyNjQzZGY0ZTBiMjE1MTQ5MjA0ZjcuLjdiMzY3YTczYWM5
ZTE1YmQ5NWM4OWM5N2EzNmEwZjAyNWY3MjgwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBs
ZVdpbi5jbWFrZQpAQCAtNzEsNiArNzEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbnRQb2ludENHLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlY2UyYzUz
MDkxYTU2Y2Q5MzMwNmU1YmFiZmE0ODg2NjM0ZjI1OWY5Li5hZDdjN2Y0Y2MyNzY2NGU1Y2U1YjUx
ODY4YWM5NzQyYTc4ZDk5YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTIzLDYg
KzEyMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dsaWIv
S2V5ZWREZWNvZGVyR2xpYi5jcHAKICAgICBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybURpc3BsYXkuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGU2Yzg3YjJkN2U5NDFlMzQ5YTY3YWE2YzY4
M2FhMzRkYzYwYWRjMWYuLjk0OTg0OTUzZDM5YThiNWU3ZWJiMGNlOWI1MjIyMmY4NTJjM2YyZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05NCw2ICs5NCw3IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4MzViOWFhMjI0YWE5ZWFhZWUwNDYy
MzM5N2U5OTAxNmU5ZjdlZWJmLi5kYWNkYTU2OTFhNjVjNjY1NjA2M2E0YzA3MDZjMTBhMGVmYjYy
MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDAwLDYgKzQwMCw3IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1t
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IDM4YTAyOGM1Yjg5MWJjYjFmZGRlMmRkZWIyYTMxYmY4
MTNkNTM4Y2QuLjI0OGM4OWEwYjA1N2QxZTVkNmU0NDFlZWJjNGMzOGZmODI0ZjIyMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMzksNiArMzksNyBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAzMDdiYTM4ZmYwZjNhNGM0
NzFiOWQ0MjkxNDYxNjJhOTU5ZWU3NjYuLjlhY2E3MDkwZjQ3NjlhMjkwN2RiNzRhN2Y0YzYzNzY2
MGNhOGUzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIyOTEsNiArMjI5MSwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0
Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAv
KiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyog
UXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87
IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTU1OUJCODc5MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURl
Y29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTU5QkI4NzcxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5jcHAgKi87IH07CisJCTU1
OUJCODdBMUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUJCODc4MUM5NjQ2NTgwMDI0MTNDRCAv
KiBJbWFnZURlY29kZXIuaCAqLzsgfTsKKwkJNTU5QkI4N0QxQzk2QjJDODAwMjQxM0NEIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1OUJCODdCMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1OUJCODdFMUM5NkIyQzkwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5QkI4N0MxQzk2QjJD
ODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4MDM3MTYxMUE2NkYwMEEwMEJB
RjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovOyB9
OwpAQCAtNTAwMiw3ICs1MDA2LDYgQEAKIAkJQjI3NTM1NUEwQjA1MzgxNDAwMkNFNjRGIC8qIEZs
b2F0UmVjdENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi87IH07CiAJ
CUIyNzUzNTVCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyRDBCMDUzODE0MDAyQ0U2
NEYgLyogRmxvYXRTaXplQ0cuY3BwICovOyB9OwogCQlCMjc1MzU1RTBCMDUzODE0MDAyQ0U2NEYg
LyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi87IH07Ci0JCUIy
NzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjAwQjA1MzgxNDAwMkNFNjRG
IC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwICovOyB9
OwogCQlCMjc1MzU2MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMzMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2MjBCMDUzODE0MDAyQ0U2NEYg
LyogSW50U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwICovOyB9OwpA
QCAtOTg3NSw2ICs5ODc4LDEwIEBACiAJCTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0
aW5nc01hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5nc01h
Y3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTU1OUJCODc3MUM5
NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW1hZ2VEZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTU5QkI4NzgxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTU5QkI4N0IxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVEYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU5QkI4N0MxQzk2QjJDODAwMjQx
M0NEIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1RDQwOEY3
MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVk
Q2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxhdGVk
Q2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5MDUsNyArMTI5MTIs
NiBAQAogCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0UmVjdENHLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNp
emVDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMwMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI3NTM1MzEw
QjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlU291cmNlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UG9pbnRDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRS
ZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFJlY3RD
Ry5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTM0MEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRTaXplQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEludFNpemVDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTgzMyw3
ICsyMTgzOSw4IEBACiAJCQkJMjI5MkIyN0IxMzU2NjY5NDAwQ0YxMUVGIC8qIEltYWdlQnVmZmVy
RGF0YUNHLmNwcCAqLywKIAkJCQkyMkJEOUY4MDEzNTM2NEZFMDA5QkQxMDIgLyogSW1hZ2VCdWZm
ZXJEYXRhQ0cuaCAqLywKIAkJCQlCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5j
cHAgKi8sCi0JCQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3Bw
ICovLAorCQkJCTU1OUJCODc3MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuY3BwICov
LAorCQkJCTU1OUJCODc4MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuaCAqLywKIAkJ
CQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovLAogCQkJCTRC
MzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovLAogCQkJCUIy
NzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLywKQEAgLTIxOTk1LDYg
KzIyMDAyLDggQEAKIAkJCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VCdWZmZXIu
Y3BwICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlci5oICov
LAogCQkJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCAqLywK
KwkJCQk1NTlCQjg3QjFDOTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuY3BwICovLAor
CQkJCTU1OUJCODdDMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5oICovLAogCQkJ
CUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8sCiAJCQkJQTg3
NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovLAogCQkJCUE4
NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCkBAIC0yNTQ3
NSw2ICsyNTQ4NCw3IEBACiAJCQkJOTdCQzZBMjQxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
QXV0aG9yaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMzcxQTIxNjdDMTFENDAwRURCNzUy
IC8qIERhdGFiYXNlQmFzaWNUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjUxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTU1
OUJCODdFMUM5NkIyQzkwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTdCQzZBMjkxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlRGV0YWls
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUwOURCNDkxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFi
YXNlRXJyb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjY4MTIsNiArMjY4MjIsNyBAQAogCQkJCUZE
QTE1RUNFMTJCMDNGNjEwMDNBNTgzQSAvKiBKU1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTlGQTM3RUZCMTE3MkZEQTYwMEM0Q0Q1NSAvKiBKU1NjcmlwdFByb2ZpbGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlGQTM3RUZEMTE3MkZEQTYwMEM0Q0Q1NSAvKiBKU1Njcmlw
dFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTlCQjg3QTFDOTY0NjU4MDAyNDEz
Q0QgLyogSW1hZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUQwNkFEMTFDNzc3NTQ4
MDBGREZBRjEgLyogSlNTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5QkRBNjREODFCOTc1Q0YyMDA5QzQzODcgLyogSlNTaGFkb3dSb290LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDlERTE3QjE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjkyMDMsNiArMjkyMTQsNyBAQAogCQkJCUIyNzUzNTY2MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNGMzMyNDBG
MkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUJBNzZD
OTExRDIwRTQ3MDA0QzIwMUMgLyogQ29sb3JEYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU1
OUJCODc5MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMyOTkzNUQxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyNzUzNTc3MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTQzRURENjdFMUI0ODVEQkYwMDY0MEU3NSAvKiBDb21iaW5lZEZp
bHRlcnNBbHBoYWJldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NTk4LDYgKzI5NjEwLDcgQEAK
IAkJCQk4NTNCRjREQzBBQkI2QjU1MDA4NjQ3QkIgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1NTI2QzM4MEFCMEExN0UwMDAzMDJFQSAvKiBET01Ob2RlSXRlcmF0b3IubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4NUFDQUE4RTBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3Qu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk1NTlCQjg3RDFDOTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VG
cmFtZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU2QzhBRTUwQTkxMjY0OTAwNUM2ODdC
IC8qIERPTU9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QzdGNUQxMEFBRkI4RDkwMDQw
MTRERCAvKiBET01PdmVyZmxvd0V2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyODRCRDUx
MDQ0QTAxRTAwRUFFQjUyIC8qIERPTVBhZ2VUcmFuc2l0aW9uRXZlbnQubW0gaW4gU291cmNlcyAq
LywKQEAgLTMwMDYwLDcgKzMwMDczLDYgQEAKIAkJCQkyRDVBNTkyRjE1MjUyNTIzMDAzNkVFNTEg
LyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTFBMkY0MTE3RDdE
NURFMDA3MjUxN0EgLyogSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNEIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291
cmNlQ0dNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExNzBFNkUxREE3MDBCRjYwODgg
LyogSW1wbGljaXRBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU5NjFDNTQxOEFE
MzM4NTAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBmMzc4NzUy
MWRkZmZmNjgyYmQ4OGU2NDcyY2FmMDYyNWUzZjA0NTQ0Li45YTE0NzU3ODgzN2ZjZGUxMzEwZDFh
ZDEwNjIyYjdiYjcwNjg0YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBMYXlvdXRTaXplIENhY2hlZEltYWdlOjpp
bWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBmbG9hdAog
ICAgIGlmIChyZW5kZXJlciAmJiBpczxCaXRtYXBJbWFnZT4oKm1faW1hZ2UpKSB7CiAgICAgICAg
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHJlbmRl
cmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCByZW5kZXJlci0+c3R5bGUoKS5p
bWFnZU9yaWVudGF0aW9uKCkpOwogICAgICAgICBpZiAob3JpZW50YXRpb25EZXNjcmlwdGlvbi5y
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAg
ICAgICAgICAgaW1hZ2VTaXplID0gTGF5b3V0U2l6ZShkb3duY2FzdDxCaXRtYXBJbWFnZT4oKm1f
aW1hZ2UpLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikp
OworICAgICAgICAgICAgaW1hZ2VTaXplID0gTGF5b3V0U2l6ZShkb3duY2FzdDxCaXRtYXBJbWFn
ZT4oKm1faW1hZ2UpLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSk7CiAgICAgfQogI2Vsc2UK
ICAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKSAmJiAocmVuZGVyZXIgJiYgcmVuZGVy
ZXItPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5k
ZXggOTk5NDY1ZWEzOTA2OTdjYmUwMGZlNmZhODgzOGMxMzhlNTQ0N2ExNy4uODQ2YzBkYzkzODRl
NzVkYmEwODIwYzI4MGZiNjQxY2U4YTA4ZjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMjUsOCArMjI1LDYgQEAgYm9vbCBNZW1vcnlDYWNo
ZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3QKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBD
YWNoZWRJbWFnZTo6TWFudWFsbHlDYWNoZWQsIHNlc3Npb25JRCk7CiAKLSAgICAvLyBBY3R1YWwg
cmVsZWFzZSBvZiB0aGUgQ0dJbWFnZVJlZiBpcyBkb25lIGluIEJpdG1hcEltYWdlLgotICAgIENG
UmV0YWluKGltYWdlKTsKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCZkdW1teUNhY2hlZElt
YWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFn
ZS0+ZGVjb2RlZFNpemUoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBm
YWYwZjg2OTYyYzNmYjY1Nzc3NDViZmFmNzViNGM4NGQ4MGNjMDYwLi5jYjViMWM5YTQxODE2OGVm
N2ZlNzMxOWVjOGMxMjM2NjRhZWRjZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC00Nyw5ICs0Nyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2Vy
dmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xl
dmVsKDApCi0gICAgLCBtX2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkKLSAgICAsIG1f
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRGcmFt
ZSgwKQogICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3Jl
cGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQpAQCAtNjYsMTMgKzYzLDEwIEBAIEJpdG1hcElt
YWdlOjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICNlbHNlCiAgICAgLCBt
X2FsbG93U3Vic2FtcGxpbmcoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1faXNTb2xpZENvbG9yKGZh
bHNlKQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkKICAgICAsIG1fYW5pbWF0
aW9uRmluaXNoZWQoZmFsc2UpCiAgICAgLCBtX2FsbERhdGFSZWNlaXZlZChmYWxzZSkKICAgICAs
IG1faGF2ZVNpemUoZmFsc2UpCiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgLCBt
X2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFsc2Up
CiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAoZmFsc2UpCiB7CkBAIC05
Niw3ICs5MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIoZG91YmxlIGRlbGF5KQog
ICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0KIAotYm9vbCBCaXRtYXBJ
bWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitib29sIEJpdG1hcEltYWdlOjpo
YXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChpbmRleCA+PSBm
cmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNCw3ICs5OCw3IEBAIGJv
b2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChp
bmRleCA+PSBtX2ZyYW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhd
Lm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QKQEAgLTEyNSw3ICsxMTksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVj
b2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9y
IHRoZSBmcmFtZWJ1ZmZlciBkYXRhKSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAg
ICAvLyB0aGUgbWV0YWRhdGEuCiAgICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1l
c1tpXS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkp
CisgICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVN
ZXRhZGF0YSkpCiAgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOwog
ICAgIH0KIApAQCAtMTU4LDggKzE1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNv
ZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKIAogdm9pZCBCaXRtYXBJbWFnZTo6
ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVkIGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVh
cmVkU291cmNlIGNsZWFyZWRTb3VyY2UpCiB7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsK
LSAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gZmFsc2U7CisgICAgbV9zb2xpZENvbG9yVmFs
dWUgPSBUcmlTdGF0ZTo6VW5jaGVja2VkOwogICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsK
IAogICAgIEFTU0VSVChtX2RlY29kZWRTaXplID49IGZyYW1lQnl0ZXNDbGVhcmVkKTsKQEAgLTE4
MywxMSArMTc2LDkgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMu
c2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAK
LSAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAg
ICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChp
bmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZy
YW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7CisgICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwogICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7
CiAgICAgfQogCiAgICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3NvdXJjZS5v
cmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwpAQCAtMjAwLDExICsxOTEsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluZ0xldmVsLCBJbQogICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2Uu
ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1l
Qnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCk7CiAKLSAgICBjb25zdCBJbnRTaXplIGZyYW1lU2l6ZShpbmRleCA/IG1fc291cmNlLmZyYW1l
U2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbV9zaXplKTsKLSAgICBpZiAo
IXN1YnNhbXBsaW5nTGV2ZWwgJiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKLSAgICAgICAgbV9oYXNV
bmlmb3JtRnJhbWVTaXplID0gZmFsc2U7Ci0KLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWUpIHsKKyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKICAgICAgICAgaW50IGRl
bHRhQnl0ZXMgPSBzYWZlQ2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOwog
ICAgICAgICBtX2RlY29kZWRTaXplICs9IGRlbHRhQnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxs
eS1kZWNvZGVkIGZyYW1lIHdpbGwgc3Vic3VtZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1
c2VkCkBAIC0yMzYsMTYgKzIyMywxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWREZWNvZGVQcm9w
ZXJ0aWVzKCkgY29uc3QKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5n
ZWQodGhpcywgZGVsdGFCeXRlcyk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZVNpemUo
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAordm9pZCBCaXRt
YXBJbWFnZTo6dXBkYXRlU2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NpemVBdmFpbGFibGUg
fHwgbV9oYXZlU2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zaXplID0gbV9zb3VyY2Uu
c2l6ZShkZXNjcmlwdGlvbik7Ci0gICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9z
b3VyY2Uuc2l6ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50
YXRpb24sIGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSkpOwotCi0gICAgbV9pbWFnZU9y
aWVudGF0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLmltYWdlT3JpZW50
YXRpb24oKSk7Ci0gICAgbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAg
ICBtX3NpemUgPSBtX3NvdXJjZS5zaXplKCk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uID0gbV9zb3VyY2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwogCiAgICAgbV9oYXZl
U2l6ZSA9IHRydWU7CiAKQEAgLTI1OSw5ICsyNDMsOSBAQCBGbG9hdFNpemUgQml0bWFwSW1hZ2U6
OnNpemUoKSBjb25zdAogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLUludFNpemUgQml0bWFwSW1h
Z2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
IGRlc2NyaXB0aW9uKSBjb25zdAorSW50U2l6ZSBCaXRtYXBJbWFnZTo6c2l6ZVJlc3BlY3RpbmdP
cmllbnRhdGlvbigpIGNvbnN0CiB7Ci0gICAgdXBkYXRlU2l6ZShkZXNjcmlwdGlvbik7CisgICAg
dXBkYXRlU2l6ZSgpOwogICAgIHJldHVybiBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CiB9
CiAKQEAgLTMwMSw3ICsyODUsNyBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3Mp
IGZyYW1lcyEKICAgICAgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJh
bWVCeXRlczsKICAgICAgICAgaWYgKG1fZnJhbWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2Zy
YW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAo
bV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBmcmFtZUJ5dGVzIDogMCk7CisgICAgICAgICAgICBm
cmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmc6
OkNhY2hlTm9uZSkgPyBmcmFtZUJ5dGVzIDogMCk7CiAgICAgfQogICAgIGRlc3Ryb3lNZXRhZGF0
YUFuZE5vdGlmeShmcmFtZUJ5dGVzQ2xlYXJlZCwgQ2xlYXJlZFNvdXJjZTo6Tm8pOwogI2Vsc2UK
QEAgLTMwOSw3ICsyOTMsNyBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICBpbnQgZGVsdGFCeXRlcyA9IDA7CiAgICAgaWYgKCFtX2ZyYW1l
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6
ZSgpIC0gMV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbbV9mcmFtZXMuc2l6
ZSgpIC0gMV0uY2xlYXIodHJ1ZSkpIHsKKyAgICAgICAgaWYgKG1fZnJhbWVzW21fZnJhbWVzLnNp
emUoKSAtIDFdLmNsZWFyKEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpKSB7CiAgICAgICAg
ICAgICBkZWx0YUJ5dGVzICs9IGJ5dGVzOwogICAgICAgICAgICAgZGVsdGFCeXRlcyArPSBtX2Rl
Y29kZWRQcm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgICAgIG1fZGVjb2RlZFByb3BlcnRpZXNTaXpl
ID0gMDsKQEAgLTM0MCw3ICszMjQsNiBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChi
b29sIGFsbERhdGFSZWNlaXZlZCkKICNlbmRpZgogCiAgICAgbV9oYXZlRnJhbWVDb3VudCA9IGZh
bHNlOwotICAgIG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA9IHRydWU7CiAgICAgcmV0dXJuIGlzU2l6
ZUF2YWlsYWJsZSgpOwogfQogCkBAIC0zNzksMjYgKzM2MiwyNiBAQCBib29sIEJpdG1hcEltYWdl
OjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJh
bWVDYWNoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZy
YW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAgICAgICAgfHwgKGZyYW1lQ2FjaGlu
ZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRh
KSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVN
ZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKKyAgICAgICAgfHwg
KGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSAmJiAhbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwg
MCwgZnJhbWVDYWNoaW5nKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzTmF0aXZlSW1h
Z2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNl
bnRhdGlvblNjYWxlSGludCkKK1Bhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCiB7
CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSBzdGQ6Om1pbihtX3Nv
dXJjZS5zdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUocHJlc2VudGF0aW9uU2NhbGVIaW50KSwgbV9t
aW5pbXVtU3Vic2FtcGxpbmdMZXZlbCk7CisgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsID0gbV9zb3VyY2Uuc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKHByZXNlbnRhdGlvblNj
YWxlSGludCwgbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiAKICAgICAvLyBXZSBtYXkgaGF2
ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEgaGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGlj
aCBjYXNlIHdlIG5lZWQgdG8KICAgICAvLyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgot
ICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFt
ZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZl
bCkgeworICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxp
bmdMZXZlbCkgewogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQsIGJ1
dCBhdCB0b28gc21hbGwgYSBzaXplLCByZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KICAgICAg
ICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKLSAgICAg
ICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpOworICAgICAgICBtX2ZyYW1lc1tpbmRleF0u
Y2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSk7CiAgICAgICAgIGludmFsaWRhdGVQ
bGF0Zm9ybURhdGEoKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBzaXplQ2hhbmdlOwogICAg
ICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpAQCAtNDA2LDE1ICszODksMTUgQEAgUGFzc05hdGl2
ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBw
cmVzZW50YXRpb25TY2EKICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBm
cmFtZSB5ZXQsIGRvIHNvLgotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIGlmIChpbmRleCA+PSBtX2Zy
YW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQorICAgICAgICBjYWNoZUZy
YW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRh
ZGF0YUFuZEZyYW1lKTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAg
ICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6
OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJl
RnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJl
RnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXND
b21wbGV0ZTsKQEAgLTQyMiw3ICs0MDUsNyBAQCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIAogZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNo
ZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNo
ZWQoaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRhKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CkBAIC00MzAs
MTIgKzQxMywxMiBAQCBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90IGluZGV4KQogCiBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFt
ZSgpKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOwogfQog
CiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkp
CisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZzo6
Q2FjaGVNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fZnJhbWVz
W2luZGV4XS5tX2hhdmVNZXRhZGF0YSkKQEAgLTQ1MSw3ICs0MzQsNyBAQCBib29sIEJpdG1hcElt
YWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogCiBJbWFnZU9yaWVudGF0aW9uIEJp
dG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAg
aWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAg
aWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVN
ZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKIAogICAg
IGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpCkBAIC02NzgsMTkgKzY2MSw0OSBA
QCBib29sIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oQW5pbWF0aW9uQWR2
YW5jZW1lbnQgYWR2YW5jZW1lbnQpCiAKICAgICByZXR1cm4gYWR2YW5jZWRBbmltYXRpb247CiB9
CisgICAgCit2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQoreworICAgIG1f
c29saWRDb2xvclZhbHVlID0gVHJpU3RhdGU6Ok5vOworICAgIAorICAgIGlmIChmcmFtZUNvdW50
KCkgPiAxKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFoYXZlRnJhbWVJbWFnZUF0
SW5kZXgoMCkpIHsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJ
bmRleCgwLCAwKTsKKyAgICAgICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0
KCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGlmICghZW5z
dXJlRnJhbWVJc0NhY2hlZCgwKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgaWYgKCFtX2ZyYW1lcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAo
T3B0aW9uYWw8Q29sb3I+IGNvbG9yID0gbV9mcmFtZXNbMF0uc29saWRDb2xvcigpKSB7CisgICAg
ICAgIG1fc29saWRDb2xvciA9IGNvbG9yLnZhbHVlKCk7CisgICAgICAgIG1fc29saWRDb2xvclZh
bHVlID0gVHJpU3RhdGU6OlllczsKKyAgICB9Cit9CiAKLWJvb2wgQml0bWFwSW1hZ2U6Om1heUZp
bGxXaXRoU29saWRDb2xvcigpCitib29sIEJpdG1hcEltYWdlOjppc1NvbGlkQ29sb3IoKQogewot
ICAgIGlmICghbV9jaGVja2VkRm9yU29saWRDb2xvciAmJiBmcmFtZUNvdW50KCkgPiAwKSB7Cisg
ICAgaWYgKG1fc29saWRDb2xvclZhbHVlID09IFRyaVN0YXRlOjpVbmNoZWNrZWQgJiYgZnJhbWVD
b3VudCgpID4gMCkgewogICAgICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKLSAgICAgICAgQVNT
RVJUKG1fY2hlY2tlZEZvclNvbGlkQ29sb3IpOworICAgICAgICBBU1NFUlQobV9zb2xpZENvbG9y
VmFsdWUgIT0gVHJpU3RhdGU6OlVuY2hlY2tlZCk7CiAgICAgfQotICAgIHJldHVybiBtX2lzU29s
aWRDb2xvciAmJiAhbV9jdXJyZW50RnJhbWU7CisgICAgcmV0dXJuIG1fc29saWRDb2xvclZhbHVl
ID09IFRyaVN0YXRlOjpZZXM7CiB9Ci0KLUNvbG9yIEJpdG1hcEltYWdlOjpzb2xpZENvbG9yKCkg
Y29uc3QKKyAgICAKK2Jvb2wgQml0bWFwSW1hZ2U6Om1heUZpbGxXaXRoU29saWRDb2xvcigpCit7
CisgICAgcmV0dXJuIGlzU29saWRDb2xvcigpICYmICFtX2N1cnJlbnRGcmFtZTsKK30KKyAgICAK
K0NvbG9yIEJpdG1hcEltYWdlOjpzb2xpZENvbG9yKCkKIHsKLSAgICByZXR1cm4gbV9zb2xpZENv
bG9yOworICAgIHJldHVybiBpc1NvbGlkQ29sb3IoKSA/IG1fc29saWRDb2xvciA6IENvbG9yKCk7
CiB9CiAgICAgCiBib29sIEJpdG1hcEltYWdlOjpjYW5BbmltYXRlKCkKQEAgLTcxMiwxMSArNzI1
LDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICAK
ICAgICBpZiAoYWxsb3dTdWJzYW1wbGluZygpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImFs
bG93LXN1YnNhbXBsaW5nIiwgYWxsb3dTdWJzYW1wbGluZygpKTsKLSAgICBpZiAobV9pc1NvbGlk
Q29sb3IpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic29saWQtY29sb3IiLCBtX2lzU29saWRD
b2xvcik7Ci0gICAgCi0gICAgaWYgKG1faW1hZ2VPcmllbnRhdGlvbiAhPSBPcmlnaW5Ub3BMZWZ0
KQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm9yaWVudGF0aW9uIiwgbV9pbWFnZU9yaWVudGF0
aW9uKTsKKyAgICBpZiAobV9zb2xpZENvbG9yVmFsdWUgPT0gVHJpU3RhdGU6OlllcykKKyAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJzb2xpZC1jb2xvciIsIG1fc29saWRDb2xvcik7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4
IDc0OTNjNmE0YmZiODYzZDk3NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQuLmQ5OTdlZGQ1MmUyNjNi
NTVmYzJkMDgxOWE2YzczMjE2ODIzYjkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgi
CiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgpAQCAtNDcsNjEgKzQ4LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg
SEJJVE1BUF9fICpIQklUTUFQOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBz
dHJ1Y3QgRnJhbWVEYXRhOwotfQotCi1uYW1lc3BhY2UgV1RGIHsKLSAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6RnJhbWVEYXRhPiA6IHB1YmxpYyBTaW1wbGVDbGFz
c1ZlY3RvclRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkluaXRpYWxpemVX
aXRoTWVtc2V0ID0gZmFsc2U7IC8vIE5vdCBhbGwgRnJhbWVEYXRhIG1lbWJlcnMgaW5pdGlhbGl6
ZSB0byAwLgotICAgIH07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGltZXI7
CiAKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
Ly8gRnJhbWVEYXRhIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLQotc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRnJhbWVEYXRhKTsKLXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1f
ZnJhbWUoMCkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9u
KQotICAgICAgICAsIG1fc3Vic2FtcGxpbmdMZXZlbCgwKQotICAgICAgICAsIG1fZHVyYXRpb24o
MCkKLSAgICAgICAgLCBtX2hhdmVNZXRhZGF0YShmYWxzZSkKLSAgICAgICAgLCBtX2lzQ29tcGxl
dGUoZmFsc2UpCi0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKSAKLSAgICAgICAgLCBtX2ZyYW1l
Qnl0ZXMoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZyYW1lRGF0YSgpCi0gICAgeyAKLSAgICAg
ICAgY2xlYXIodHJ1ZSk7Ci0gICAgfQotCi0gICAgLy8gQ2xlYXIgdGhlIGNhY2hlZCBpbWFnZSBk
YXRhIG9uIHRoZSBmcmFtZSwgYW5kIChvcHRpb25hbGx5KSB0aGUgbWV0YWRhdGEuCi0gICAgLy8g
UmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4KLSAg
ICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7Ci0KLSAgICBOYXRpdmVJbWFnZVB0ciBt
X2ZyYW1lOwotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKLSAgICBTdWJzYW1w
bGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbDsKLSAgICBmbG9hdCBtX2R1cmF0aW9uOwotICAg
IGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsKLSAg
ICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlczsKLX07Ci0K
LS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8v
IEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdl
IHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTI1LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gRmxvYXRTaXplIGR1ZSB0byBvdmVycmlkZS4KICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbihJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkgY29u
c3Q7CisgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7CiAKICAg
ICBib29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTg5LDcg
KzEzOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc0JpdG1hcEltYWdlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdm9pZCB1cGRhdGVTaXplKEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKSBj
b25zdDsKKyAgICB2b2lkIHVwZGF0ZVNpemUoKSBjb25zdDsKICAgICB2b2lkIGRldGVybWluZU1p
bmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTIxNCwxMCAr
MTYzLDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHNpemVfdCBmcmFtZUNvdW50KCk7CiAKLSAgICBQ
YXNzTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9u
U2NhbGVIaW50ID0gMSk7Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1l
QXRJbmRleChzaXplX3QpOworICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOworICAgIFBhc3NOYXRp
dmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCi0gICAg
Ym9vbCBoYXZlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90KTsKIAogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qp
OwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CkBAIC0yMjUsMTEgKzE3
NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChzaXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5l
dmVyIGFjY2Vzc2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hp
bmcgeyBDYWNoZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9p
ZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNh
Y2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gSW1hZ2VGcmFt
ZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CiAKICAgICAvLyBDYWxsZWQgYmVmb3Jl
IGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0gZm9yIGluZm8gd2l0aG91dCBkZWNvZGluZy4gUmV0
dXJucyBmYWxzZSBvbiBpbmRleCBvdXQgb2YgYm91bmRzLgotICAgIGJvb2wgZW5zdXJlRnJhbWVJ
c0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFu
ZEZyYW1lKTsKKyAgICBib29sIGVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFn
ZUZyYW1lQ2FjaGluZyA9IEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRhQW5kRnJhbWUp
OwogCiAgICAgLy8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ry
b3lBbGx8IGlzIHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZm
ZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0yODAsOCAr
MjI4LDkgQEAgcHJvdGVjdGVkOgogICAgIC8vIGNoYW5nZWQuCiAgICAgdm9pZCBjaGVja0ZvclNv
bGlkQ29sb3IoKTsKIAorICAgIGJvb2wgaXNTb2xpZENvbG9yKCk7CiAgICAgYm9vbCBtYXlGaWxs
V2l0aFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKLSAgICBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQ29sb3Igc29saWRDb2xvcigpIG92ZXJyaWRlOwogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgIGJvb2wgbm90U29saWRDb2xvcigpIG92ZXJyaWRlOwpAQCAtMjk3LDEz
ICsyNDYsMTAgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplOyAvLyBUaGUg
c2l6ZSB0byB1c2UgZm9yIHRoZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1c3QgYmUgdGhlIHNpemUg
b2YgdGhlIGZpcnN0IGltYWdlKS4KICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGlu
Z09yaWVudGF0aW9uOwogCi0gICAgbXV0YWJsZSBTdWJzYW1wbGluZ0xldmVsIG1fbWluaW11bVN1
YnNhbXBsaW5nTGV2ZWw7Ci0KLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1faW1hZ2VPcmllbnRhdGlv
biA6IDQ7IC8vIEltYWdlT3JpZW50YXRpb25FbnVtCi0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX3No
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIDogMTsgLy8gUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtCisgICAgbXV0YWJsZSBTdWJzYW1wbGluZ0xldmVsIG1fbWF4aW11bVN1YnNhbXBsaW5n
TGV2ZWwgeyAwIH07CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWU7IC8vIFRoZSBpbmRleCBv
ZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9yPEZyYW1lRGF0YSwg
MT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmlt
YXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCisg
ICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4gYXJyYXkgb2YgdGhl
IGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byByZWYgZnJhbWVzIHRv
IHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9m
cmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwg
YW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4gVGhpcyB3aWxsIGJlIGNBbmltYXRpb25Ob25l
IGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0aW9uLgpAQCAtMzMwLDE2
ICsyNzYsMTUgQEAgcHJpdmF0ZToKICAgICB1aW50MTZfdCBtX3Byb2dyZXNzaXZlTG9hZENodW5r
Q291bnQ7CiAjZW5kaWYKIAorICAgIGVudW0gY2xhc3MgVHJpU3RhdGUgeyBVbmNoZWNrZWQsIE5v
LCBZZXMgfTsKKyAgICBUcmlTdGF0ZSBtX3NvbGlkQ29sb3JWYWx1ZSB7IFRyaVN0YXRlOjpVbmNo
ZWNrZWQgfTsKKyAgICAKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyA6IDE7IC8vIFdoZXRo
ZXIgd2Ugc2hvdWxkIGF0dGVtcHQgc3Vic2FtcGxpbmcgaWYgdGhpcyBpbWFnZSBpcyB2ZXJ5IGxh
cmdlLgotICAgIGJvb2wgbV9pc1NvbGlkQ29sb3IgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBh
cmUgYSAxeDEgc29saWQgaW1hZ2UuCi0gICAgYm9vbCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yIDog
MTsgLy8gV2hldGhlciB3ZSd2ZSBjaGVja2VkIHRoZSBmcmFtZSBmb3Igc29saWQgY29sb3IuCi0K
ICAgICBib29sIG1fYW5pbWF0aW9uRmluaXNoZWQgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSd2
ZSBjb21wbGV0ZWQgdGhlIGVudGlyZSBhbmltYXRpb24uCiAKICAgICBib29sIG1fYWxsRGF0YVJl
Y2VpdmVkIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UndmUgcmVjZWl2ZWQgYWxsIG91ciBkYXRh
LgogICAgIG11dGFibGUgYm9vbCBtX2hhdmVTaXplIDogMTsgLy8gV2hldGhlciBvciBub3Qgb3Vy
IHxtX3NpemV8IG1lbWJlciB2YXJpYWJsZSBoYXMgdGhlIGZpbmFsIG92ZXJhbGwgaW1hZ2Ugc2l6
ZSB5ZXQuCiAgICAgYm9vbCBtX3NpemVBdmFpbGFibGUgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3
ZSBjYW4gb2J0YWluIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSBmcmFtZSB5ZXQgZnJvbSBJ
bWFnZUlPLgotICAgIG11dGFibGUgYm9vbCBtX2hhc1VuaWZvcm1GcmFtZVNpemUgOiAxOwogICAg
IG11dGFibGUgYm9vbCBtX2hhdmVGcmFtZUNvdW50IDogMTsKICAgICBib29sIG1fYW5pbWF0aW9u
RmluaXNoZWRXaGVuQ2F0Y2hpbmdVcCA6IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ljb24uaAppbmRleCBkOTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIzYTRiOWFlZjNmM2MxN2I3
Li4yOGMxMzdkMjliMTE4YTljZjFiNjE2MWVkZTRkZTQ5MWQwNDg4MzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC02OCw4ICs2OCw4IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCi0gICAgSWNvbihDR0ltYWdlUmVmKTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOworICAgIEljb24oTmF0aXZlSW1hZ2VQdHIp
OworICAgIE5hdGl2ZUltYWdlUHRyIG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAg
ICBJY29uKE5TSW1hZ2UqKTsKICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbV9uc0ltYWdlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNDFmZWYyYTJiMDMxNzBl
M2IwM2ZkNmM1MmEyZmRmMjgzZTU2Mjc1OC4uYjEyYzBjMWVlMmZmODE0MTQ1ZGFkMGEzNDZkMWM3
YTc3NGI2YTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBA
IC0xOTQsNyArMTk0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU3VwcG9ydGluZyB0aWxlZCBk
cmF3aW5nCiAgICAgdmlydHVhbCBib29sIG1heUZpbGxXaXRoU29saWRDb2xvcigpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4g
Q29sb3IoKTsgfQorICAgIHZpcnR1YWwgQ29sb3Igc29saWRDb2xvcigpIHsgcmV0dXJuIENvbG9y
KCk7IH0KICAgICAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVk
SW1hZ2VEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZURhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZjY4MjA4N2EzNmY1ZGEyOTZiMGQ4ZjRhY2Ew
M2NiOGY2MjcxODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgorCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0
YSgpCit7Cit9CisKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShJbWFnZURlY29kZXIm
IGRlY29kZXIsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAg
ICwgbV9zdWJzYW1wbGluZ0xldmVsKHN1YnNhbXBsaW5nTGV2ZWwpCisgICAgLCBtX2hhdmVNZXRh
ZGF0YSh0cnVlKQoreworI2lmIFVTRShDRykKKyAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5v
cmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOworICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1l
SGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICBtX2ZyYW1lQnl0ZXMgPSBkZWNvZGVyLmZyYW1l
Qnl0ZXNBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAKKyAgICBtX2FsbG93
U3Vic2FtcGxpbmcgPSBkZWNvZGVyLmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRl
eCk7CisgICAgCisgICAgbV9pc0NvbXBsZXRlID0gZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdElu
ZGV4KGluZGV4KTsKKyAgICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBjQW5pbWF0
aW9uTm9uZSkKKyAgICAgICAgbV9kdXJhdGlvbiA9IGRlY29kZXIuZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoaW5kZXgpOworI2Vsc2UKKyAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5vcmllbnRhdGlv
bigpOworICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4
KTsKKyAgICBtX2ZyYW1lQnl0ZXMgPSBkZWNvZGVyLmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KTsK
KyAgICAKKyAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBkZWNvZGVyLmZyYW1lQnVmZmVyQXRJbmRl
eChpbmRleCk7CisgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1cygpICE9IEltYWdlRnJh
bWU6OkZyYW1lRW1wdHkpIHsKKyAgICAgICAgbV9pc0NvbXBsZXRlID0gYnVmZmVyLT5zdGF0dXMo
KSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAgICAgICBpZiAoZGVjb2Rlci5yZXBl
dGl0aW9uQ291bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkgeworICAgICAgICAgICAgLy8gTWFueSBh
bm5veWluZyBhZHMgc3BlY2lmeSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBh
cyBxdWlja2x5IGFzIHBvc3NpYmxlLgorICAgICAgICAgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gn
cyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRo
YXQgc3BlY2lmeQorICAgICAgICAgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxy
ZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Cisg
ICAgICAgICAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIG1fZHVyYXRp
b24gPSBzdGQ6Om1heChidWZmZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBmLCAwLjEwMGYpOworICAg
ICAgICB9CisgICAgfQorI2VuZGlmCit9CisKK0ltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURh
dGEoKQoreworICAgIGNsZWFyKEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpOworfQorCitJ
bWFnZUZyYW1lU3RhdHVzIEltYWdlRnJhbWVEYXRhOjpzdGF0dXMoKSBjb25zdAoreworICAgIGlm
ICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWVTdGF0dXM6OkRlY29kZU5vbmU7
CisgICAgCisgICAgcmV0dXJuIG1faXNDb21wbGV0ZSA/IEltYWdlRnJhbWVTdGF0dXM6OkRlY29k
ZUNvbXBsZXRlIDogSW1hZ2VGcmFtZVN0YXR1czo6RGVjb2RlUGFydGlhbDsKK30KKyAgICAKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE0YWZmODY0MjI4ODc5ZmZkNWZkZDM1MDczYWQ1ODk3YjU2MDYzM2EKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lRGF0YS5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbWFnZUZyYW1lRGF0YV9oCisjZGVmaW5lIEltYWdl
RnJhbWVEYXRhX2gKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRh
dGlvbi5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5o
IgorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5v
IHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordHlw
ZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwordHlwZWRlZiBzaXplX3QgSW1hZ2VGcmFtZUlu
ZGV4OworCitzdGF0aWMgY29uc3QgSW1hZ2VGcmFtZUluZGV4IE1heEltYWdlRnJhbWVJbmRleCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8SW1hZ2VGcmFtZUluZGV4Pjo6bWF4KCk7CisKK2VudW0gY2xh
c3MgSW1hZ2VGcmFtZUNhY2hpbmcgeworICAgIENhY2hlTm9uZSwKKyAgICBDYWNoZU1ldGFkYXRh
LAorICAgIENhY2hlRnJhbWUsCisgICAgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lCit9OworCitlbnVt
IGNsYXNzIEltYWdlRnJhbWVTdGF0dXMgeworICAgIERlY29kZU5vbmUsCisgICAgRGVjb2RlUGFy
dGlhbCwKKyAgICBEZWNvZGVDb21wbGV0ZQorfTsKKworY2xhc3MgSW1hZ2VEZWNvZGVyOworCitz
dHJ1Y3QgSW1hZ2VGcmFtZURhdGEgeworcHVibGljOgorICAgIEltYWdlRnJhbWVEYXRhKCk7Cisg
ICAgSW1hZ2VGcmFtZURhdGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICBJbWFnZUZyYW1l
RGF0YShJbWFnZURlY29kZXImLCBJbWFnZUZyYW1lSW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiA9IG51bGxwdHIpOworICAgIH5JbWFnZUZyYW1lRGF0YSgpOwor
ICAgIAorICAgIEltYWdlRnJhbWVTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CisgICAgCisgICAgYm9v
bCBjbGVhcihJbWFnZUZyYW1lQ2FjaGluZyk7CisgICAgT3B0aW9uYWw8Q29sb3I+IHNvbGlkQ29s
b3IoKSBjb25zdDsKKyAgICAKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlIHsgbnVsbHB0ciB9
OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVu
dGF0aW9uIH07CisgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07
CisgICAgZmxvYXQgbV9kdXJhdGlvbiB7IDAgfTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgc3Ry
dWN0IHsKKyAgICAgICAgICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOworICAgICAgICAgICAg
Ym9vbCBtX2lzQ29tcGxldGUgOiAxOworICAgICAgICAgICAgYm9vbCBtX2hhc0FscGhhIDogMTsK
KyAgICAgICAgICAgIGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIDogMTsKKyAgICAgICAgfTsKKyAg
ICAgICAgdWludDhfdCBtX2ZsYWdzW3NpemVvZihib29sKV0geyAwIH07CisgICAgfTsKKyAgICB1
bnNpZ25lZCBtX2ZyYW1lQnl0ZXMgeyAwIH07CisgICAgSW50U2l6ZSBtX3NpemU7Cit9OworICAg
IAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSW1hZ2VGcmFtZURhdGFfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmlu
ZGV4IDc0ZWYwNTNhMzMzZmY1ZmM1NzhlODE4MDBjYzZmYzk3NTVlZmJhYjguLjJjNmE0NzlhZTFk
NDlkMjA0NDI0YzMyMzAwMGIzNmY0YTJjMWIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28u
dWs+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYwpAQCAtMjks
OCArMjksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgi
CiAKLSNpZiAhVVNFKENHKQotCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCkBAIC0zOCwxNSArMzYsMTcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLXVuc2ln
bmVkIEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IDEwMjQgKiAxMDI0
OwotI2VuZGlmCi0KIEltYWdlU291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IG1fZGVjb2RlcigwKQotICAgICwg
bV9hbHBoYU9wdGlvbihhbHBoYU9wdGlvbikKKyNpZiAhVVNFKENHKQorICAgIDogbV9hbHBoYU9w
dGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24oZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisjZW5kaWYKIHsKKyNpZiBVU0UoQ0cpCisgICAgVU5V
U0VEX1BBUkFNKGFscGhhT3B0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOworI2VuZGlmCisKIH0KIAogSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgp
CkBAIC01NCwxMjggKzU0LDIwMiBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKICAgICBj
bGVhcih0cnVlKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxs
LCBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1l
cywgSW1hZ2VGcmFtZUluZGV4IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgaWYgKCFkZXN0cm95QWxsKSB7CisgICAgaWYg
KCFkZXN0cm95QWxsRnJhbWVzKSB7CisjaWYgVVNFKENHKQorICAgICAgICAvLyBSZWNlbnQgdmVy
c2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBmcmFtZXMg
aWYgdGhlIGNsaWVudAorICAgICAgICAvLyBhcHBsaWNhdGlvbiBubyBsb25nZXIgaG9sZHMgcmVm
ZXJlbmNlcyB0byB0aGVtLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheQorICAgICAg
ICAvLyB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZCB0byBkZXN0cm95
IGFsbCBvZiB0aGUgZnJhbWVzLgorICAgICAgICBVTlVTRURfUEFSQU0oY2xlYXJCZWZvcmVGcmFt
ZSk7CisjZWxzZQogICAgICAgICBpZiAobV9kZWNvZGVyKQogICAgICAgICAgICAgbV9kZWNvZGVy
LT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7CisjZW5kaWYKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGRlbGV0ZSBtX2RlY29kZXI7Ci0gICAgbV9kZWNvZGVy
ID0gMDsKKyAgICBtX2RlY29kZXIgPSBudWxscHRyOwogICAgIGlmIChkYXRhKQogICAgICAgICBz
ZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6Omlu
aXRpYWxpemVkKCkgY29uc3QKKyAgICAKK3ZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJ
c0NyZWF0ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotICAgIHJldHVybiBtX2RlY29kZXI7Cisg
ICAgaWYgKG1fZGVjb2RlcikKKyAgICAgICAgcmV0dXJuOworI2lmIFVTRShDRykKKyAgICBVTlVT
RURfUEFSQU0oZGF0YSk7CisgICAgbV9kZWNvZGVyID0gbmV3IEltYWdlRGVjb2RlcigpOworI2Vs
c2UKKyAgICBtX2RlY29kZXIgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbWFnZURlY29kZXJQdHI+KE5h
dGl2ZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBtX2FscGhhT3B0aW9uLCBtX2dhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKSk7CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKKyAgICBpZiAobV9kZWNvZGVyKQorICAgICAgICBtX2RlY29kZXItPnNldE1heE51bVBp
eGVscyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7CisjZW5kaWYKKyNlbmRpZgorICAgIAog
fQogCiB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgLy8gTWFrZSB0aGUgZGVjb2RlciBieSBzbmlmZmluZyB0
aGUgYnl0ZXMuCi0gICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBleGFtaW5lIHRoZSBkYXRhIGFuZCBp
bnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgZGVjb2RlciBwbHVnaW4u
Ci0gICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBhdmFpbGFibGUgdG8gZGV0ZXJtaW5l
IHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3aWxsIGJlCi0gICAgLy8gbWFkZS4K
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBlbnN1cmVEZWNvZGVy
SXNDcmVhdGVkKGRhdGEpOwogICAgIGlmICghbV9kZWNvZGVyKSB7Ci0gICAgICAgIG1fZGVjb2Rl
ciA9IHN0YXRpY19jYXN0PE5hdGl2ZUltYWdlRGVjb2RlclB0cj4oTmF0aXZlSW1hZ2VEZWNvZGVy
OjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pKTsKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAgICAgICBp
ZiAobV9kZWNvZGVyICYmIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKQotICAgICAgICAgICAg
bV9kZWNvZGVyLT5zZXRNYXhOdW1QaXhlbHMoc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOwot
I2VuZGlmCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CiAg
ICAgfQotCi0gICAgaWYgKG1fZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVyLT5zZXREYXRhKGRh
dGEsIGFsbERhdGFSZWNlaXZlZCk7Ci19Ci0KLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZp
bGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKKyAgICAKKyAgICBtX2RlY29kZXItPnNldERh
dGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNv
dXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdAorYm9vbCBJbWFnZVNv
dXJjZTo6aXNTaXplQXZhaWxhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKLX0KKyAgICBp
ZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAo
IW1fc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwogCi1ib29sIEltYWdlU291
cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAotewotICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtX3NpemUgPSBmcmFtZVNpemVBdEluZGV4
KDAsIDApOworICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IGZyYW1lU2l6ZUF0SW5k
ZXgoMCwgMCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUoKQorSW50U2l6ZSBJbWFnZVNvdXJj
ZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2RlciAmJiBtX2RlY29kZXItPmlz
U2l6ZUF2YWlsYWJsZSgpOworICAgIHJldHVybiBpc1NpemVBdmFpbGFibGUoKSA/IG1fc2l6ZSA6
IEludFNpemUoKTsKIH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZShJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pIGNvbnN0CitJbnRTaXplIEltYWdlU291cmNlOjpz
aXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZnJhbWVTaXpl
QXRJbmRleCgwLCAwLCBkZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIGlzU2l6ZUF2YWlsYWJsZSgp
ID8gbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uIDogSW50U2l6ZSgpOwogfQotCi1JbnRTaXpl
IEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAorICAg
IAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxl
KGZsb2F0IHNjYWxlLCBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKSBj
b25zdAogewotICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwot
Ci0gICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4KTsK
LSAgICBpZiAoKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pICYmIG1fZGVjb2Rlci0+b3JpZW50YXRpb24oKS51c2VzV2lkdGhB
c0hlaWdodCgpKQotICAgICAgICByZXR1cm4gSW50U2l6ZShzaXplLmhlaWdodCgpLCBzaXplLndp
ZHRoKCkpOwotCi0gICAgcmV0dXJuIHNpemU7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmdldEhv
dFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGVjb2RlciA/
IG1fZGVjb2Rlci0+aG90U3BvdChob3RTcG90KSA6IGZhbHNlOworI2lmIFVTRShDRykKKyAgICBy
ZXR1cm4gSW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoc2NhbGUsIG1heGlt
dW1TdWJzYW1wbGluZ0xldmVsKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNjYWxlKTsKKyAg
ICBVTlVTRURfUEFSQU0obWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiAwOwor
I2VuZGlmCiB9Ci0KKyAgICAKIHNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRl
cm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKIHsKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIEltYWdl
RGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7CisjZWxzZQogICAg
IHJldHVybiAwOworI2VuZGlmCiB9Ci0KKyAgICAKIGludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlv
bkNvdW50KCkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5yZXBldGl0aW9u
Q291bnQoKSA6IGNBbmltYXRpb25Ob25lOworICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKKyNpZiBV
U0UoQ0cpCisgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7CisjZWxzZQorICAgICAg
ICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7CisjZW5kaWYKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5y
ZXBldGl0aW9uQ291bnQoKTsKIH0KLQorICAgIAogc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNv
dW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNv
dW50KCkgOiAwOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUNv
dW50KCkgOiAwOworfQorICAgIAorU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVF
eHRlbnNpb24oKSA6IFN0cmluZygpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3Vy
Y2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCiti
b29sIEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAorewor
ICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIFVTRShD
RykKKyAgICBib29sIHJlc3VsdCA9IG1fZGVjb2Rlci0+Z2V0SG90U3BvdChob3RTcG90KTsKKyNl
bHNlCisgICAgYm9vbCByZXN1bHQgPSBtX2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7CisjZW5k
aWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdl
U291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFnZUZyYW1lSW5kZXggaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOworI2lmIFVTRShDRykK
KyAgICAgICAgcmV0dXJuIG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3Vic2FtcGxpbmdM
ZXZlbCk7CiAKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVy
QXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJ
bWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1z
IGZvciBzb21lIHBvcnRzLiAgSWYgd2UgaGF2ZSBhbgorICAgIC8vIFplcm8taGVpZ2h0IGltYWdl
cyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuIElmIHdlIGhhdmUgYW4KICAgICAv
LyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KICAgICBpZiAoc2l6ZSgpLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIAogICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdl
LiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCiAgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2
ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCiAgICAg
cmV0dXJuIGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOworI2VuZGlmCiB9CiAKLWZsb2F0IElt
YWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCitib29sIEltYWdl
U291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KEltYWdlRnJhbWVJbmRleCBpbmRleCkKIHsK
LSAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFpbml0aWFs
aXplZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBp
bml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7
CisjZWxzZQorICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJB
dEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gYnVmZmVyICYmIGJ1ZmZlci0+c3RhdHVzKCkgPT0g
SW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyNlbmRpZgorfQorCitib29sIEltYWdlU291cmNl
OjpmcmFtZUhhc0FscGhhQXRJbmRleChJbWFnZUZyYW1lSW5kZXggaW5kZXgpCit7CisgICAgaWYg
KCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4g
bV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Cit9CisgICAgCitib29sIElt
YWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4
IGluZGV4KSBjb25zdAoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAm
JiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRleCk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CiAKK2Zsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChJbWFnZUZyYW1lSW5k
ZXggaW5kZXgpCit7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gMDsK
KyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0SW5kZXgo
aW5kZXgpOworI2Vsc2UKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1l
QnVmZmVyQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMo
KSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQogICAgICAgICByZXR1cm4gMDsKLQorICAgIAog
ICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4g
aW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KICAgICAvLyBXZSBmb2xsb3cgRmly
ZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFt
ZXMgdGhhdCBzcGVjaWZ5CiAgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFy
Oi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+CkBAIC0x
ODQsMzYgKzI1OCw0NyBAQCBmbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgo
c2l6ZV90IGluZGV4KQogICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKICAgICAgICAgcmV0dXJu
IDAuMTAwZjsKICAgICByZXR1cm4gZHVyYXRpb247CisjZW5kaWYKIH0KLQotSW1hZ2VPcmllbnRh
dGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbigpIDogRGVmYXVsdElt
YWdlT3JpZW50YXRpb247Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdElu
ZGV4KHNpemVfdCBpbmRleCkKKyAgICAKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9y
aWVudGF0aW9uQXRJbmRleChJbWFnZUZyYW1lSW5kZXggaW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX2RlY29kZXIt
PmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKKyAg
ICAgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOworI2lmIFVTRShDRykKKyAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oaW5kZXgpOworICAgIHJldHVybiBtX2RlY29kZXItPm9yaWVudGF0aW9uKCk7
CisjZW5kaWYKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QgaW5kZXgpCit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoSW1h
Z2VGcmFtZUluZGV4IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4
KTsKLSAgICByZXR1cm4gYnVmZmVyICYmIGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVDb21wbGV0ZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybiAw
OworI2lmIFVTRShDRykKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5mcmFtZUJ5dGVzQXRJbmRleChp
bmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdWJzYW1w
bGluZ0xldmVsKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5mcmFtZUJ5dGVzQXRJbmRleChpbmRl
eCk7CisjZW5kaWYKIH0KIAotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK0ludFNpemUgSW1hZ2VTb3Vy
Y2U6OmZyYW1lU2l6ZUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QKIHsKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZnJhbWVCeXRlc0F0SW5kZXgo
aW5kZXgpOworICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuIEludFNpemUo
KTsKKyNpZiBVU0UoQ0cpCisgICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVB
dEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgSW50U2l6ZSBzaXplID0g
bV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4KTsKKyAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRhdGlvbigpOworI2VuZGlmCisgICAgcmV0
dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRT
aXplKCkgOiBzaXplOwogfQogCiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCBhY2RkMWNlNGNlMzAw
ZGU4MWM5ZTA2MmVlZTc2MDdiZjQ3MmE3MGFmLi40YTI2OTE1MmY2YWM0YzY3ZDZlYjdiNjg3MjZi
MDkwYmU0YjI2MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmgKQEAgLTI3LDEyICsyNywxNCBAQAogI2lmbmRlZiBJbWFnZVNvdXJjZV9oCiAj
ZGVmaW5lIEltYWdlU291cmNlX2gKIAorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2lmIFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3Vy
Y2VSZWY7CkBAIC00NiwxOCArNDgsOSBAQCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKLSNpZiBVU0UoQ0cpCi10eXBlZGVmIENHSW1hZ2VTb3Vy
Y2VSZWYgTmF0aXZlSW1hZ2VEZWNvZGVyUHRyOwotI2Vsc2UKIGNsYXNzIEltYWdlRGVjb2RlcjsK
IHR5cGVkZWYgSW1hZ2VEZWNvZGVyKiBOYXRpdmVJbWFnZURlY29kZXJQdHI7Ci0jZW5kaWYKLQot
I2lmIFVTRShDRykKLSNkZWZpbmUgTmF0aXZlSW1hZ2VEZWNvZGVyIEltYWdlRGVjb2RlcgotI2Vs
c2UKIHR5cGVkZWYgSW1hZ2VEZWNvZGVyIE5hdGl2ZUltYWdlRGVjb2RlcjsKLSNlbmRpZgogCiAv
LyBSaWdodCBub3cgR0lGcyBhcmUgdGhlIG9ubHkgcmVjb2duaXplZCBpbWFnZSBmb3JtYXQgdGhh
dCBzdXBwb3J0cyBhbmltYXRpb24uCiAvLyBUaGUgYW5pbWF0aW9uIHN5c3RlbSBhbmQgdGhlIGNv
bnN0YW50cyBiZWxvdyBhcmUgZGVzaWduZWQgd2l0aCB0aGlzIGluIG1pbmQuCkBAIC03Nyw5ICs3
MCw2IEBAIGNvbnN0IGludCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmlt
YXRpb25Mb29wSW5maW5pdGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwog
Ci0vLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGlt
ZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVs
OwotCiBjbGFzcyBJbWFnZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VT
b3VyY2UpOwogcHVibGljOgpAQCAtMTEwLDY3ICsxMDAsNTUgQEAgcHVibGljOgogICAgIC8vIGRl
Y29kZWQgZnJhbWVzLgogICAgIC8vCiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgY2xl
YXIoZmFsc2UsIG4pIGFuZCBzdWJzZXF1ZW50bHkgY2FsbAotICAgIC8vIGNyZWF0ZUZyYW1lQXRJ
bmRleChtKSB3aXRoIG0gPCBuLCB1bmxlc3MgdGhleSBmaXJzdCBjYWxsIGNsZWFyKHRydWUpLgor
ICAgIC8vIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5
IGZpcnN0IGNhbGwgY2xlYXIodHJ1ZSkuCiAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgc3RhdGVm
dWwgSW1hZ2VTb3VyY2VzL2RlY29kZXJzIHdpbGwgd29yayBwcm9wZXJseS4KICAgICAvLwogICAg
IC8vIFRoZSB8ZGF0YXwgYW5kIHxhbGxEYXRhUmVjZWl2ZWR8IHBhcmFtZXRlcnMgc2hvdWxkIGJl
IHN1cHBsaWVkIGJ5IGNhbGxlcnMKICAgICAvLyB3aG8gc2V0IHxkZXN0cm95QWxsfCB0byB0cnVl
IGlmIHRoZXkgd2lzaCB0byBiZSBhYmxlIHRvIGNvbnRpbnVlIHVzaW5nCiAgICAgLy8gdGhlIElt
YWdlU291cmNlLiAgVGhpcyB3YXkgaW1wbGVtZW50YXRpb25zIHdoaWNoIGNob29zZSB0byBkZXN0
cm95IHRoZWlyCiAgICAgLy8gZGVjb2RlcnMgaW4gc29tZSBjYXNlcyBjYW4gcmVjb25zdHJ1Y3Qg
dGhlbSBjb3JyZWN0bHkuCi0gICAgdm9pZCBjbGVhcihib29sIGRlc3Ryb3lBbGwsCi0gICAgICAg
ICAgICAgICBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSA9IDAsCi0gICAgICAgICAgICAgICBTaGFy
ZWRCdWZmZXIqIGRhdGEgPSBOVUxMLAotICAgICAgICAgICAgICAgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQgPSBmYWxzZSk7CisgICAgdm9pZCBjbGVhcihib29sIGRlc3Ryb3lBbGwsIEltYWdlRnJhbWVJ
bmRleCBjbGVhckJlZm9yZUZyYW1lID0gMCwgU2hhcmVkQnVmZmVyKiBkYXRhID0gbnVsbHB0ciwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQgPSBmYWxzZSk7CiAKLSAgICBib29sIGluaXRpYWxpemVkKCkg
Y29uc3Q7CisgICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlcjsg
fQogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwotICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwotCi0gICAgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0OwotICAg
IGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKLSAg
ICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOworICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgY29u
c3Q7CiAgICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhvdXQgc3Vic2FtcGxpbmcuCi0g
ICAgSW50U2l6ZSBzaXplKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpKSBjb25zdDsKLSAgICAvLyBTaXplIG9mIG9wdGlvbmFsbHkgc3Vi
c2FtcGxlZCBmcmFtZS4KLSAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gMCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpIGNvbnN0OwotCi0gICAgYm9vbCBnZXRIb3RTcG90KEludFBv
aW50JikgY29uc3Q7CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgSW50U2l6ZSBzaXpl
UmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7CiAKKyAgICBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAg
ICAgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0OwogCi0g
ICAgaW50IHJlcGV0aXRpb25Db3VudCgpOwotCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25z
dDsKKyAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCk7CisgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3Q7CisgICAgYm9vbCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Q7CiAKLSAg
ICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3
aXRoIGEgaGlnaGVyIGluZGV4OwotICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3Zl
LgotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gMCk7Ci0KLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QpOwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBv
ciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgotICAgIGJvb2wgZnJhbWVJ
c0NvbXBsZXRlQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMg
Y29tcGxldGVseSBkZWNvZGVkLgotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdElu
ZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KKyAgICBQYXNzTmF0
aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4LCBTdWJz
YW1wbGluZ0xldmVsID0gMCk7CiAKLSAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBp
biB0aGUgZGVjb2RlZCBmcmFtZS4gSWYgdGhlIGZyYW1lIGlzIG5vdCB5ZXQKLSAgICAvLyBkZWNv
ZGVkIHRoZW4gcmV0dXJuIDAuCi0gICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gMCkgY29uc3Q7CisgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVB
dEluZGV4KEltYWdlRnJhbWVJbmRleCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBpcyBj
b21wbGV0ZWx5IGRlY29kZWQuCisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChJbWFnZUZy
YW1lSW5kZXgpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkg
YWxwaGEuCisgICAgYm9vbCBhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoSW1hZ2VGcmFt
ZUluZGV4KSBjb25zdDsKKyAgICAKKyAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChJbWFn
ZUZyYW1lSW5kZXgpOworICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KElt
YWdlRnJhbWVJbmRleCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KIAotI2lmIEVO
QUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIG1h
eFBpeGVsc1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZElt
YWdlOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2ln
bmVkIG1heFBpeGVscykgeyBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsg
fQotI2VuZGlmCisgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoSW1hZ2VGcmFtZUluZGV4
LCBTdWJzYW1wbGluZ0xldmVsID0gMCkgY29uc3Q7CisgICAgSW50U2l6ZSBmcmFtZVNpemVBdElu
ZGV4KEltYWdlRnJhbWVJbmRleCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIE5hdGl2ZUltYWdlRGVjb2RlclB0ciBtX2RlY29kZXI7Ci0KKyAgICB2b2lk
IGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKik7CisgICAgCisgICAgTmF0aXZl
SW1hZ2VEZWNvZGVyUHRyIG1fZGVjb2RlciB7IG51bGxwdHIgfTsKKyAgICBtdXRhYmxlIEludFNp
emUgbV9zaXplOworICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRp
b247CisgICAgCiAjaWYgIVVTRShDRykKLSAgICBBbHBoYU9wdGlvbiBtX2FscGhhT3B0aW9uOwot
ICAgIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b247Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAg
IHN0YXRpYyB1bnNpZ25lZCBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsKKyAgICBBbHBoYU9w
dGlvbiBtX2FscGhhT3B0aW9uIHsgQWxwaGFQcmVtdWx0aXBsaWVkIH07CisgICAgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiB7IEdhbW1hQW5k
Q29sb3JQcm9maWxlQXBwbGllZCB9OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX21heFBp
eGVsc1BlckRlY29kZWRJbWFnZSA9IDEwMjQgKiAxMDI0OwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAppbmRleCBk
Zjk0MWE1NjZhOWU0NjkyNzcyN2JhMWVjNjg0OGYyMTY4MDNhNDViLi5lY2ExYjkyYzQxZWUxODI4
ZTMxMGQ1YmVkYmIyYjVhY2E1OTVmNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUg
TmF0aXZlSW1hZ2VQdHJfaAogCiAjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CiAjZWxpZiBVU0UoQ0FJUk8p
CiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKQEAgLTQxLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogLy8gRklYTUU6IE5hdGl2ZUltYWdlUHRyIGFuZCBQYXNzTmF0aXZlSW1hZ2VQdHIg
c2hvdWxkIGJlIHNtYXJ0CiAvLyBwb2ludGVycyAoc2VlIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpKS4KICNpZiBVU0UoQ0cpCi10eXBlZGVmIENHSW1hZ2VSZWYgTmF0aXZl
SW1hZ2VQdHI7Cit0eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsK
ICNlbGlmIFVTRShDQUlSTykKIHR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZl
SW1hZ2VQdHI7CiB0eXBlZGVmIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBQYXNzTmF0aXZl
SW1hZ2VQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA2M2RjZjBhMjUzZTIzNDBmNjdmMWM4MWQ4NWZj
MjcwZGQyMzBlODZkLi5hNGM2NWJkZmYzMmE5MmY5YzFkZjI2ZDRiZjUzMDgwZjA1YWI5NjE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNB
OjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAo
aW1hZ2UpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkuZ2V0KCk7CiAgICAgICAgIGlmICghbmV3SW1h
Z2UpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggY2Q1
N2VlNDg1ZWE4MGM2Y2YzNDdhYjNiZDk3MzdkNTk5OWUxMDI4Mi4uMTAyMjM1ZDlhZjAwNTRkNjM4
OTFmYzRjN2NlNWNkNzQ1YzYwMDFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTQwLDE2
ICs0MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX3NpemUoY2Fpcm9TdXJm
YWNlU2l6ZShuYXRpdmVJbWFnZS5nZXQoKSkpCi0gICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xl
dmVsKDApCiAgICAgLCBtX2N1cnJlbnRGcmFtZSgwKQogICAgICwgbV9yZXBldGl0aW9uQ291bnQo
Y0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3JlcGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQog
ICAgICwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApCi0gICAgLCBtX2RlY29kZWRTaXplKG1fc2l6
ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpICogNCkKICAgICAsIG1fZnJhbWVDb3VudCgxKQot
ICAgICwgbV9pc1NvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9y
KGZhbHNlKQogICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQogICAgICwgbV9hbGxEYXRh
UmVjZWl2ZWQodHJ1ZSkKICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKQEAgLTU3LDExICs1Miw5IEBA
IEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmF0
aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiB7
CiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fp
cm9fc3VyZmFjZV9nZXRfY29udGVudChuYXRpdmVJbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVO
VF9DT0xPUjsKLSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gbmF0aXZlSW1hZ2U7Ci0gICAgbV9m
cmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOwotCi0gICAgY2hlY2tGb3JTb2xpZENvbG9y
KCk7CisgICAgbV9mcmFtZXNbMF0gPSBJbWFnZUZyYW1lRGF0YShuYXRpdmVJbWFnZSk7CisgICAg
bV9zaXplID0gbV9mcmFtZXNbMF0ubV9zaXplOworICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUu
d2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSAqIDQ7CiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLApAQCAtNzIsNyArNjUsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogCiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAotICAgIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJh
bWUpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBl
YXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCkBAIC0x
MjQsNDcgKzExNyw1MSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogCiB2b2lkIEJpdG1hcElt
YWdlOjpkZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0CiB7Ci0gICAgbV9t
aW5pbXVtU3Vic2FtcGxpbmdMZXZlbCA9IDA7CisgICAgbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCA9IDA7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCitJbWFn
ZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
ICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICAsIG1faGF2ZU1ldGFkYXRhKHRydWUpCisgICAgLCBt
X2lzQ29tcGxldGUodHJ1ZSkKIHsKLSAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgIG1f
Y2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVlOwotCi0gICAgaWYgKGZyYW1lQ291bnQoKSA+IDEp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2Ug
PSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgIGlmICghc3VyZmFjZSkgLy8gSWYg
aXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UuZ2V0KCkpICE9IENB
SVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW50U2l6ZSBz
aXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlLmdldCgpKTsKLQotICAgIGlmIChzaXplLndp
ZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHVuc2lnbmVkKiBwaXhlbENvbG9yID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UuZ2V0KCkpKTsKLSAgICBtX3NvbGlk
Q29sb3IgPSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWxDb2xvcik7Ci0KLSAgICBt
X2lzU29saWRDb2xvciA9IHRydWU7CisgICAgQVNTRVJUKG1faW1hZ2UpOworICAgIG1fc2l6ZSA9
IGNhaXJvU3VyZmFjZVNpemUobV9pbWFnZS5nZXQoKSk7CisgICAgbV9mcmFtZUJ5dGVzID0gbV9z
aXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCkgKiA0OworICAgIG1faGFzQWxwaGEgPSBjYWly
b19zdXJmYWNlX2dldF9jb250ZW50KG1faW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09M
T1I7CiB9CiAKLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCisKK2Jv
b2wgSW1hZ2VGcmFtZURhdGE6OmNsZWFyKEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykK
IHsKLSAgICBpZiAoY2xlYXJNZXRhZGF0YSkKKyAgICBpZiAoZnJhbWVDYWNoaW5nID09IEltYWdl
RnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpCiAgICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7
CiAKLSAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBtX2ZyYW1lID0gbnVsbHB0cjsKKyAgICBp
ZiAobV9pbWFnZSkgeworICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorT3B0aW9uYWw8Q29sb3I+IElt
YWdlRnJhbWVEYXRhOjpzb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faW1hZ2UpCisg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIAorICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90
eXBlKG1faW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisKKyAgICBJbnRTaXplIHNpemUgPSBjYWlyb1N1cmZhY2VTaXplKG1f
aW1hZ2UuZ2V0KCkpOworCisgICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0
KCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisKKyAgICB1bnNpZ25lZCogcGl4ZWxD
b2xvciA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShtX2ltYWdlLmdldCgpKSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11bHRp
cGxpZWRBUkdCKCpwaXhlbENvbG9yKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmlu
ZGV4IGNjNzA0NjE0N2FlODFmMWZhZGFhNmQ4NDE2MjQ5ODBjNmZkZmNiZjEuLjhjNDE4NmQ3MWU1
M2ExOTA3ZTkyZDczYTJiMDE2NDdmZmQ2NmIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1h
Z2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAg
ICAgICAgZGVjb2Rlci5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eCgwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2Ug
PSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2Ug
PSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5w
dXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBh
bHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRleCAwMWI3ZDY5
MmNkYmQ3YWI0ZDIyYmJjMTM5OWMxMDMyOGY1N2U1ZTQ3Li41YWMzMzZkMmFmYzI2ZmIxMjQzMTlm
ZGY2NDY1ZjUyYzVjZDgxNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtNDksMzEgKzQ5LDYzIEBACiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorSW1hZ2VGcmFtZURhdGE6OkltYWdlRnJh
bWVEYXRhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKKyAgICA6IG1faW1hZ2UoaW1hZ2Up
CisgICAgLCBtX2hhdmVNZXRhZGF0YSh0cnVlKQorICAgICwgbV9pc0NvbXBsZXRlKHRydWUpCisg
ICAgLCBtX2hhc0FscGhhKHRydWUpCit7CisgICAgQVNTRVJUKG1faW1hZ2UpOworICAgIENHRmxv
YXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9pbWFnZS5nZXQoKSk7CisgICAgQ0dGbG9hdCBo
ZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1faW1hZ2UuZ2V0KCkpOworICAgIG1fZnJhbWVCeXRl
cyA9IHdpZHRoICogaGVpZ2h0ICogNDsKKyAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWln
aHQpOworfQogCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQorYm9v
bCBJbWFnZUZyYW1lRGF0YTo6Y2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQog
ewotICAgIGlmIChjbGVhck1ldGFkYXRhKQorICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gSW1hZ2VG
cmFtZUNhY2hpbmc6OkNhY2hlTm9uZSkKICAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsK
IAogICAgIG1fb3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKICAgICBtX3N1
YnNhbXBsaW5nTGV2ZWwgPSAwOwogCi0gICAgaWYgKG1fZnJhbWUpIHsKKyAgICBpZiAobV9pbWFn
ZSkgewogI2lmIENBQ0hFX1NVQklNQUdFUwotICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJ
bWFnZShtX2ZyYW1lKTsKKyAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFn
ZS5nZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgQ0dJbWFnZVJlbGVhc2UobV9mcmFtZSk7Ci0gICAg
ICAgIG1fZnJhbWUgPSAwOworICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KKyAgICAKK09wdGlvbmFsPENv
bG9yPiBJbWFnZUZyYW1lRGF0YTo6c29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lt
YWdlKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAKKyAgICAvLyBDdXJyZW50bHkgd2Ug
b25seSBjaGVjayBmb3Igc29saWQgY29sb3IgaW4gdGhlIGltcG9ydGFudCBzcGVjaWFsIGNhc2Ug
b2YgYSAxeDEgaW1hZ2UuCisgICAgaWYgKENHSW1hZ2VHZXRXaWR0aChtX2ltYWdlLmdldCgpKSAh
PSAxIHx8IENHSW1hZ2VHZXRIZWlnaHQobV9pbWFnZS5nZXQoKSkgIT0gMSkKKyAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgCisgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQor
ICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0
ZU9yZGVyMzJCaWcpKTsKKyAgICBpZiAoIWJpdG1hcENvbnRleHQpCisgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgIAorICAgIEdyYXBoaWNzQ29udGV4dChiaXRtYXBDb250ZXh0LmdldCgpKS5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgQ0dSZWN0IGRlc3RpbmF0
aW9uUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgMSwgMSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdl
KGJpdG1hcENvbnRleHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCwgbV9pbWFnZS5nZXQoKSk7Cisg
ICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOworICAg
IAorICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAq
IDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Cit9
CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlUHRy
IGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQot
ICAgICwgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgwKQotICAgICwgbV9pbWFnZU9yaWVudGF0
aW9uKE9yaWdpblRvcExlZnQpCi0gICAgLCBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KGZhbHNlKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50
KGNBbmltYXRpb25Ob25lKQogICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikK
QEAgLTgxLDE2ICsxMTMsMTQgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYg
Y2dJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX2RlY29kZWRTaXplKDAp
CiAgICAgLCBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSgwKQogICAgICwgbV9mcmFtZUNvdW50KDEp
Ci0gICAgLCBtX2lzU29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29s
b3IoZmFsc2UpCiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKHRydWUpCiAgICAgLCBtX2FsbERh
dGFSZWNlaXZlZCh0cnVlKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQogICAgICwgbV9zaXplQXZh
aWxhYmxlKHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiB7Ci0gICAgQ0dGbG9h
dCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKTsKLSAgICBDR0Zsb2F0IGhlaWdodCA9
IENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFnZSk7CisgICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VH
ZXRXaWR0aChpbWFnZS5nZXQoKSk7CisgICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlLmdldCgpKTsKICAgICBtX2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0
OwogICAgIG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7CiAKQEAgLTk5LDExICsxMjks
NyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9i
c2VydmVyKiBvYnNlcnZlcikKICAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3Np
emU7CiAKICAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBD
R0ltYWdlUmV0YWluKGNnSW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVl
OwotICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLQotICAgIGNoZWNrRm9y
U29saWRDb2xvcigpOworICAgIG1fZnJhbWVzWzBdID0gSW1hZ2VGcmFtZURhdGEoaW1hZ2UpOwog
fQogCiB2b2lkIEJpdG1hcEltYWdlOjpkZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgp
IGNvbnN0CkBAIC0xMjUsNjQgKzE1MSwyMSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXRlcm1pbmVN
aW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICB9
CiAKLSAgICBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsID0gY3VycmVudExldmVsOwotfQotCi12
b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQotewotICAgIG1fY2hlY2tlZEZv
clNvbGlkQ29sb3IgPSB0cnVlOwotICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0KLSAgICBp
ZiAoZnJhbWVDb3VudCgpID4gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFoYXZlRnJh
bWVBdEluZGV4KDApKSB7Ci0gICAgICAgIEludFNpemUgc2l6ZSA9IG1fc291cmNlLmZyYW1lU2l6
ZUF0SW5kZXgoMCwgMCk7Ci0gICAgICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhl
aWdodCgpICE9IDEpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFlbnN1cmVG
cmFtZUlzQ2FjaGVkKDApKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBudWxscHRyOwotICAgIGlmIChtX2ZyYW1lcy5zaXplKCkpCi0gICAgICAg
IGltYWdlID0gbV9mcmFtZXNbMF0ubV9mcmFtZTsKLQotICAgIGlmICghaW1hZ2UpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZvciBzb2xpZCBjb2xv
ciBpbiB0aGUgaW1wb3J0YW50IHNwZWNpYWwgY2FzZSBvZiBhIDF4MSBpbWFnZS4KLSAgICBpZiAo
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSAxICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09
IDEpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgICAgICBS
ZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNl
UmVmKCksCi0gICAgICAgICAgICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkJpZykpOwotICAgICAgICBpZiAoIWJpdG1hcENvbnRleHQpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dChiaXRtYXBDb250ZXh0Lmdl
dCgpKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgIENHUmVj
dCBkZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpOwotICAgICAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LCBpbWFn
ZSk7Ci0gICAgICAgIGlmICghcGl4ZWxbM10pCi0gICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBD
b2xvcigwLCAwLCAwLCAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zb2xpZENvbG9y
ID0gQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotCi0gICAgICAgIG1f
aXNTb2xpZENvbG9yID0gdHJ1ZTsKLSAgICB9CisgICAgbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCA9IGN1cnJlbnRMZXZlbDsKIH0KIAogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFn
ZVJlZigpCiB7Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRleCgwKTsKKyAgICByZXR1cm4gZnJhbWVJ
bWFnZUF0SW5kZXgoMCkuZ2V0KCk7CiB9CiAKIENHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldEZp
cnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHNpemVfdCBj
b3VudCA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOwotICAg
ICAgICBpZiAoY2dJbWFnZSAmJiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwgQ0dJ
bWFnZUdldEhlaWdodChjZ0ltYWdlKSkgPT0gc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBjZ0lt
YWdlOworICAgICAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRl
eChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdl
LmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpID09IHNpemUpCisgICAgICAg
ICAgICByZXR1cm4gaW1hZ2UuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgdG8gdGhl
IGRlZmF1bHQgQ0dJbWFnZVJlZiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSByaWdodCBzaXplCkBAIC0x
OTcsOCArMTgwLDggQEAgUmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0lt
YWdlQXJyYXkoKQogICAgIAogICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJl
ZiBjdXJyRnJhbWUgPSBmcmFtZUF0SW5kZXgoaSkpCi0gICAgICAgICAgICBDRkFycmF5QXBwZW5k
VmFsdWUoYXJyYXksIGN1cnJGcmFtZSk7CisgICAgICAgIGlmIChOYXRpdmVJbWFnZVB0ciBjdXJy
RnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShhcnJheSwgY3VyckZyYW1lLmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0Yo
YXJyYXkpOwogfQpAQCAtMjExLDE1ICsxOTQsMTUgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYK
ICAgICBzdGFydEFuaW1hdGlvbigpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2U7CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNlIHN1
YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgogICAgIGlmICh3
a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSkKLSAgICAgICAg
aW1hZ2UgPSBhZG9wdENGKGNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSkp
OworICAgICAgICBpbWFnZSA9IGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVu
dEZyYW1lKTsKICAgICBlbHNlIHsKICAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRp
b25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdl
dENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1YnNhbXBsaW5n
U2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlv
blJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlv
blJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKLSAgICAgICAgaW1hZ2Ug
PSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOworICAgICAg
ICBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1Nj
YWxlKTsKICAgICB9CiAKICAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3
b24ndCBoYXZlIGFuIGltYWdlIHlldC4KQEAgLTI1MSwxOCArMjM0LDE4IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0K
IAotUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQorUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpjb3B5VW5z
Y2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49
IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXgg
Pj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBpZiAo
aW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAg
ICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCk7CiAKICAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5t
X3N1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBDR0ltYWdlUmV0YWluKG1fZnJhbWVz
W2luZGV4XS5tX2ZyYW1lKTsKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
OwogCi0gICAgcmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CisgICAg
cmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcAppbmRleCA2YzAzYTJjZWY4NDYwNjU2MWVhMDdlYjkyOGYxY2Yy
OTVmOWY1ZTM2Li43YTEzYmI1ODQ2NzA4ZDM3ZTAyYmQzZGQ2NzIzYzI3YTQ5NTE3NmMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcApAQCAtMzMzLDEwICszMzMsMTAgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoZGVjb2Rl
ci5jcmVhdGVGcmFtZUF0SW5kZXgoMCkpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGRlY29k
ZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVj
b2RlZEltYWdlLmdldCgpOwogICAgIH0gZWxzZQotICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2lt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLmdldCgpOwogICAgIGlmICghbV9jZ0lt
YWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdl
UGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAg
ICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBjb250ZXh0LnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGE0NDk2NTQwNDZhZThm
MTBhYmFkMTY0MTVlNjQ2MGFkYmJiYjhlODguLjE2MjA5YWY1MzQ0ODFkYjRjZGRkOGI0MjNjZTdi
ZjJhNDBiMGRiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTMxMSw4ICszMTEsOCBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdAogICAgIGZsb2F0IGFkanVzdGVkWCA9IHBoYXNlLngoKSAtIGRl
c3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVkIHRoZSBjb250ZXh0IHNvIHRoYXQgZGVz
dFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91dC4KICAgICBmbG9hdCBh
ZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSAtIChwaGFzZS55KCkgLSBkZXN0UmVjdC55KCkg
KyB0aWxlUmVjdC55KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0u
ZCgpKSArIHNjYWxlZFRpbGVIZWlnaHQpOwogCi0gICAgQ0dJbWFnZVJlZiB0aWxlSW1hZ2UgPSBp
bWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGZsb2F0IGggPSBDR0ltYWdl
R2V0SGVpZ2h0KHRpbGVJbWFnZSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRpbGVJbWFn
ZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgZmxvYXQgaCA9IENH
SW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBzdWJJbWFnZTsKICNpZiBQTEFURk9STShJT1MpCkBAIC0zMjYsMTMgKzMyNiwxMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdlIG91
dCBvZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0aGUg
b3JpZ2luYWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVjYXVz
ZSBzdWItaW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25seSBy
ZW5kZXJzIHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAgICAgICAgIEFTU0VSVCho
ID09IGltYWdlLmhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VD
cmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLCB0aWxlUmVjdCkpOworICAgICAgICBzdWJJ
bWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UuZ2V0
KCksIHRpbGVSZWN0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBz
IGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBv
ciBub24temVybyBzcGFjaW5nLAogICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2ll
bnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hhbmlzbS4KICAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGgg
PSB0aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNm
b3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOworICAg
IGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLmdldCgpKTsKICAgICBpZiAodyA9
PSBpbWFnZS5zaXplKCkud2lkdGgoKSAmJiBoID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAh
c3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5nLmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBDRyBzZWVtcyB0byBzbmFwIHRoZSBpbWFnZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2Ug
Y2FyZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFnZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8g
d2Ugc2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUgbGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFn
ZSB0byBmaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjVhYzRhZjEzMDFlNGI1YjFjNzIyNmE1NTlm
MmYzOTNlZDhiNDk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNwcApAQCAtMCwwICsxLDQxMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKworI2lmIFVTRShDRykKKworI2luY2x1ZGUgIkNv
cmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRl
ICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKKyNpZiAhUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPEFwcGxpY2F0aW9u
U2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxJbWFnZUlP
L0ltYWdlSU8uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxJbWFnZUlPL0NHSW1hZ2VTb3VyY2VQcml2
YXRlLmg+CisjZWxzZQorY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTdWJzYW1wbGVG
YWN0b3IgPSBDRlNUUigia0NHSW1hZ2VTb3VyY2VTdWJzYW1wbGVGYWN0b3IiKTsKK2NvbnN0IENG
U3RyaW5nUmVmIGtDR0ltYWdlU291cmNlU2hvdWxkQ2FjaGVJbW1lZGlhdGVseSA9IENGU1RSKCJr
Q0dJbWFnZVNvdXJjZVNob3VsZENhY2hlSW1tZWRpYXRlbHkiKTsKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCitjb25zdCBDRlN0cmluZ1JlZiBXZWJDb3JlQ0dJbWFnZVByb3Bl
cnR5QVBOR1VuY2xhbXBlZERlbGF5VGltZSA9IENGU1RSKCJVbmNsYW1wZWREZWxheVRpbWUiKTsK
K2NvbnN0IENGU3RyaW5nUmVmIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HRGVsYXlUaW1lID0g
Q0ZTVFIoIkRlbGF5VGltZSIpOworY29uc3QgQ0ZTdHJpbmdSZWYgV2ViQ29yZUNHSW1hZ2VQcm9w
ZXJ0eUFQTkdMb29wQ291bnQgPSBDRlNUUigiTG9vcENvdW50Iik7CisKK2NvbnN0IENGU3RyaW5n
UmVmIGtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdCMzIgPSBDRlNUUigia0NHSW1hZ2VTb3Vy
Y2VTaG91bGRQcmVmZXJSR0IzMiIpOworY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VT
a2lwTWV0YWRhdGEgPSBDRlNUUigia0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEiKTsKKworc3Rh
dGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyhT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIERlY29kZU1vZGUgZGVjb2RlTW9kZSkK
K3sKKyAgICBjb25zdCBDRkluZGV4IGJhc2ljT3B0aW9ucyA9IDM7CisgICAgY29uc3Qgdm9pZCog
a2V5c1tiYXNpY09wdGlvbnMgKyAyXSA9IHsga0NHSW1hZ2VTb3VyY2VTaG91bGRDYWNoZSwga0NH
SW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0IzMiwga0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEg
fTsKKyAgICBjb25zdCB2b2lkKiB2YWx1ZXNbYmFzaWNPcHRpb25zICsgMl0gPSB7IGtDRkJvb2xl
YW5UcnVlLCBrQ0ZCb29sZWFuVHJ1ZSwga0NGQm9vbGVhblRydWUgfTsKKyAgICBDRkluZGV4IG51
bU9wdGlvbnMgPSBiYXNpY09wdGlvbnM7CisgICAgCisgICAgaWYgKHN1YnNhbXBsaW5nTGV2ZWwg
PiAwKSB7CisgICAgICAgIHNob3J0IGNvbnN0cmFpbmVkU3Vic2FtcGxpbmdMZXZlbCA9IHN0ZDo6
bWluPHNob3J0PigzLCBzdGQ6Om1heDxzaG9ydD4oMCwgc3Vic2FtcGxpbmdMZXZlbCkpOworICAg
ICAgICBpbnQgc3Vic2FtcGxlSW50ID0gMSA8PCBjb25zdHJhaW5lZFN1YnNhbXBsaW5nTGV2ZWw7
IC8vIFswLi4zXSA9PiBbMSwgMiwgNCwgOF0KKyAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVm
PiBzdWJzYW1wbGVOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsICBrQ0ZO
dW1iZXJJbnRUeXBlLCAgJnN1YnNhbXBsZUludCkpOworICAgICAgICAKKyAgICAgICAga2V5c1tu
dW1PcHRpb25zXSA9IGtDR0ltYWdlU291cmNlU3Vic2FtcGxlRmFjdG9yOworICAgICAgICB2YWx1
ZXNbbnVtT3B0aW9ucysrXSA9IGtDR0ltYWdlU291cmNlU3Vic2FtcGxlRmFjdG9yOworICAgIH0K
KyAgICAKKyAgICBpZiAoZGVjb2RlTW9kZSA9PSBEZWNvZGVNb2RlOjpJbW1lZGlhdGUpIHsKKyAg
ICAgICAga2V5c1tudW1PcHRpb25zXSA9IGtDR0ltYWdlU291cmNlU2hvdWxkQ2FjaGVJbW1lZGlh
dGVseTsKKyAgICAgICAgdmFsdWVzW251bU9wdGlvbnMrK10gPSBrQ0ZCb29sZWFuVHJ1ZTsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKG51bGxwdHIs
IGtleXMsIHZhbHVlcywgbnVtT3B0aW9ucywgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworfQorCitzdGF0aWMgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2VTb3VyY2VPcHRpb25zKFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCA9IDAsIERlY29kZU1vZGUgZGVjb2RlTW9kZSA9IERlY29kZU1vZGU6
OkxhenkpCit7CisgICAgaWYgKHN1YnNhbXBsaW5nTGV2ZWwgfHwgZGVjb2RlTW9kZSA9PSBEZWNv
ZGVNb2RlOjpJbW1lZGlhdGUpCisgICAgICAgIHJldHVybiBjcmVhdGVJbWFnZVNvdXJjZU9wdGlv
bnMoc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RlTW9kZSk7CisgICAgCisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBvcHRpb25zID0gY3JlYXRlSW1h
Z2VTb3VyY2VPcHRpb25zKDAsIERlY29kZU1vZGU6OkxhenkpOworICAgIHJldHVybiBvcHRpb25z
OworfQorCitzdGF0aWMgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVz
KENGRGljdGlvbmFyeVJlZiBpbWFnZVByb3BlcnRpZXMpCit7CisgICAgQVNTRVJUKGltYWdlUHJv
cGVydGllcyk7CisgICAgQ0ZOdW1iZXJSZWYgb3JpZW50YXRpb25Qcm9wZXJ0eSA9IChDRk51bWJl
clJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZVByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVy
dHlPcmllbnRhdGlvbik7CisgICAgaWYgKCFvcmllbnRhdGlvblByb3BlcnR5KQorICAgICAgICBy
ZXR1cm4gRGVmYXVsdEltYWdlT3JpZW50YXRpb247CisgICAgCisgICAgaW50IGV4aWZWYWx1ZTsK
KyAgICBDRk51bWJlckdldFZhbHVlKG9yaWVudGF0aW9uUHJvcGVydHksIGtDRk51bWJlckludFR5
cGUsICZleGlmVmFsdWUpOworICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpmcm9tRVhJRlZh
bHVlKGV4aWZWYWx1ZSk7Cit9CisgICAgCisjaWYgIVBMQVRGT1JNKENPQ09BKQorc2l6ZV90IHNo
YXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9m
Zl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCit7CisgICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRC
dWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBzaXplX3Qgc291
cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOworICAgIGlmIChwb3NpdGlvbiA+PSBzb3Vy
Y2VTaXplKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2Ug
PSBzaGFyZWRCdWZmZXItPmRhdGEoKSArIHBvc2l0aW9uOworICAgIHNpemVfdCBhbW91bnQgPSBz
dGQ6Om1pbjxzaXplX3Q+KGNvdW50LCBzb3VyY2VTaXplIC0gcG9zaXRpb24pOworICAgIG1lbWNw
eShidWZmZXIsIHNvdXJjZSwgYW1vdW50KTsKKyAgICByZXR1cm4gYW1vdW50OworfQorCit2b2lk
IHNoYXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKK3sKKyAgICBTaGFyZWRCdWZmZXIqIHNo
YXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIHNoYXJl
ZEJ1ZmZlci0+ZGVyZWYoKTsKK30KKyNlbmRpZgorCitJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rl
cigpCit7CisgICAgbV9uYXRpdmVEZWNvZGVyID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVu
dGFsKDApOworfQorCitTdWJzYW1wbGluZ0xldmVsIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdM
ZXZlbEZvclNjYWxlKGZsb2F0IHNjYWxlLCBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1w
bGluZ0xldmVsKQoreworICAgIC8vIFRoZXJlIGFyZSBmb3VyIHN1YnNhbXBsaW5nIGxldmVsczog
MCA9IDF4LCAxID0gMC41eCwgMiA9IDAuMjV4LCAzID0gMC4xMjV4LgorICAgIGZsb2F0IGNsYW1w
ZWRTY2FsZSA9IHN0ZDo6bWF4PGZsb2F0PigwLjEyNSwgc3RkOjptaW48ZmxvYXQ+KDEsIHNjYWxl
KSk7CisgICAgU3Vic2FtcGxpbmdMZXZlbCByZXN1bHQgPSBjZWlsZihsb2cyZigxIC8gY2xhbXBl
ZFNjYWxlKSk7CisgICAgQVNTRVJUKHJlc3VsdCA+PTAgJiYgcmVzdWx0IDw9IDMpOworICAgIHJl
dHVybiBzdGQ6Om1pbihyZXN1bHQsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKTsKK30KKworc2l6
ZV90IEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKK3sK
KyAgICAvLyBNZWFzdXJlZCBieSB0cmFjaW5nIG1hbGxvYy9jYWxsb2MgY2FsbHMgb24gTWFjIE9T
IDEwLjYuNiwgeDg2XzY0LgorICAgIC8vIEEgbm9uLXplcm8gdmFsdWUgZW5zdXJlcyBjYWNoZWQg
aW1hZ2VzIHdpdGggbm8gZGVjb2RlZCBmcmFtZXMgc3RpbGwgZW50ZXIKKyAgICAvLyB0aGUgbGl2
ZSBkZWNvZGVkIHJlc291cmNlcyBsaXN0IHdoZW4gdGhlIENHSW1hZ2VTb3VyY2UgZGVjb2RlcyBp
bWFnZQorICAgIC8vIHByb3BlcnRpZXMsIGFsbG93aW5nIHRoZSBjYWNoZSB0byBwcnVuZSB0aGUg
cGFydGlhbGx5IGRlY29kZWQgaW1hZ2UuCisgICAgLy8gVGhpcyB2YWx1ZSBpcyBsaWtlbHkgdG8g
YmUgaW5hY2N1cmF0ZSBvbiBvdGhlciBwbGF0Zm9ybXMsIGJ1dCB0aGUgb3ZlcmFsbAorICAgIC8v
IGJlaGF2aW9yIGlzIHVuY2hhbmdlZC4KKyAgICByZXR1cm4gMTMwODg7Cit9CisKK1N0cmluZyBJ
bWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKK3sKKyAgICBDRlN0cmluZ1Jl
ZiBpbWFnZVNvdXJjZVR5cGUgPSBDR0ltYWdlU291cmNlR2V0VHlwZShtX25hdGl2ZURlY29kZXIp
OworICAgIHJldHVybiBXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5
cGUoaW1hZ2VTb3VyY2VUeXBlKTsKK30KKworYm9vbCBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWls
YWJsZSgpIGNvbnN0Cit7CisgICAgLy8gUmFnbmFyb3MgeWVsbHM6IFRPTyBTT09OISBZb3UgaGF2
ZSBhd2FrZW5lZCBtZSBUT08gU09PTiwgRXhlY3V0dXMhCisgICAgaWYgKENHSW1hZ2VTb3VyY2VH
ZXRTdGF0dXMobV9uYXRpdmVEZWNvZGVyKSA8IGtDR0ltYWdlU3RhdHVzSW5jb21wbGV0ZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IGltYWdlMFByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0
SW5kZXgobV9uYXRpdmVEZWNvZGVyLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwor
ICAgIGlmICghaW1hZ2UwUHJvcGVydGllcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIHJldHVybiBDRkRpY3Rpb25hcnlDb250YWluc0tleShpbWFnZTBQcm9wZXJ0aWVzLmdldCgp
LCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxXaWR0aCkKKyAgICAmJiBDRkRpY3Rpb25hcnlDb250YWlu
c0tleShpbWFnZTBQcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxIZWlnaHQp
OworfQorCitJbnRTaXplIEltYWdlRGVjb2Rlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1f
c2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fc2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7
CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworc2l6ZV90IEltYWdlRGVjb2Rlcjo6ZnJhbWVDb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX25hdGl2ZURl
Y29kZXIpOworfQorCitpbnQgSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQoKSBjb25zdAor
eworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllcyhtX25hdGl2ZURlY29kZXIsIGltYWdlU291cmNlT3B0
aW9ucygpLmdldCgpKSk7CisgICAgaWYgKCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4gY0Fu
aW1hdGlvbkxvb3BPbmNlOworICAgIAorICAgIENGRGljdGlvbmFyeVJlZiBnaWZQcm9wZXJ0aWVz
ID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgp
LCBrQ0dJbWFnZVByb3BlcnR5R0lGRGljdGlvbmFyeSk7CisgICAgaWYgKGdpZlByb3BlcnRpZXMp
IHsKKyAgICAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdl
dFZhbHVlKGdpZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlHSUZMb29wQ291bnQpOworICAg
ICAgICAKKyAgICAgICAgLy8gTm8gcHJvcGVydHkgbWVhbnMgbG9vcCBvbmNlLgorICAgICAgICBp
ZiAoIW51bSkKKyAgICAgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7CisgICAgICAg
IAorICAgICAgICBpbnQgbG9vcENvdW50OworICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwg
a0NGTnVtYmVySW50VHlwZSwgJmxvb3BDb3VudCk7CisgICAgICAgIAorICAgICAgICAvLyBBIHBy
b3BlcnR5IHdpdGggdmFsdWUgMCBtZWFucyBsb29wIGZvcmV2ZXIuCisgICAgICAgIHJldHVybiBs
b29wQ291bnQgPyBsb29wQ291bnQgOiBjQW5pbWF0aW9uTG9vcEluZmluaXRlOworICAgIH0KKyAg
ICAKKyAgICBDRkRpY3Rpb25hcnlSZWYgcG5nUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBO
R0RpY3Rpb25hcnkpOworICAgIGlmIChwbmdQcm9wZXJ0aWVzKSB7CisgICAgICAgIENGTnVtYmVy
UmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwbmdQcm9wZXJ0aWVz
LCBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR0xvb3BDb3VudCk7CisgICAgICAgIGlmICghbnVt
KQorICAgICAgICAgICAgcmV0dXJuIGNBbmltYXRpb25Mb29wT25jZTsKKyAgICAgICAgCisgICAg
ICAgIGludCBsb29wQ291bnQ7CisgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1i
ZXJJbnRUeXBlLCAmbG9vcENvdW50KTsKKyAgICAgICAgcmV0dXJuIGxvb3BDb3VudCA/IGxvb3BD
b3VudCA6IGNBbmltYXRpb25Mb29wSW5maW5pdGU7CisgICAgfQorICAgIAorICAgIC8vIFR1cm5z
IG91dCB3ZSdyZSBub3QgYW4gYW5pbWF0ZWQgaW1hZ2UgYWZ0ZXIgYWxsLCBzbyB3ZSBkb24ndCBh
bmltYXRlLgorICAgIHJldHVybiBjQW5pbWF0aW9uTm9uZTsKK30KKworYm9vbCBJbWFnZURlY29k
ZXI6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0Cit7CisgICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQ
cm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIsIDAsIGltYWdlU291cmNlT3B0aW9ucygp
LmdldCgpKSk7CisgICAgaWYgKCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgaW50IHggPSAtMSwgeSA9IC0xOworICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51
bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBDRlNUUigiaG90
c3BvdFgiKSk7CisgICAgaWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1i
ZXJJbnRUeXBlLCAmeCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBudW0gPSAo
Q0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIo
ImhvdHNwb3RZIikpOworICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdldFZhbHVlKG51bSwga0NG
TnVtYmVySW50VHlwZSwgJnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KHggPCAwIHx8IHkgPCAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaG90U3Bv
dCA9IEludFBvaW50KHgsIHkpOworICAgIHJldHVybiB0cnVlOworfQorCitJbnRTaXplIEltYWdl
RGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4
KG1fbmF0aXZlRGVjb2RlciwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xl
dmVsKS5nZXQoKSkpOworICAgIAorICAgIGlmICghcHJvcGVydGllcykKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAKKyAgICBpbnQgd2lkdGggPSAwOworICAgIGludCBoZWlnaHQgPSAwOworICAg
IENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9w
ZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxXaWR0aCk7CisgICAgaWYgKG51bSkK
KyAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ3aWR0aCk7
CisgICAgCisgICAgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3Bl
cnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbEhlaWdodCk7CisgICAgaWYgKG51bSkK
KyAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZoZWlnaHQp
OworICAgIAorICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOworfQorCitib29sIElt
YWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGZyYW1lQ291bnQoKSk7CisgICAgcmV0dXJuIENHSW1hZ2VTb3VyY2VHZXRT
dGF0dXNBdEluZGV4KG1fbmF0aXZlRGVjb2RlciwgaW5kZXgpID09IGtDR0ltYWdlU3RhdHVzQ29t
cGxldGU7Cit9CisKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbkF0
SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5k
ZXgobV9uYXRpdmVEZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsK
KyAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRh
dGlvbjsKKyAgICAKKyAgICByZXR1cm4gb3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyhwcm9wZXJ0
aWVzLmdldCgpKTsKK30KKworZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgZmxvYXQgZHVyYXRpb24gPSAwOworICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3Vy
Y2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3Vy
Y2VPcHRpb25zKCkuZ2V0KCkpKTsKKyAgICBpZiAocHJvcGVydGllcykgeworICAgICAgICBDRkRp
Y3Rpb25hcnlSZWYgZ2lmUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUdJRkRpY3Rpb25hcnkp
OworICAgICAgICBpZiAoZ2lmUHJvcGVydGllcykgeworICAgICAgICAgICAgaWYgKENGTnVtYmVy
UmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShnaWZQcm9wZXJ0aWVz
LCBrQ0dJbWFnZVByb3BlcnR5R0lGVW5jbGFtcGVkRGVsYXlUaW1lKSkgeworICAgICAgICAgICAg
ICAgIC8vIFVzZSB0aGUgdW5jbGFtcGVkIGZyYW1lIGRlbGF5IGlmIGl0IGV4aXN0cy4KKyAgICAg
ICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVy
YXRpb24pOworICAgICAgICAgICAgfSBlbHNlIGlmIChDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1i
ZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZ2lmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0
eUdJRkRlbGF5VGltZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdGhlIGNs
YW1wZWQgZnJhbWUgZGVsYXkgaWYgdGhlIHVuY2xhbXBlZCBmcmFtZSBkZWxheSBkb2VzIG5vdCBl
eGlzdC4KKyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxv
YXRUeXBlLCAmZHVyYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBDRkRpY3Rpb25hcnlSZWYgcG5nUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBO
R0RpY3Rpb25hcnkpOworICAgICAgICBpZiAocG5nUHJvcGVydGllcykgeworICAgICAgICAgICAg
aWYgKENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShw
bmdQcm9wZXJ0aWVzLCBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR1VuY2xhbXBlZERlbGF5VGlt
ZSkpCisgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckZsb2F0
VHlwZSwgJmR1cmF0aW9uKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKENGTnVtYmVyUmVmIG51bSA9
IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJDb3Jl
Q0dJbWFnZVByb3BlcnR5QVBOR0RlbGF5VGltZSkpCisgICAgICAgICAgICAgICAgQ0ZOdW1iZXJH
ZXRWYWx1ZShudW0sIGtDRk51bWJlckZsb2F0VHlwZSwgJmR1cmF0aW9uKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICAvLyBNYW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlv
biB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCisgICAgLy8g
V2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1z
IGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAg
bXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9i
LzM2MDgyPgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIGlmIChkdXJhdGlvbiA8
IDAuMDExZikKKyAgICAgICAgcmV0dXJuIDAuMWY7CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQor
Citib29sIEltYWdlRGVjb2Rlcjo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVf
dCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0g
YWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rl
ciwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKKyAgICBpZiAoIXByb3BlcnRpZXMp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBDRkRpY3Rpb25hcnlSZWYgamZpZlBy
b3BlcnRpZXMgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZh
bHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlKRklGRGljdGlvbmFyeSkpOwor
ICAgIGlmIChqZmlmUHJvcGVydGllcykgeworICAgICAgICBDRkJvb2xlYW5SZWYgaXNQcm9nQ0ZC
b29sID0gc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShqZmlm
UHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUpGSUZJc1Byb2dyZXNzaXZlKSk7CisgICAgICAg
IGlmIChpc1Byb2dDRkJvb2wpIHsKKyAgICAgICAgICAgIGJvb2wgaXNQcm9ncmVzc2l2ZSA9IENG
Qm9vbGVhbkdldFZhbHVlKGlzUHJvZ0NGQm9vbCk7CisgICAgICAgICAgICAvLyBXb3JrYXJvdW5k
IGZvciA8cmRhcjovL3Byb2JsZW0vNTE4NDY1NT4gLSBIYW5nIHJlbmRlcmluZyB2ZXJ5IGxhcmdl
IHByb2dyZXNzaXZlIEpQRUcuIERlY29kaW5nIHByb2dyZXNzaXZlCisgICAgICAgICAgICAvLyBp
bWFnZXMgaGFuZ3MgZm9yIGEgdmVyeSBsb25nIHRpbWUgcmlnaHQgbm93LiBVbnRpbCB0aGlzIGlz
IGZpeGVkLCBkb24ndCBzdWItc2FtcGxlIHByb2dyZXNzaXZlIGltYWdlcy4gVGhpcworICAgICAg
ICAgICAgLy8gd2lsbCBjYXVzZSB0aGVtIHRvIGZhaWwgb3VyIGxhcmdlIGltYWdlIGNoZWNrIGFu
ZCB0aGV5IHdvbid0IGJlIGRlY29kZWQuCisgICAgICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9u
Y2UgdW5kZXJseWluZyBpc3N1ZSBpcyBmaXhlZCAoPHJkYXI6Ly9wcm9ibGVtLzUxOTE0MTg+KQor
ICAgICAgICAgICAgcmV0dXJuICFpc1Byb2dyZXNzaXZlOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIHJldHVybiB0cnVlOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBo
YUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIGlmICghZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChpbmRleCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIENGU3RyaW5n
UmVmIGltYWdlVHlwZSA9IENHSW1hZ2VTb3VyY2VHZXRUeXBlKG1fbmF0aXZlRGVjb2Rlcik7Cisg
ICAgCisgICAgLy8gUmV0dXJuIGZhbHNlIGlmIHRoZXJlIGlzIG5vIGltYWdlIHR5cGUgb3IgdGhl
IGltYWdlIHR5cGUgaXMgSlBFRywgYmVjYXVzZQorICAgIC8vIEpQRUcgZG9lcyBub3Qgc3VwcG9y
dCBhbHBoYSB0cmFuc3BhcmVuY3kuCisgICAgaWYgKCFpbWFnZVR5cGUgfHwgQ0ZFcXVhbChpbWFn
ZVR5cGUsIENGU1RSKCJwdWJsaWMuanBlZyIpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIC8vIEZJWE1FOiBDb3VsZCByZXR1cm4gZmFsc2UgZm9yIG90aGVyIG5vbi10cmFuc3Bh
cmVudCBpbWFnZSBmb3JtYXRzLgorICAgIC8vIEZJWE1FOiBDb3VsZCBtYXliZSByZXR1cm4gZmFs
c2UgZm9yIGEgR0lGIEZyYW1lIGlmIHdlIGhhdmUgZW5vdWdoIGluZm8gaW4gdGhlIEdJRiBwcm9w
ZXJ0aWVzIGRpY3Rpb25hcnkKKyAgICAvLyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSB0
cmFuc3BhcmVudCBjb2xvciB3YXMgZGVmaW5lZC4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5z
aWduZWQgSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK3sKKyAgICBJbnRTaXplIGZyYW1l
U2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJl
dHVybiBmcmFtZVNpemUud2lkdGgoKSAqIGZyYW1lU2l6ZS5oZWlnaHQoKSAqIDQ7Cit9CisKK1Bh
c3NOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBEZWNvZGVNb2Rl
IGRlY29kZU1vZGUpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0g
YWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KG1fbmF0aXZlRGVjb2Rlciwg
aW5kZXgsIGltYWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsLCBkZWNvZGVNb2RlKS5n
ZXQoKSkpOworICAgICAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gPHJkYXI6Ly9wcm9i
bGVtLzczNzExOTg+IC0gQ29yZUdyYXBoaWNzIGNoYW5nZWQgdGhlIGRlZmF1bHQgY2FjaGluZyBi
ZWhhdmlvdXIgaW4gaU9TIDQuMCB0byBrQ0dJbWFnZUNhY2hpbmdUcmFuc2llbnQKKyAgICAvLyB3
aGljaCBjYXVzZWQgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGZvciB1cyBzaW5jZSB0aGUgaW1h
Z2VzIGhhZCB0byBiZSByZXNhbXBsZWQvcmVjcmVhdGVkIGV2ZXJ5IHRpbWUgd2UgY2FsbGVkCisg
ICAgLy8gQ0dDb250ZXh0RHJhd0ltYWdlLiBXZSBub3cgdGVsbCBDRyB0byBjYWNoZSB0aGUgZHJh
d24gaW1hZ2VzLiBTZWUgYWxzbyA8cmRhcjovL3Byb2JsZW0vMTQzNjY3NTU+IC0KKyAgICAvLyBD
b3JlR3JhcGhpY3MgbmVlZHMgdG8gdW4tZGVwcmVjYXRlIGtDR0ltYWdlQ2FjaGluZ1RlbXBvcmFy
eSBzaW5jZSBpdCdzIHN0aWxsIG5vdCB0aGUgZGVmYXVsdC4KKyNpZiBDT01QSUxFUihDTEFORykK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyNlbmRpZgorICAgICAgICBDR0lt
YWdlU2V0Q2FjaGluZ0ZsYWdzKGltYWdlLmdldCgpLCBrQ0dJbWFnZUNhY2hpbmdUZW1wb3Jhcnkp
OworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2Vu
ZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorICAgICAgICAKKyAgICBDRlN0cmluZ1JlZiBp
bWFnZVVUSSA9IENHSW1hZ2VTb3VyY2VHZXRUeXBlKG1fbmF0aXZlRGVjb2Rlcik7CisgICAgc3Rh
dGljIGNvbnN0IENGU3RyaW5nUmVmIHhibVVUSSA9IENGU1RSKCJwdWJsaWMueGJpdG1hcC1pbWFn
ZSIpOworCisgICAgaWYgKCFpbWFnZVVUSSkKKyAgICAgICAgcmV0dXJuIGltYWdlOworCisgICAg
aWYgKCFDRkVxdWFsKGltYWdlVVRJLCB4Ym1VVEkpKQorICAgICAgICByZXR1cm4gaW1hZ2U7CisK
KyAgICAvLyBJZiBpdCBpcyBhbiB4Ym0gaW1hZ2UsIG1hc2sgb3V0IGFsbCB0aGUgd2hpdGUgYXJl
YXMgdG8gcmVuZGVyIHRoZW0gdHJhbnNwYXJlbnQuCisgICAgY29uc3QgQ0dGbG9hdCBtYXNraW5n
Q29sb3JzWzZdID0gezI1NSwgMjU1LCAgMjU1LCAyNTUsIDI1NSwgMjU1fTsKKyAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gbWFza2VkSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoTWFz
a2luZ0NvbG9ycyhpbWFnZS5nZXQoKSwgbWFza2luZ0NvbG9ycykpOworICAgIHJldHVybiBtYXNr
ZWRJbWFnZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7Cit9CisgICAgCit2b2lkIEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorewor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUg
U2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFy
ZWRCdWZmZXIncyBrbm93bGVkZ2UuCisgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxp
dHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3Vy
aW5nIHRoYXQgSW1hZ2VJTyBpcworICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRC
dWZmZXIuCisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLCBkYXRh
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyNlbHNlCisgICAgLy8g
Q3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgorICAgIGRh
dGEtPnJlZigpOworICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNr
IHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIK
KyAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2lu
dGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAorICAgIC8vIGlzIGEg
cmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KKyAgICBD
R0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwg
MCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07
CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGRhdGEsIGRhdGEtPnNpemUoKSwgJnByb3ZpZGVy
Q2FsbGJhY2tzKSk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2
ZURlY29kZXIsIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyNlbmRpZgor
fQorCit9CisKKyNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NjFhYjllMTc3OTE3
MmJmM2VkMjdmYTA0MGEwZTQxOTFiYTE2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuaApAQCAtMCwwICsxLDc1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJ
bWFnZURlY29kZXJfaAorI2RlZmluZSBJbWFnZURlY29kZXJfaAorCisjaW5jbHVkZSAiSW1hZ2VT
b3VyY2UuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
U3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpOworCitlbnVtIGNsYXNzIERlY29kZU1vZGUgeyBJbW1lZGlhdGUsIExhenkgfTsKKwor
Y2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBJbWFnZURlY29kZXIgeworcHVibGljOgorICAg
IEltYWdlRGVjb2RlcigpOworICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpIHsgfQorCisgICAg
c3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKKyAgICBz
dGF0aWMgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2Nh
bGUsIFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOworCisgICAgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CisgICAgYm9vbCBpc1NpemVBdmFpbGFibGUo
KSBjb25zdDsKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICBzaXplX3QgZnJhbWVDb3Vu
dCgpIGNvbnN0OworICAgIGludCByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKKyAgICBib29sIGdl
dEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0OworCisgICAgSW50U2l6ZSBmcmFtZVNp
emVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CisgICAgYm9vbCBmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKworICAgIGZsb2F0IGZyYW1lRHVyYXRp
b25BdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QpIGNvbnN0OworICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNp
emVfdCkgY29uc3Q7CisgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gMCkgY29uc3Q7CisKKyAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGVNb2RlID0g
RGVjb2RlTW9kZTo6TGF6eSkgY29uc3Q7CisKKyAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVy
KiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIAorcHJvdGVjdGVkOgorICAgIG11dGFibGUg
SW50U2l6ZSBtX3NpemU7CisgICAgQ0dJbWFnZVNvdXJjZVJlZiBtX25hdGl2ZURlY29kZXI7Cit9
OworICAgIAorfQorCisjZW5kaWYgLy8gSW1hZ2VEZWNvZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0YTAxMmI2ZjU3YmY1MzkzMDY0Nzc3YjZjMTA5MzY2YjI0
YzQ0NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlICJJbWFnZVNv
dXJjZUNHLmgiCi0KLSNpbmNsdWRlICJDb3JlR3JhcGhpY3NTUEkuaCIKLSNpbmNsdWRlICJJbWFn
ZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRTaXpl
LmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi0jaWYgIVBMQVRGT1JNKElP
UykKLSNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4K
LSNlbHNlCi0jaW5jbHVkZSA8SW1hZ2VJTy9JbWFnZUlPLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotI2VuZGlmCi0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8
SW1hZ2VJTy9DR0ltYWdlU291cmNlUHJpdmF0ZS5oPgotI2Vsc2UKLWNvbnN0IENGU3RyaW5nUmVm
IGtDR0ltYWdlU291cmNlU3Vic2FtcGxlRmFjdG9yID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU3Vi
c2FtcGxlRmFjdG9yIik7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBD
RlN0cmluZ1JlZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR1VuY2xhbXBlZERlbGF5VGltZSA9
IENGU1RSKCJVbmNsYW1wZWREZWxheVRpbWUiKTsKLWNvbnN0IENGU3RyaW5nUmVmIFdlYkNvcmVD
R0ltYWdlUHJvcGVydHlBUE5HRGVsYXlUaW1lID0gQ0ZTVFIoIkRlbGF5VGltZSIpOwotY29uc3Qg
Q0ZTdHJpbmdSZWYgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdMb29wQ291bnQgPSBDRlNUUigi
TG9vcENvdW50Iik7Ci0KLWNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291cmNlU2hvdWxkUHJl
ZmVyUkdCMzIgPSBDRlNUUigia0NHSW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0IzMiIpOwotY29u
c3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEgPSBDRlNUUigia0NHSW1h
Z2VTb3VyY2VTa2lwTWV0YWRhdGEiKTsKLQotI2lmICFQTEFURk9STShDT0NPQSkKLXNpemVfdCBz
aGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBv
ZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQotewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7Ci0gICAgc2l6ZV90IHNv
dXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKLSAgICBpZiAocG9zaXRpb24gPj0gc291
cmNlU2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBjaGFyKiBzb3VyY2UgPSBz
aGFyZWRCdWZmZXItPmRhdGEoKSArIHBvc2l0aW9uOwotICAgIHNpemVfdCBhbW91bnQgPSBzdGQ6
Om1pbjxzaXplX3Q+KGNvdW50LCBzb3VyY2VTaXplIC0gcG9zaXRpb24pOwotICAgIG1lbWNweShi
dWZmZXIsIHNvdXJjZSwgYW1vdW50KTsKLSAgICByZXR1cm4gYW1vdW50OwotfQotCi12b2lkIHNo
YXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKLXsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJl
ZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwotICAgIHNoYXJlZEJ1
ZmZlci0+ZGVyZWYoKTsKLX0KLSNlbmRpZgotCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1h
Z2VTb3VyY2U6OkFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCi0gICAgOiBtX2RlY29kZXIoMCkKLXsKLSAgICAvLyBGSVhNRTogQWxwaGFPcHRpb24g
YW5kIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGFyZSBpZ25vcmVkLgotfQotCi1JbWFnZVNv
dXJjZTo6fkltYWdlU291cmNlKCkKLXsKLSAgICBjbGVhcih0cnVlKTsKLX0KLQotdm9pZCBJbWFn
ZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3QsIFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi17Ci0gICAgLy8gUmVjZW50IHZlcnNpb25z
IG9mIEltYWdlSU8gZGlzY2FyZCBwcmV2aW91c2x5IGRlY29kZWQgaW1hZ2UgZnJhbWVzIGlmIHRo
ZSBjbGllbnQKLSAgICAvLyBhcHBsaWNhdGlvbiBubyBsb25nZXIgaG9sZHMgcmVmZXJlbmNlcyB0
byB0aGVtLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheQotICAgIC8vIHRoZSBkZWNv
ZGVyIHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5IGFza2VkIHRvIGRlc3Ryb3kgYWxsIG9mIHRoZSBm
cmFtZXMuCi0gICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAobV9kZWNvZGVyKSB7Ci0gICAgICAgIENGUmVsZWFzZShtX2RlY29kZXIpOwotICAgICAg
ICBtX2RlY29kZXIgPSAwOwotICAgIH0KLSAgICBpZiAoZGF0YSkKLSAgICAgICAgc2V0RGF0YShk
YXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gY3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bmdMZXZlbCkKLXsKLSAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwpIHsKLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgbnVtT3B0aW9ucyA9IDM7Ci0gICAgICAgIGNvbnN0IHZvaWQqIGtleXNbbnVtT3B0
aW9uc10gPSB7IGtDR0ltYWdlU291cmNlU2hvdWxkQ2FjaGUsIGtDR0ltYWdlU291cmNlU2hvdWxk
UHJlZmVyUkdCMzIsIGtDR0ltYWdlU291cmNlU2tpcE1ldGFkYXRhIH07Ci0gICAgICAgIGNvbnN0
IHZvaWQqIHZhbHVlc1tudW1PcHRpb25zXSA9IHsga0NGQm9vbGVhblRydWUsIGtDRkJvb2xlYW5U
cnVlLCBrQ0ZCb29sZWFuVHJ1ZSB9OwotICAgICAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KG51bGxwdHIsIGtleXMsIHZhbHVlcywgbnVtT3B0aW9ucywgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgfQotCi0g
ICAgc2hvcnQgY29uc3RyYWluZWRTdWJzYW1wbGluZ0xldmVsID0gc3RkOjptaW48c2hvcnQ+KDMs
IHN0ZDo6bWF4PHNob3J0PigwLCBzdWJzYW1wbGluZ0xldmVsKSk7Ci0gICAgaW50IHN1YnNhbXBs
ZUludCA9IDEgPDwgY29uc3RyYWluZWRTdWJzYW1wbGluZ0xldmVsOyAvLyBbMC4uM10gPT4gWzEs
IDIsIDQsIDhdCi0KLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN1YnNhbXBsZU51bWJlciA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUobnVsbHB0ciwgIGtDRk51bWJlckludFR5cGUsICAmc3Vi
c2FtcGxlSW50KSk7Ci0gICAgY29uc3QgQ0ZJbmRleCBudW1PcHRpb25zID0gNDsKLSAgICBjb25z
dCB2b2lkKiBrZXlzW251bU9wdGlvbnNdID0geyBrQ0dJbWFnZVNvdXJjZVNob3VsZENhY2hlLCBr
Q0dJbWFnZVNvdXJjZVNob3VsZFByZWZlclJHQjMyLCBrQ0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0
YSwga0NHSW1hZ2VTb3VyY2VTdWJzYW1wbGVGYWN0b3IgfTsKLSAgICBjb25zdCB2b2lkKiB2YWx1
ZXNbbnVtT3B0aW9uc10gPSB7IGtDRkJvb2xlYW5UcnVlLCBrQ0ZCb29sZWFuVHJ1ZSwga0NGQm9v
bGVhblRydWUsIHN1YnNhbXBsZU51bWJlci5nZXQoKSB9OwotICAgIHJldHVybiBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZShudWxscHRyLCBrZXlzLCB2YWx1ZXMsIG51bU9wdGlvbnMsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKLX0KLQotc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGltYWdlU291cmNl
T3B0aW9ucyhTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSAwKQotewotICAgIGlm
IChzdWJzYW1wbGluZ0xldmVsKQotICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VTb3VyY2VPcHRp
b25zKHN1YnNhbXBsaW5nTGV2ZWwpOwotCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+PiBvcHRpb25zID0gY3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25z
KDApOwotICAgIHJldHVybiBvcHRpb25zOwotfQotCi1ib29sIEltYWdlU291cmNlOjppbml0aWFs
aXplZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGVjb2RlcjsKLX0KLQotdm9pZCBJbWFnZVNv
dXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQot
ewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICBtX2Rl
Y29kZXIgPSBDR0ltYWdlU291cmNlQ3JlYXRlSW5jcmVtZW50YWwoMCk7Ci0gICAgLy8gT24gTWFj
IHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVu
ZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4gIFdlIHVzZSBTaGFy
ZWRCdWZmZXIncyBhYmlsaXR5Ci0gICAgLy8gdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0
byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcyByZWFsbHkgbG9va2lu
ZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fZGVj
b2RlciwgZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7Ci0jZWxz
ZQotICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICBtX2RlY29kZXIgPSBDR0ltYWdlU291cmNl
Q3JlYXRlSW5jcmVtZW50YWwoMCk7Ci0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8g
d3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEtPnJlZigpOwotICAgIC8vIFdlIHVzZSB0
aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9p
bnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKLSAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEg
d2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3
b24ndCBtb3ZlLCB3aGljaAotICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBH
ZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KLSAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNr
cyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBv
c2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3Zp
ZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0
KGRhdGEsIGRhdGEtPnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7Ci0gICAgQ0dJbWFnZVNv
dXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX2RlY29kZXIsIGRhdGFQcm92aWRlci5nZXQoKSwgYWxs
RGF0YVJlY2VpdmVkKTsKLSNlbmRpZgotfQotCi1TdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIENGU3RyaW5nUmVmIGltYWdlU291cmNlVHlwZSA9IENHSW1hZ2VTb3Vy
Y2VHZXRUeXBlKG1fZGVjb2Rlcik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnByZWZlcnJlZEV4dGVu
c2lvbkZvckltYWdlU291cmNlVHlwZShpbWFnZVNvdXJjZVR5cGUpOwotfQotCi1TdWJzYW1wbGlu
Z0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUp
IGNvbnN0Ci17Ci0gICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0g
MXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCi0gICAgZmxvYXQgY2xhbXBlZFNj
YWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBzdGQ6Om1pbjxmbG9hdD4oMSwgc2NhbGUpKTsK
LSAgICBpbnQgcmVzdWx0ID0gY2VpbGYobG9nMmYoMSAvIGNsYW1wZWRTY2FsZSkpOwotICAgIEFT
U0VSVChyZXN1bHQgPj0wICYmIHJlc3VsdCA8PSAzKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1ib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUoKQotewotICAgIC8vIFJhZ25hcm9z
IHllbGxzOiBUT08gU09PTiEgWW91IGhhdmUgYXdha2VuZWQgbWUgVE9PIFNPT04sIEV4ZWN1dHVz
IQotICAgIGlmIChDR0ltYWdlU291cmNlR2V0U3RhdHVzKG1fZGVjb2RlcikgPCBrQ0dJbWFnZVN0
YXR1c0luY29tcGxldGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGltYWdlMFByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VD
b3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5n
ZXQoKSkpOwotICAgIGlmICghaW1hZ2UwUHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGltYWdlMFByb3BlcnRpZXMu
Z2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbFdpZHRoKQotICAgICAgICAmJiBDRkRpY3Rpb25h
cnlDb250YWluc0tleShpbWFnZTBQcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4
ZWxIZWlnaHQpOwotfQotCi1zdGF0aWMgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkZyb21Q
cm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZiBpbWFnZVByb3BlcnRpZXMpCi17Ci0gICAgQVNTRVJU
KGltYWdlUHJvcGVydGllcyk7Ci0gICAgQ0ZOdW1iZXJSZWYgb3JpZW50YXRpb25Qcm9wZXJ0eSA9
IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZVByb3BlcnRpZXMsIGtDR0lt
YWdlUHJvcGVydHlPcmllbnRhdGlvbik7Ci0gICAgaWYgKCFvcmllbnRhdGlvblByb3BlcnR5KQot
ICAgICAgICByZXR1cm4gRGVmYXVsdEltYWdlT3JpZW50YXRpb247Ci0KLSAgICBpbnQgZXhpZlZh
bHVlOwotICAgIENGTnVtYmVyR2V0VmFsdWUob3JpZW50YXRpb25Qcm9wZXJ0eSwga0NGTnVtYmVy
SW50VHlwZSwgJmV4aWZWYWx1ZSk7Ci0gICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OmZyb21F
WElGVmFsdWUoZXhpZlZhbHVlKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1w
bGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRp
ZXNBdEluZGV4KG1fZGVjb2RlciwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKLSAg
ICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENGRGljdGlv
bmFyeVJlZiBqZmlmUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUpGSUZE
aWN0aW9uYXJ5KSk7Ci0gICAgaWYgKGpmaWZQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIENGQm9vbGVh
blJlZiBpc1Byb2dDRkJvb2wgPSBzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKGpmaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5SkZJRklzUHJvZ3Jlc3Np
dmUpKTsKLSAgICAgICAgaWYgKGlzUHJvZ0NGQm9vbCkgewotICAgICAgICAgICAgYm9vbCBpc1By
b2dyZXNzaXZlID0gQ0ZCb29sZWFuR2V0VmFsdWUoaXNQcm9nQ0ZCb29sKTsKLSAgICAgICAgICAg
IC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS81MTg0NjU1PiAtIEhhbmcgcmVuZGVy
aW5nIHZlcnkgbGFyZ2UgcHJvZ3Jlc3NpdmUgSlBFRy4gRGVjb2RpbmcgcHJvZ3Jlc3NpdmUKLSAg
ICAgICAgICAgIC8vIGltYWdlcyBoYW5ncyBmb3IgYSB2ZXJ5IGxvbmcgdGltZSByaWdodCBub3cu
IFVudGlsIHRoaXMgaXMgZml4ZWQsIGRvbid0IHN1Yi1zYW1wbGUgcHJvZ3Jlc3NpdmUgaW1hZ2Vz
LiBUaGlzCi0gICAgICAgICAgICAvLyB3aWxsIGNhdXNlIHRoZW0gdG8gZmFpbCBvdXIgbGFyZ2Ug
aW1hZ2UgY2hlY2sgYW5kIHRoZXkgd29uJ3QgYmUgZGVjb2RlZC4KLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBSZW1vdmUgb25jZSB1bmRlcmx5aW5nIGlzc3VlIGlzIGZpeGVkICg8cmRhcjovL3Byb2Js
ZW0vNTE5MTQxOD4pCi0gICAgICAgICAgICByZXR1cm4gIWlzUHJvZ3Jlc3NpdmU7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6
ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bmdMZXZlbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAot
ewotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCwgaW1hZ2VT
b3VyY2VPcHRpb25zKHN1YnNhbXBsaW5nTGV2ZWwpLmdldCgpKSk7Ci0KLSAgICBpZiAoIXByb3Bl
cnRpZXMpCi0gICAgICAgIHJldHVybiBJbnRTaXplKCk7Ci0KLSAgICBpbnQgd2lkdGggPSAwOwot
ICAgIGludCBoZWlnaHQgPSAwOwotICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4
ZWxXaWR0aCk7Ci0gICAgaWYgKG51bSkKLSAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtD
Rk51bWJlckludFR5cGUsICZ3aWR0aCk7Ci0gICAgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlv
bmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbEhlaWdo
dCk7Ci0gICAgaWYgKG51bSkKLSAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJl
ckludFR5cGUsICZoZWlnaHQpOwotCi0gICAgaWYgKChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSAmJiBvcmllbnRhdGlvbkZy
b21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpCi0gICAg
ICAgIHJldHVybiBJbnRTaXplKGhlaWdodCwgd2lkdGgpOwotCi0gICAgcmV0dXJuIEludFNpemUo
d2lkdGgsIGhlaWdodCk7Ci19Ci0KLUltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVu
dGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Ci17Ci0gICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0
aWVzQXRJbmRleChtX2RlY29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkp
OwotICAgIGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVu
dGF0aW9uOwotCi0gICAgcmV0dXJuIG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMocHJvcGVydGll
cy5nZXQoKSk7Ci19Ci0KLUludFNpemUgSW1hZ2VTb3VyY2U6OnNpemUoSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZVNpemVB
dEluZGV4KDAsIDAsIGRlc2NyaXB0aW9uKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90
U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNB
dEluZGV4KG1fZGVjb2RlciwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKLSAgICBp
ZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGludCB4ID0gLTEs
IHkgPSAtMTsKLSAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RYIikpOwotICAgIGlmICgh
bnVtIHx8ICFDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJngpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RZIikpOwotICAgIGlmICgh
bnVtIHx8ICFDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJnkpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoeCA8IDAgfHwgeSA8IDApCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGhvdFNwb3QgPSBJbnRQb2ludCh4LCB5KTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVBy
b3BlcnRpZXMoKSBjb25zdAotewotICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcgbWFsbG9jL2Nh
bGxvYyBjYWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCi0gICAgLy8gQSBub24temVybyB2
YWx1ZSBlbnN1cmVzIGNhY2hlZCBpbWFnZXMgd2l0aCBubyBkZWNvZGVkIGZyYW1lcyBzdGlsbCBl
bnRlcgotICAgIC8vIHRoZSBsaXZlIGRlY29kZWQgcmVzb3VyY2VzIGxpc3Qgd2hlbiB0aGUgQ0dJ
bWFnZVNvdXJjZSBkZWNvZGVzIGltYWdlCi0gICAgLy8gcHJvcGVydGllcywgYWxsb3dpbmcgdGhl
IGNhY2hlIHRvIHBydW5lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBpbWFnZS4KLSAgICAvLyBUaGlz
IHZhbHVlIGlzIGxpa2VseSB0byBiZSBpbmFjY3VyYXRlIG9uIG90aGVyIHBsYXRmb3JtcywgYnV0
IHRoZSBvdmVyYWxsCi0gICAgLy8gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLgotICAgIHJldHVybiAx
MzA4ODsKLX0KLSAgICAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKLXsKLSAg
ICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7
Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihD
R0ltYWdlU291cmNlQ29weVByb3BlcnRpZXMobV9kZWNvZGVyLCBpbWFnZVNvdXJjZU9wdGlvbnMo
KS5nZXQoKSkpOwotICAgIGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIGNBbmltYXRp
b25Mb29wT25jZTsKLQotICAgIENGRGljdGlvbmFyeVJlZiBnaWZQcm9wZXJ0aWVzID0gKENGRGlj
dGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFn
ZVByb3BlcnR5R0lGRGljdGlvbmFyeSk7Ci0gICAgaWYgKGdpZlByb3BlcnRpZXMpIHsKLSAgICAg
ICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGdp
ZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlHSUZMb29wQ291bnQpOwotCi0gICAgICAgIC8v
IE5vIHByb3BlcnR5IG1lYW5zIGxvb3Agb25jZS4KLSAgICAgICAgaWYgKCFudW0pCi0gICAgICAg
ICAgICByZXR1cm4gY0FuaW1hdGlvbkxvb3BPbmNlOwotCi0gICAgICAgIGludCBsb29wQ291bnQ7
Ci0gICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmbG9vcENv
dW50KTsKLQotICAgICAgICAvLyBBIHByb3BlcnR5IHdpdGggdmFsdWUgMCBtZWFucyBsb29wIGZv
cmV2ZXIuCi0gICAgICAgIHJldHVybiBsb29wQ291bnQgPyBsb29wQ291bnQgOiBjQW5pbWF0aW9u
TG9vcEluZmluaXRlOwotICAgIH0KLQotICAgIENGRGljdGlvbmFyeVJlZiBwbmdQcm9wZXJ0aWVz
ID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgp
LCBrQ0dJbWFnZVByb3BlcnR5UE5HRGljdGlvbmFyeSk7Ci0gICAgaWYgKHBuZ1Byb3BlcnRpZXMp
IHsKLSAgICAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdl
dFZhbHVlKHBuZ1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HTG9vcENvdW50
KTsKLSAgICAgICAgaWYgKCFudW0pCi0gICAgICAgICAgICByZXR1cm4gY0FuaW1hdGlvbkxvb3BP
bmNlOwotCi0gICAgICAgIGludCBsb29wQ291bnQ7Ci0gICAgICAgIENGTnVtYmVyR2V0VmFsdWUo
bnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmbG9vcENvdW50KTsKLSAgICAgICAgcmV0dXJuIGxvb3BD
b3VudCA/IGxvb3BDb3VudCA6IGNBbmltYXRpb25Mb29wSW5maW5pdGU7Ci0gICAgfQotCi0gICAg
Ly8gVHVybnMgb3V0IHdlJ3JlIG5vdCBhbiBhbmltYXRlZCBpbWFnZSBhZnRlciBhbGwsIHNvIHdl
IGRvbid0IGFuaW1hdGUuCi0gICAgcmV0dXJuIGNBbmltYXRpb25Ob25lOwotfQotCi1zaXplX3Qg
SW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2RlY29kZXIg
PyBDR0ltYWdlU291cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7Ci19Ci0KLUNHSW1hZ2VSZWYg
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKLXsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0g
YWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KG1fZGVjb2RlciwgaW5kZXgs
IGltYWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsKS5nZXQoKSkpOwotCi0jaWYgUExB
VEZPUk0oSU9TKQotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MzcxMTk4PiAtIENvcmVHcmFwaGlj
cyBjaGFuZ2VkIHRoZSBkZWZhdWx0IGNhY2hpbmcgYmVoYXZpb3VyIGluIGlPUyA0LjAgdG8ga0NH
SW1hZ2VDYWNoaW5nVHJhbnNpZW50Ci0gICAgLy8gd2hpY2ggY2F1c2VkIGEgcGVyZm9ybWFuY2Ug
cmVncmVzc2lvbiBmb3IgdXMgc2luY2UgdGhlIGltYWdlcyBoYWQgdG8gYmUgcmVzYW1wbGVkL3Jl
Y3JlYXRlZCBldmVyeSB0aW1lIHdlIGNhbGxlZAotICAgIC8vIENHQ29udGV4dERyYXdJbWFnZS4g
V2Ugbm93IHRlbGwgQ0cgdG8gY2FjaGUgdGhlIGRyYXduIGltYWdlcy4gU2VlIGFsc28gPHJkYXI6
Ly9wcm9ibGVtLzE0MzY2NzU1PiAtCi0gICAgLy8gQ29yZUdyYXBoaWNzIG5lZWRzIHRvIHVuLWRl
cHJlY2F0ZSBrQ0dJbWFnZUNhY2hpbmdUZW1wb3Jhcnkgc2luY2UgaXQncyBzdGlsbCBub3QgdGhl
IGRlZmF1bHQuCi0jaWYgQ09NUElMRVIoQ0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNs
YXJhdGlvbnMiCi0jZW5kaWYKLSAgICBDR0ltYWdlU2V0Q2FjaGluZ0ZsYWdzKGltYWdlLmdldCgp
LCBrQ0dJbWFnZUNhY2hpbmdUZW1wb3JhcnkpOwotI2lmIENPTVBJTEVSKENMQU5HKQotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQot
Ci0gICAgQ0ZTdHJpbmdSZWYgaW1hZ2VVVEkgPSBDR0ltYWdlU291cmNlR2V0VHlwZShtX2RlY29k
ZXIpOwotICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB4Ym1VVEkgPSBDRlNUUigicHVibGlj
LnhiaXRtYXAtaW1hZ2UiKTsKLQotICAgIGlmICghaW1hZ2VVVEkpCi0gICAgICAgIHJldHVybiBp
bWFnZS5sZWFrUmVmKCk7Ci0KLSAgICBpZiAoIUNGRXF1YWwoaW1hZ2VVVEksIHhibVVUSSkpCi0g
ICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7Ci0gICAgCi0gICAgLy8gSWYgaXQgaXMgYW4g
eGJtIGltYWdlLCBtYXNrIG91dCBhbGwgdGhlIHdoaXRlIGFyZWFzIHRvIHJlbmRlciB0aGVtIHRy
YW5zcGFyZW50LgotICAgIGNvbnN0IENHRmxvYXQgbWFza2luZ0NvbG9yc1s2XSA9IHsyNTUsIDI1
NSwgIDI1NSwgMjU1LCAyNTUsIDI1NX07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1hc2tl
ZEltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aE1hc2tpbmdDb2xvcnMoaW1hZ2UuZ2V0
KCksIG1hc2tpbmdDb2xvcnMpKTsKLSAgICBpZiAoIW1hc2tlZEltYWdlKQotICAgICAgICByZXR1
cm4gaW1hZ2UubGVha1JlZigpOwotCi0gICAgcmV0dXJuIG1hc2tlZEltYWdlLmxlYWtSZWYoKTsK
LX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5k
ZXgpCi17Ci0gICAgQVNTRVJUKGZyYW1lQ291bnQoKSk7Ci0gICAgcmV0dXJuIENHSW1hZ2VTb3Vy
Y2VHZXRTdGF0dXNBdEluZGV4KG1fZGVjb2RlciwgaW5kZXgpID09IGtDR0ltYWdlU3RhdHVzQ29t
cGxldGU7Ci19Ci0KLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpCi17Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIGZsb2F0IGR1cmF0aW9uID0gMDsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4
KG1fZGVjb2RlciwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7Ci0gICAgaWYg
KHByb3BlcnRpZXMpIHsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGdpZlByb3BlcnRpZXMgPSAo
Q0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtD
R0ltYWdlUHJvcGVydHlHSUZEaWN0aW9uYXJ5KTsKLSAgICAgICAgaWYgKGdpZlByb3BlcnRpZXMp
IHsKLSAgICAgICAgICAgIGlmIChDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoZ2lmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUdJRlVuY2xhbXBl
ZERlbGF5VGltZSkpIHsKLSAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIHVuY2xhbXBlZCBmcmFt
ZSBkZWxheSBpZiBpdCBleGlzdHMuCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShu
dW0sIGtDRk51bWJlckZsb2F0VHlwZSwgJmR1cmF0aW9uKTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGdp
ZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlHSUZEZWxheVRpbWUpKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gRmFsbCBiYWNrIHRvIHRoZSBjbGFtcGVkIGZyYW1lIGRlbGF5IGlmIHRoZSB1bmNs
YW1wZWQgZnJhbWUgZGVsYXkgZG9lcyBub3QgZXhpc3QuCi0gICAgICAgICAgICAgICAgQ0ZOdW1i
ZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckZsb2F0VHlwZSwgJmR1cmF0aW9uKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIENGRGljdGlvbmFyeVJlZiBwbmdQcm9wZXJ0aWVz
ID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgp
LCBrQ0dJbWFnZVByb3BlcnR5UE5HRGljdGlvbmFyeSk7Ci0gICAgICAgIGlmIChwbmdQcm9wZXJ0
aWVzKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKHBuZ1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlB
UE5HVW5jbGFtcGVkRGVsYXlUaW1lKSkKLSAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVl
KG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVyYXRpb24pOwotICAgICAgICAgICAgZWxzZSBp
ZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHBu
Z1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HRGVsYXlUaW1lKSkKLSAgICAg
ICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVy
YXRpb24pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTWFueSBhbm5veWluZyBhZHMgc3Bl
Y2lmeSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBv
c3NpYmxlLgotICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94J3MgYmVoYXZpb3IgYW5kIHVzZSBhIGR1
cmF0aW9uIG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0aGF0IHNwZWNpZnkKLSAgICAvLyBhIGR1
cmF0aW9uIG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzc2ODkzMDA+IGFuZCA8aHR0
cDovL3dlYmtpdC5vcmcvYi8zNjA4Mj4KLSAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAg
ICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCi0gICAgICAgIHJldHVybiAwLjFmOwotICAgIHJldHVy
biBkdXJhdGlvbjsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90IGluZGV4KQotewotICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4gZmFs
c2U7IC8vIEZJWE1FOiB3aHkgZG9lc24ndCB0aGlzIHJldHVybiB0cnVlPwotCi0gICAgaWYgKCFm
cmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBDRlN0cmluZ1JlZiBpbWFnZVR5cGUgPSBDR0ltYWdlU291cmNlR2V0VHlwZShtX2RlY29kZXIp
OwotCi0gICAgLy8gUmV0dXJuIGZhbHNlIGlmIHRoZXJlIGlzIG5vIGltYWdlIHR5cGUgb3IgdGhl
IGltYWdlIHR5cGUgaXMgSlBFRywgYmVjYXVzZQotICAgIC8vIEpQRUcgZG9lcyBub3Qgc3VwcG9y
dCBhbHBoYSB0cmFuc3BhcmVuY3kuCi0gICAgaWYgKCFpbWFnZVR5cGUgfHwgQ0ZFcXVhbChpbWFn
ZVR5cGUsIENGU1RSKCJwdWJsaWMuanBlZyIpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gRklYTUU6IENvdWxkIHJldHVybiBmYWxzZSBmb3Igb3RoZXIgbm9uLXRyYW5zcGFyZW50
IGltYWdlIGZvcm1hdHMuCi0gICAgLy8gRklYTUU6IENvdWxkIG1heWJlIHJldHVybiBmYWxzZSBm
b3IgYSBHSUYgRnJhbWUgaWYgd2UgaGF2ZSBlbm91Z2ggaW5mbyBpbiB0aGUgR0lGIHByb3BlcnRp
ZXMgZGljdGlvbmFyeQotICAgIC8vIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhIHRyYW5z
cGFyZW50IGNvbG9yIHdhcyBkZWZpbmVkLgotICAgIHJldHVybiB0cnVlOwotfQotCi11bnNpZ25l
ZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0Ci17Ci0gICAgSW50U2l6ZSBmcmFtZVNpemUg
PSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50YXRpb24pKTsKLSAgICByZXR1cm4gZnJh
bWVTaXplLndpZHRoKCkgKiBmcmFtZVNpemUuaGVpZ2h0KCkgKiA0OwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAppbmRleCBiYTQxNTk3YWExMTAx
ZGI2MjkwMjNkMjczYjIwMGU3ODFkMzNhYWM5Li41OWNjMmM5YmU4YjNmZmUxMTE4NmE2ODVkMmU4
Y2Y1OTRjMWQzOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTI2Myw3ICsyNjMs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVD
b3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0
ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJm
YWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8g
MS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQ
cmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAw
eEZGIGZvciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaW9zL0ljb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pb3MvSWNvbklPUy5tbQppbmRleCAyMTU5MTVmMjhhMTkyMTcyMzk2ZDQ2ZjA4NmQyMjQ5Yjgx
ZDlkNzZhLi5lMTgzM2QxOTgzMGIxMDc2NjM2NjRiNjEyODQ0NTk3ZjgzZmMwYTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpAQCAtMzMs
NyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJY29uKENHSW1h
Z2VSZWYgaW1hZ2UpCitJY29uOjpJY29uKE5hdGl2ZUltYWdlUHRyIGltYWdlKQogICAgIDogbV9j
Z0ltYWdlKGltYWdlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IGZmMDcxMzFhNjFmY2VkMDQ1ODZiMzcyZDliYTIwNzlh
OTg3M2MzOGIuLmZhMDExYWE4ODE2MzAzMDAwOTQ0OThlYmMwZmZjYTlmYjljMzAzNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAg
LTk1LDcgKzk1LDcgQEAgQ0ZEYXRhUmVmIEJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRp
b24oKQogCiAgICAgVmVjdG9yPENHSW1hZ2VSZWY+IGltYWdlczsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtRnJhbWVzOyArK2kgKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJbWFn
ZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVJ
bWFnZUF0SW5kZXgoaSkuZ2V0KCk7CiAgICAgICAgIGlmIChjZ0ltYWdlKQogICAgICAgICAgICAg
aW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXggODM1ZWNmM2Y0ZmVlZWI4
YTBkZmE4ZDM2OTczMTI4ZjNiODA3YjkyNi4uNDcwNzNjMGVkNjkwZTA0NGZmYjNhOTRlNTg2ZjI2
MDI3OWQxYzRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUNHV2luLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0g
ZnJhbWVBdEluZGV4KGkpOworICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVJbWFnZUF0
SW5kZXgoaSkuZ2V0KCk7CiAgICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VH
ZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7
CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAg
ICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggMjlhMjAyM2RiNjNh
OTE0MzRjMzk0OGVhYTU1MjNiYjYxZmU4MTA3NS4uOTdlZDA5NzkzNWM1MWZjMjBhODQ1Yzk1OGUx
NTY5OGQyMDAwZGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CiAgICAgICAg
IGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCBiYmFlOTFmYThlM2MwNjY0NDdjNDY0
ZDZlMzEyMDBkZTI0OGNlODNmLi45MWM5MmU5MTJjYzIxODkyZjY1OWU2N2E5NTk1NzFmYmRkMDAy
N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KQEAg
LTkxLDcgKzkxLDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFn
ZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb25EZXNjcmkKICAgICBpZiAoaXM8Qml0bWFw
SW1hZ2U+KCppbWFnZSkpIHsKICAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsK
ICAgICAgICAgQml0bWFwSW1hZ2UmIGJpdG1hcEltYWdlID0gZG93bmNhc3Q8Qml0bWFwSW1hZ2U+
KCppbWFnZSk7Ci0gICAgICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IGJp
dG1hcEltYWdlLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oZGVzY3JpcHRpb24pOworICAgICAg
ICBJbnRTaXplIHNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBiaXRtYXBJbWFnZS5zaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKCk7CiAKICAgICAgICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgICAg
ICBvcmllbnRhdGlvbiA9IGJpdG1hcEltYWdlLm9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274035</attachid>
            <date>2016-03-14 15:18:14 -0700</date>
            <delta_ts>2016-03-30 16:44:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160314151802.patch</filename>
            <type>text/plain</type>
            <size>143142</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjOThmYzYxZmI4ZmUx
ZTAxYTY5MWNjNzg0OTM0NmU1YTkwNzI1MC4uMmVjYmJjOWFhNWYwMWY1M2E2ZjEyZmMzNTM0ZGE0
ODI4Y2IxODk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxNi0wMy0xNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaXMgbm90IGZvciByZXZpZXcuIEl0IGlzIG9ubHkgZm9yIEVXUy4gSXQgY29u
dGFpbnMgdGhlIGZpeCBvZgorICAgICAgICB3ZWJraXQgYnVncyAxNTU0MTIsIDE1NTQyMiwgMTU1
NDQ0IGFuZCAxNTU0NTYuIEEgc2VwYXJhdGUgcGF0Y2ggd2lsbCBiZQorICAgICAgICBwb3N0ZWQg
Zm9yIHJldmlldyBvbmNlIHRoaXMgY29tYmluZWQgcGF0Y2ggcGFzc2VzIHRoZSBFV1MuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtl
OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2lu
Q2Fpcm8uY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6aW1hZ2VTaXplRm9yUmVuZGVyZXIpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1l
SW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVj
b2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lNZXRhZGF0
YUFuZE5vdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6dXBkYXRlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
Ojppc1NvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om1heUZpbGxX
aXRoU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHVtcCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0
YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZy
YW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZTo6c29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZURhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpJbWFn
ZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6fkltYWdlRnJh
bWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzdGF0dXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpJbWFnZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJ
c0NyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmdldEhv
dFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09m
RnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUR1cmF0
aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25B
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aW5pdGlhbGl6ZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjppbml0aWFsaXplZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGV0ZXJtaW5l
TWluaW11bVN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c29saWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRy
YWN0SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6c29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRl
dGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpn
ZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdl
RXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZVNvdXJjZUNHLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlU291cmNlT3B0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjppbWFnZVNvdXJjZU9wdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6b3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVk
QnVmZmVyUmVsZWFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVj
b2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxG
b3JTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRv
RGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZp
bGVuYW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNTaXpl
QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
ZnJhbWVTaXplQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1l
SXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmll
bnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1
cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmFsbG93U3Vi
c2FtcGxpbmdPZkZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
ZnJhbWVCeXRlc0F0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNl
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0
cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Okljb246Okljb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRU
SUZGUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNh
aXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCisyMDE2LTAz
LTE0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAg
ICAgUmVuYW1lIEZyYW1lRGF0YSB0byBJbWFnZUZyYW1lRGF0YSBhbmQgbW92ZSBpdCB0byBhIHNl
cGFyYXRlIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTQ0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBwbGFuIGlzIHRvIGhhdmUgY2FjaGluZyB0aGUgSW1hZ2VGcmFtZURhdGEgYmUgZG9u
ZSBieSB0aGUgSW1hZ2VTb3VyY2UuCisgICAgICAgIFNvIG1vdmUgdGhlIEltYWdlRnJhbWVEYXRh
IHRvIGEgc2VwYXJhdGUgZmlsZSBzbyBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieQorICAgICAgICBJ
bWFnZVNvdXJjZSBhbmQgQml0bWFwSW1hZ2UuIEFsc28gZG8gdGhlIGZvbGxvd2luZyBjbGVhbnVw
OgorICAgICAgICAxLiBDYWxjdWxhdGUgdGhlIGltYWdlIHNvbGlkQ29sb3IoKSBpbiB0aGUgSW1h
Z2VGcmFtZURhdGEgd2hlbiBpdCBpcyBuZWVkZWQuCisgICAgICAgIDIuIEhhdmUgYSBzaW5nbGUg
ZnVuY3Rpb24gQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpLgorICAgICAgICAzLiBH
ZXQgcmlkIG9mIEJpdG1hcEltYWdlOjptX2hhc1VuaWZvcm1GcmFtZVNpemUgc2luY2UgaXQgaXMg
bm90IHVzZWQuCisgICAgICAgIDQuIFJlcGxhY2UgQml0bWFwSW1hZ2UgbV9pc1NvbGlkQ29sb3Ig
YW5kIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgYnkgYSB0cmlzdGF0ZSAKKyAgICAgICAgICAgbWVt
YmVyIG5hbWVkIG1fc29saWRDb2xvclZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21h
a2U6CisgICAgICAgICogUGxhdGZvcm1XaW5DYWlyby5jbWFrZToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lE
ZWNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFk
YXRhQW5kTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRhdGVTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6aXNTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjptYXlG
aWxsV2l0aFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNvbGlk
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmR1bXApOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZURhdGE6OkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6
On5GcmFtZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6c29saWRDb2xvcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lRGF0YTo6fkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWVEYXRhOjpzdGF0dXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWVEYXRhLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcElt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6OnNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZURhdGE6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRh
OjpJbWFnZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xl
YXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNvbGlkQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxpbmdMZXZlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlV
bnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6
Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9y
U29saWRDb2xvcik6IERlbGV0ZWQuCisKKzIwMTYtMDMtMTMgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBDcmVhdGUgYSBDRyBJbWFnZURlY29k
ZXIgY2xhc3MgaW5zdGVhZCBvZiBkZWZpbmluZyBpdCBhcyBDR0ltYWdlU291cmNlUmVmIAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgaW1h
Z2UgZGVjb2RpbmcgY29kZSBmcm9tIEltYWdlU291cmNlQ0cuY3BwIG91dCB0byBhIG5ldyBjbGFz
cyBuYW1lZAorICAgICAgICBJbWFnZURlY29kZXIuIFRoZSBwdXJwb3NlIG9mIHRoaXMgc3BsaXQg
aXMgdG8gaGF2ZSB0aGUgQ0cgSW1hZ2VTb3VyY2Ugc2ltaWxhcgorICAgICAgICB0byB0aGUgbm9u
ZSBDRyBJbWFnZVNvdXJjZSB3aGVyZSB0aGVyZSBpcyBhIHNlcGFyYXRlIGNsYXNzIGZvciBkZWNv
ZGluZy4gVGhlCisgICAgICAgIHBsYW4gaXMgdG8gbWVyZ2UgdGhlIEltYWdlU291cmNlLmNwcCBh
bmQgSW1hZ2VTb3VyY2VDRy5jcHAgaW4gb25lIGZpbGUgc28KKyAgICAgICAgZGVjaWRpbmcgd2hl
dGhlciB0aGUgZGVjb2Rpbmcgc2hvdWxkIGhhcHBlbiBzeW5jaHJvbm91c2x5IG9yIGFzeW5jaHJv
bm91c2x5CisgICAgICAgIGNhbiBoYXBwZW4gaW4gb25lIHBsYWNlIGFuZCB0aGUgY2FjaGluZyBv
ZiB0aGUgZnJhbWVzIGNhbiBiZSBoYW5kbGVkIGJ5IHRoZQorICAgICAgICBJbWFnZVNvdXJjZSBh
cyB3ZWxsLgorCisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OnVwZGF0ZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNp
emVSZXNwZWN0aW5nT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkdW1w
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VT
b3VyY2VPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQ
b3NpdGlvbik7CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJSZWxlYXNlKTsKKyAgICAg
ICAgKFdlYkNvcmU6Om9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFt
ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Z2V0SG90U3BvdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6b3JpZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXI6On5JbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNp
emVSZXNwZWN0aW5nT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmdldEhvdFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25D
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnNoYXJlZEJ1ZmZlclJlbGVhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpp
bWFnZVNvdXJjZU9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmluaXRpYWxpemVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9yaWVudGF0aW9u
RnJvbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL0Ry
YWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGV0ZXJtaW5lTWluaW11bVN1YnNh
bXBsaW5nTGV2ZWwpOgorCisyMDE2LTAzLTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgQ2hhbmdlIE5hdGl2ZUltYWdlUHRyIGZvciBDRyB0
byBiZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTQxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEhhdmluZyBOYXRpdmVJbWFnZVB0ciBhcyBhIHJhdyBwb2ludGVy
IG1ha2VzIG1hbmFnaW5nIHRoZSBsaWZlIGN5Y2xlIG9mCisgICAgICAgIHRoZSBDR0ltYWdlUmVm
IGhhcmQuIEEgbG90IG9mIHdvcmtzIHdhcyBkb25lIHRvIG1ha2Ugc3VyZSB0aGUgQ0cgcG9pbnRl
cgorICAgICAgICBpcyBtYWludGFpbmVkIGNvcnJlY3RseS4gSXQgd2FzIGFsc28gbm90IHBvc3Np
YmxlIHRvIG1vdmUgYSBGcmFtZURhdGEgc2luY2UKKyAgICAgICAgY2FsbGluZyB0aGUgZGVzdHJ1
Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdlUmVmLgorCisgICAgICAgIEkgYW0gZ29pbmcg
dG8gZm9sbG93IHRoaXMgbmFtaW5nIGNvbnZlbnRpb246CisgICAgICAgIDEuIEFuIEltYWdlIG9i
amVjdCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRhIGNhbiBiZSBu
YW1lZAorICAgICAgICAgICBmb3Igc2hvcnRuZXNzIGFzICJmcmFtZSIsICJtX2ZyYW1lcyIsIGV0
Yy4KKyAgICAgICAgMi4gQSBGcmFtZURhdGEgY2FuIGhhdmUgemVybyBvciBvbmUgTmF0aXZlSW1h
Z2VQdHIuIEEgTmF0aXZlSW1hZ2VQdHIgY2FuCisgICAgICAgICAgIGJlIG5hbWVkIGFzICJpbWFn
ZSIsICJtX2ltYWdlIiwgZXRjLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6ZnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENv
bnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
RGF0YTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpj
b3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Y29weVVuc2NhbGVkRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SWNvbjo6SWNvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRh
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6
ZSk6CisKIDIwMTYtMDMtMTIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbRm9ybXM6IGZvY3VzXSBmb2N1cyByaW5ncyBhcm91bmQgdGV4dCBmaWVsZHMgZG8gbm90
IGZvbGxvdyBjb250b3VyIChib3JkZXItcmFkaXVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2
ZGM1OGIyNzhkOGMwYWMwM2U5NzA0MjFlMTFlNDJiOTU5YTY4NmQ2Li5lODg3OTIwMzZiN2MzZDY4
ZTIzMjc1YjhlZWU5MjNmMDZlYzJkYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjIxOCw2
ICsyMjE4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lT
T1ZUVEN1ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ludFJlY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2lu
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCBlNTIw
OWNiMjBjZjAzMzg3YTI1MjY0M2RmNGUwYjIxNTE0OTIwNGY3Li5iMDliNjA2YjQwZWM3ZWRlNmJm
MDA2OTkzMzg4YjEzY2UyOTg3NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21h
a2UKQEAgLTcxLDcgKzcxLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUNHLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50
UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGVjZTJjNTMwOTFhNTZjZDkzMzA2ZTViYWJmYTQ4ODY2
MzRmMjU5ZjkuLmFkN2M3ZjRjYzI3NjY0ZTVjZTViNTE4NjhhYzk3NDJhNzhkOTljODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMjMsNiArMTIzLDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAogICAg
IHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKIAorICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRnJhbWVEYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggZTZjODdiMmQ3ZTk0MWUzNDlhNjdhYTZjNjgzYWEzNGRjNjBhZGMxZi4uOTQ5ODQ5NTNk
MzlhOGI1ZTdlYmIwY2U5YjUyMjIyZjg1MmMzZjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKQEAgLTk0LDYgKzk0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWVEYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCmluZGV4IDgzNWI5YWEyMjRhYTllYWFlZTA0NjIzMzk3ZTk5MDE2ZTlmN2VlYmYuLjQwMTM1
YjM0OGIyOTNiYzFhOGE3ODc3YjkxNDI4Yjc5YjVjNTdlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCkBAIC00MDAsNyArNDAwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUNHLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IDM4YTAyOGM1Yjg5MWJjYjFm
ZGRlMmRkZWIyYTMxYmY4MTNkNTM4Y2QuLjI0OGM4OWEwYjA1N2QxZTVkNmU0NDFlZWJjNGMzOGZm
ODI0ZjIyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMzksNiAr
MzksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0dMQ29udGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNw
cAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
RGlzcGxheS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAz
MDdiYTM4ZmYwZjNhNGM0NzFiOWQ0MjkxNDYxNjJhOTU5ZWU3NjYuLjlhY2E3MDkwZjQ3NjlhMjkw
N2RiNzRhN2Y0YzYzNzY2MGNhOGUzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyOTEsNiArMjI5MSwxMCBAQAogCQk1M0VG
NzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRl
ZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1
MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2
MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1OUJCODc5MUM5NjQ2NTgwMDI0
MTNDRCAvKiBJbWFnZURlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTU5QkI4NzcxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5j
cHAgKi87IH07CisJCTU1OUJCODdBMUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUJCODc4MUM5
NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuaCAqLzsgfTsKKwkJNTU5QkI4N0QxQzk2QjJD
ODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUJCODdCMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZy
YW1lRGF0YS5jcHAgKi87IH07CisJCTU1OUJCODdFMUM5NkIyQzkwMDI0MTNDRCAvKiBJbWFnZUZy
YW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTU5QkI4N0MxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAw
OUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xp
Y2suaCAqLzsgfTsKIAkJNTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3
RjIyMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4MDM3
MTYxMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xp
cFJlY3QuY3BwICovOyB9OwpAQCAtNTAwMiw3ICs1MDA2LDYgQEAKIAkJQjI3NTM1NUEwQjA1Mzgx
NDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RD
Ry5jcHAgKi87IH07CiAJCUIyNzUzNTVCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUy
RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovOyB9OwogCQlCMjc1MzU1RTBC
MDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5j
cHAgKi87IH07Ci0JCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMx
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjAw
QjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBv
aW50Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENH
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUz
NTMzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2MjBC
MDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXpl
Q0cuY3BwICovOyB9OwpAQCAtOTg3NSw2ICs5ODc4LDEwIEBACiAJCTUzRUY3NjZBMTY1MzBBNjEw
MDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXR0aW5nc01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBB
MEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CisJCTU1OUJCODc3MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VEZWNvZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU5QkI4NzgxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVj
b2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU5QkI4N0IxQzk2QjJDODAwMjQxM0NEIC8q
IEltYWdlRnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEltYWdlRnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU5QkI4
N0MxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0
ZWRDbGljay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGlj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYx
NDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTI5MDUsNyArMTI5MTIsNiBAQAogCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRS
ZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0UmVj
dENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MkQwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGbG9hdFNpemVDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIy
NzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlU291cmNlQ0cuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50
UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UG9p
bnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMzMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEludFJlY3RDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUz
NTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEludFNpemVDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMTgzMyw3ICsyMTgzOSw4IEBACiAJCQkJMjI5MkIyN0IxMzU2NjY5NDAwQ0YxMUVG
IC8qIEltYWdlQnVmZmVyRGF0YUNHLmNwcCAqLywKIAkJCQkyMkJEOUY4MDEzNTM2NEZFMDA5QkQx
MDIgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuaCAqLywKIAkJCQlCMjc1MzUzMDBCMDUzODE0MDAyQ0U2
NEYgLyogSW1hZ2VDRy5jcHAgKi8sCi0JCQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIElt
YWdlU291cmNlQ0cuY3BwICovLAorCQkJCTU1OUJCODc3MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFn
ZURlY29kZXIuY3BwICovLAorCQkJCTU1OUJCODc4MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURl
Y29kZXIuaCAqLywKIAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VD
Ry5oICovLAogCQkJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFj
Lm1tICovLAogCQkJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAq
LywKQEAgLTIxOTk1LDYgKzIyMDAyLDggQEAKIAkJCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkg
LyogSW1hZ2VCdWZmZXIuY3BwICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAvKiBJ
bWFnZUJ1ZmZlci5oICovLAogCQkJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1
ZmZlckRhdGEuaCAqLywKKwkJCQk1NTlCQjg3QjFDOTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VGcmFt
ZURhdGEuY3BwICovLAorCQkJCTU1OUJCODdDMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1l
RGF0YS5oICovLAogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVy
LmggKi8sCiAJCQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24u
Y3BwICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9u
LmggKi8sCkBAIC0yNTQ3NSw2ICsyNTQ4NCw3IEBACiAJCQkJOTdCQzZBMjQxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMzcxQTIx
NjdDMTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTdCQzZBMjUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU1OUJCODdFMUM5NkIyQzkwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjkxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlRGV0YWlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUwOURCNDkxNjlFMkQ2RTAw
NjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjY4MTIsNiArMjY4
MjIsNyBAQAogCQkJCUZEQTE1RUNFMTJCMDNGNjEwMDNBNTgzQSAvKiBKU1NjcmlwdFByb2Nlc3Nv
ck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTlGQTM3RUZCMTE3MkZEQTYwMEM0Q0Q1NSAvKiBK
U1NjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTlGQTM3RUZEMTE3MkZEQTYwMEM0
Q0Q1NSAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTlCQjg3
QTFDOTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RUQwNkFEMTFDNzc3NTQ4MDBGREZBRjEgLyogSlNTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkRBNjREODFCOTc1Q0YyMDA5QzQzODcgLyogSlNTaGFk
b3dSb290LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDlERTE3QjE3QUFDNzVCMDBFQTM4NkQgLyog
SlNTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjkyMDMsNiArMjkyMTQsNyBAQAog
CQkJCUIyNzUzNTY2MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkNGMzMyNDBGMkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUJBNzZDOTExRDIwRTQ3MDA0QzIwMUMgLyogQ29sb3JEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTU1OUJCODc5MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyOTkzNUQxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5w
dXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTc3MEIwNTM4MTQwMDJDRTY0RiAv
KiBDb2xvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQzRURENjdFMUI0ODVEQkYwMDY0MEU3
NSAvKiBDb21iaW5lZEZpbHRlcnNBbHBoYWJldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NTk4
LDYgKzI5NjEwLDcgQEAKIAkJCQk4NTNCRjREQzBBQkI2QjU1MDA4NjQ3QkIgLyogRE9NTm9kZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTg1NTI2QzM4MEFCMEExN0UwMDAzMDJFQSAvKiBET01Ob2Rl
SXRlcmF0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUFDQUE4RTBBOUI3NTlDMDA2NzFFOTAg
LyogRE9NTm9kZUxpc3QubW0gaW4gU291cmNlcyAqLywKKwkJCQk1NTlCQjg3RDFDOTZCMkM4MDAy
NDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU2QzhBRTUw
QTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QzdG
NUQxMEFBRkI4RDkwMDQwMTRERCAvKiBET01PdmVyZmxvd0V2ZW50Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTEyODRCRDUxMDQ0QTAxRTAwRUFFQjUyIC8qIERPTVBhZ2VUcmFuc2l0aW9uRXZlbnQu
bW0gaW4gU291cmNlcyAqLywKQEAgLTMwMDYwLDcgKzMwMDczLDYgQEAKIAkJCQkyRDVBNTkyRjE1
MjUyNTIzMDAzNkVFNTEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCNTFBMkY0MTE3RDdENURFMDA3MjUxN0EgLyogSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIElt
YWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEIzNDgwOTMwRUVGNTBENDAwQUMx
QjQxIC8qIEltYWdlU291cmNlQ0dNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExNzBF
NkUxREE3MDBCRjYwODggLyogSW1wbGljaXRBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkU5NjFDNTQxOEFEMzM4NTAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCBmMzc4NzUyMWRkZmZmNjgyYmQ4OGU2NDcyY2FmMDYyNWUzZjA0NTQ0Li45YTE0NzU3
ODgzN2ZjZGUxMzEwZDFhZDEwNjIyYjdiYjcwNjg0YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBMYXlvdXRTaXpl
IENhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCBmbG9hdAogICAgIGlmIChyZW5kZXJlciAmJiBpczxCaXRtYXBJbWFnZT4oKm1faW1h
Z2UpKSB7CiAgICAgICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uKHJlbmRlcmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCByZW5k
ZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogICAgICAgICBpZiAob3JpZW50YXRp
b25EZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKQotICAgICAgICAgICAgaW1hZ2VTaXplID0gTGF5b3V0U2l6ZShkb3duY2FzdDxC
aXRtYXBJbWFnZT4oKm1faW1hZ2UpLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24ob3JpZW50YXRp
b25EZXNjcmlwdGlvbikpOworICAgICAgICAgICAgaW1hZ2VTaXplID0gTGF5b3V0U2l6ZShkb3du
Y2FzdDxCaXRtYXBJbWFnZT4oKm1faW1hZ2UpLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSk7
CiAgICAgfQogI2Vsc2UKICAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKSAmJiAocmVu
ZGVyZXIgJiYgcmVuZGVyZXItPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVz
cGVjdEltYWdlT3JpZW50YXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAKaW5kZXggOTk5NDY1ZWEzOTA2OTdjYmUwMGZlNmZhODgzOGMxMzhlNTQ0N2Ex
Ny4uODQ2YzBkYzkzODRlNzVkYmEwODIwYzI4MGZiNjQxY2U4YTA4ZjE2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMjUsOCArMjI1LDYgQEAg
Ym9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3QKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRJbWFn
ZT4gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1h
cEltYWdlLmdldCgpLCBDYWNoZWRJbWFnZTo6TWFudWFsbHlDYWNoZWQsIHNlc3Npb25JRCk7CiAK
LSAgICAvLyBBY3R1YWwgcmVsZWFzZSBvZiB0aGUgQ0dJbWFnZVJlZiBpcyBkb25lIGluIEJpdG1h
cEltYWdlLgotICAgIENGUmV0YWluKGltYWdlKTsKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50
KCZkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVk
U2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJ
VElPTklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcAppbmRleCBmYWYwZjg2OTYyYzNmYjY1Nzc3NDViZmFmNzViNGM4NGQ4MGNjMDYwLi5j
YjViMWM5YTQxODE2OGVmN2ZlNzMxOWVjOGMxMjM2NjRhZWRjZjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC00Nyw5ICs0Nyw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX21pbmlt
dW1TdWJzYW1wbGluZ0xldmVsKDApCi0gICAgLCBtX2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9w
TGVmdCkKLSAgICAsIG1fc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oZmFsc2UpCiAgICAg
LCBtX2N1cnJlbnRGcmFtZSgwKQogICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5v
bmUpCiAgICAgLCBtX3JlcGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQpAQCAtNjYsMTMgKzYz
LDEwIEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
ICNlbHNlCiAgICAgLCBtX2FsbG93U3Vic2FtcGxpbmcoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1f
aXNTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkK
ICAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQoZmFsc2UpCiAgICAgLCBtX2FsbERhdGFSZWNlaXZl
ZChmYWxzZSkKICAgICAsIG1faGF2ZVNpemUoZmFsc2UpCiAgICAgLCBtX3NpemVBdmFpbGFibGUo
ZmFsc2UpCi0gICAgLCBtX2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZy
YW1lQ291bnQoZmFsc2UpCiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAo
ZmFsc2UpCiB7CkBAIC05Niw3ICs5MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIo
ZG91YmxlIGRlbGF5KQogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0K
IAotYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitib29s
IEJpdG1hcEltYWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAg
IGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEw
NCw3ICs5OCw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6Omhhc1Npbmds
ZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTEyNSw3ICsxMTksNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogICAgICAgICAvLyBzYXZl
IHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRhKSwgc28gd2UgZG9uJ3QgbmVlZCB0
byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCiAgICAgICAgIHVuc2lnbmVkIGZyYW1l
Qnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tp
XS5jbGVhcihmYWxzZSkpCisgICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1l
Q2FjaGluZzo6Q2FjaGVNZXRhZGF0YSkpCiAgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCAr
PSBmcmFtZUJ5dGVzOwogICAgIH0KIApAQCAtMTU4LDggKzE1Miw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKIAogdm9p
ZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVkIGZyYW1lQnl0
ZXNDbGVhcmVkLCBDbGVhcmVkU291cmNlIGNsZWFyZWRTb3VyY2UpCiB7Ci0gICAgbV9pc1NvbGlk
Q29sb3IgPSBmYWxzZTsKLSAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gZmFsc2U7CisgICAg
bV9zb2xpZENvbG9yVmFsdWUgPSBUcmlTdGF0ZTo6VW5jaGVja2VkOwogICAgIGludmFsaWRhdGVQ
bGF0Zm9ybURhdGEoKTsKIAogICAgIEFTU0VSVChtX2RlY29kZWRTaXplID49IGZyYW1lQnl0ZXND
bGVhcmVkKTsKQEAgLTE4MywxMSArMTc2LDkgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFt
ZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAg
ICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93
KG51bUZyYW1lcyk7CiAKLSAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRG
cmFtZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSA9IG1fc291cmNlLmNyZWF0
ZUZyYW1lQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgaWYgKGZyYW1lQ2Fj
aGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7CisgICAg
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogICAgICAgICBtX2ZyYW1lc1tpbmRleF0u
bV9zdWJzYW1wbGluZ0xldmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICAgICAgaWYgKG51bUZy
YW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAgICAgICAgY2hlY2tG
b3JTb2xpZENvbG9yKCk7CiAgICAgfQogCiAgICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRp
b24gPSBtX3NvdXJjZS5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwpAQCAtMjAwLDExICsxOTEs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhc0Fs
cGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogICAgIG1fZnJhbWVz
W2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKLSAgICBjb25zdCBJbnRTaXplIGZyYW1lU2l6ZShpbmRleCA/
IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbV9z
aXplKTsKLSAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwgJiYgZnJhbWVTaXplICE9IG1fc2l6ZSkK
LSAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7Ci0KLSAgICBpZiAobV9mcmFt
ZXNbaW5kZXhdLm1fZnJhbWUpIHsKKyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsK
ICAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZlQ2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lQnl0ZXMpOwogICAgICAgICBtX2RlY29kZWRTaXplICs9IGRlbHRhQnl0ZXM7CiAgICAg
ICAgIC8vIFRoZSBmdWxseS1kZWNvZGVkIGZyYW1lIHdpbGwgc3Vic3VtZSB0aGUgcGFydGlhbGx5
IGRlY29kZWQgZGF0YSB1c2VkCkBAIC0yMzYsMTYgKzIyMywxMyBAQCB2b2lkIEJpdG1hcEltYWdl
OjpkaWREZWNvZGVQcm9wZXJ0aWVzKCkgY29uc3QKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
ZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgZGVsdGFCeXRlcyk7CiB9CiAKLXZvaWQgQml0bWFwSW1h
Z2U6OnVwZGF0ZVNpemUoSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBj
b25zdAordm9pZCBCaXRtYXBJbWFnZTo6dXBkYXRlU2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3NpemVBdmFpbGFibGUgfHwgbV9oYXZlU2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9z
aXplID0gbV9zb3VyY2Uuc2l6ZShkZXNjcmlwdGlvbik7Ci0gICAgbV9zaXplUmVzcGVjdGluZ09y
aWVudGF0aW9uID0gbV9zb3VyY2Uuc2l6ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVz
cGVjdEltYWdlT3JpZW50YXRpb24sIGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSkpOwot
Ci0gICAgbV9pbWFnZU9yaWVudGF0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0
aW9uLmltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAgbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbigpKTsKKyAgICBtX3NpemUgPSBtX3NvdXJjZS5zaXplKCk7CisgICAgbV9zaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uID0gbV9zb3VyY2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigp
OwogCiAgICAgbV9oYXZlU2l6ZSA9IHRydWU7CiAKQEAgLTI1OSw5ICsyNDMsOSBAQCBGbG9hdFNp
emUgQml0bWFwSW1hZ2U6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLUlu
dFNpemUgQml0bWFwSW1hZ2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAorSW50U2l6ZSBCaXRtYXBJbWFnZTo6
c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0CiB7Ci0gICAgdXBkYXRlU2l6ZShkZXNj
cmlwdGlvbik7CisgICAgdXBkYXRlU2l6ZSgpOwogICAgIHJldHVybiBtX3NpemVSZXNwZWN0aW5n
T3JpZW50YXRpb247CiB9CiAKQEAgLTMwMSw3ICsyODUsNyBAQCBib29sIEJpdG1hcEltYWdlOjpk
YXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8gY2xlYXJlZC1vbi1h
LXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKICAgICAgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IG1f
ZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKICAgICAgICAgaWYgKG1fZnJhbWVzW2ldLm1faGF2ZU1l
dGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAgICAgICAgICBmcmFtZUJ5
dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBmcmFtZUJ5dGVzIDogMCk7
CisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIoSW1h
Z2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSkgPyBmcmFtZUJ5dGVzIDogMCk7CiAgICAgfQogICAg
IGRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeShmcmFtZUJ5dGVzQ2xlYXJlZCwgQ2xlYXJlZFNvdXJj
ZTo6Tm8pOwogI2Vsc2UKQEAgLTMwOSw3ICsyOTMsNyBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRh
Q2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBpbnQgZGVsdGFCeXRlcyA9IDA7CiAg
ICAgaWYgKCFtX2ZyYW1lcy5pc0VtcHR5KCkpIHsKICAgICAgICAgaW50IGJ5dGVzID0gbV9mcmFt
ZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFt
ZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0uY2xlYXIodHJ1ZSkpIHsKKyAgICAgICAgaWYgKG1fZnJh
bWVzW21fZnJhbWVzLnNpemUoKSAtIDFdLmNsZWFyKEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU5v
bmUpKSB7CiAgICAgICAgICAgICBkZWx0YUJ5dGVzICs9IGJ5dGVzOwogICAgICAgICAgICAgZGVs
dGFCeXRlcyArPSBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgICAgIG1fZGVjb2Rl
ZFByb3BlcnRpZXNTaXplID0gMDsKQEAgLTM0MCw3ICszMjQsNiBAQCBib29sIEJpdG1hcEltYWdl
OjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICNlbmRpZgogCiAgICAgbV9oYXZl
RnJhbWVDb3VudCA9IGZhbHNlOwotICAgIG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA9IHRydWU7CiAg
ICAgcmV0dXJuIGlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCkBAIC0zNzksMjYgKzM2MiwyNiBAQCBi
b29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VG
cmFtZUNhY2hpbmcgZnJhbWVDYWNoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
aW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2Fj
aGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAgICAgICAg
fHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhd
Lm1faGF2ZU1ldGFkYXRhKSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1l
Q2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVN
ZXRhZGF0YSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKICAgICAgICAgY2Fj
aGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKIAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5k
ZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkKK1Bhc3NOYXRpdmVJbWFnZVB0ciBCaXRt
YXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRp
b25TY2FsZUhpbnQpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwg
PSBzdGQ6Om1pbihtX3NvdXJjZS5zdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUocHJlc2VudGF0aW9u
U2NhbGVIaW50KSwgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZlbCk7CisgICAgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsID0gbV9zb3VyY2Uuc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxl
KHByZXNlbnRhdGlvblNjYWxlSGludCwgbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiAKICAg
ICAvLyBXZSBtYXkgaGF2ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEgaGlnaGVyIHN1YnNhbXBsaW5n
IGxldmVsLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8KICAgICAvLyByZS1kZWNvZGUgd2l0aCBh
IGxvd2VyIGxldmVsLgotICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1l
c1tpbmRleF0ubV9mcmFtZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1f
c3Vic2FtcGxpbmdMZXZlbCkgeworICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBt
X2ZyYW1lc1tpbmRleF0ubV9pbWFnZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5k
ZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgewogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgYWxy
ZWFkeSBjYWNoZWQsIGJ1dCBhdCB0b28gc21hbGwgYSBzaXplLCByZS1kZWNvZGUgYSBsYXJnZXIg
dmVyc2lvbi4KICAgICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlczsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpOworICAgICAgICBt
X2ZyYW1lc1tpbmRleF0uY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSk7CiAgICAg
ICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBz
aXplQ2hhbmdlOwogICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpAQCAtNDA2LDE1ICszODks
MTUgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2EKICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZl
bid0IGZldGNoZWQgYSBmcmFtZSB5ZXQsIGRvIHNvLgotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1l
cy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAgICBjYWNoZUZyYW1l
KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIGlm
IChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQor
ICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2Fj
aGluZzo6Q2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewot
ICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQor
ICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmc6OkNh
Y2hlTWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9mcmFt
ZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsKQEAgLTQyMiw3ICs0MDUsNyBAQCBib29sIEJpdG1hcElt
YWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIAogZmxvYXQgQml0bWFw
SW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVu
c3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVu
c3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRh
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVy
YXRpb247CkBAIC00MzAsMTIgKzQxMywxMiBAQCBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogCiBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdElu
ZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoY3VycmVu
dEZyYW1lKCkpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNo
ZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFn
ZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkKQEAgLTQ1MSw3ICs0MzQsNyBA
QCBib29sIEJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogCiBJbWFn
ZU9yaWVudGF0aW9uIEJpdG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFk
YXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1l
Q2FjaGluZzo6Q2FjaGVNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmll
bnRhdGlvbjsKIAogICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpCkBAIC02
NzgsMTkgKzY2MSw0OSBAQCBib29sIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRp
b24oQW5pbWF0aW9uQWR2YW5jZW1lbnQgYWR2YW5jZW1lbnQpCiAKICAgICByZXR1cm4gYWR2YW5j
ZWRBbmltYXRpb247CiB9CisgICAgCit2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29s
b3IoKQoreworICAgIG1fc29saWRDb2xvclZhbHVlID0gVHJpU3RhdGU6Ok5vOworICAgIAorICAg
IGlmIChmcmFtZUNvdW50KCkgPiAxKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFo
YXZlRnJhbWVJbWFnZUF0SW5kZXgoMCkpIHsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gbV9zb3Vy
Y2UuZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKKyAgICAgICAgaWYgKHNpemUud2lkdGgoKSAhPSAx
IHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisg
ICAgICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZCgwKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaWYgKCFtX2ZyYW1lcy5zaXplKCkpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBpZiAoT3B0aW9uYWw8Q29sb3I+IGNvbG9yID0gbV9mcmFtZXNbMF0uc29saWRD
b2xvcigpKSB7CisgICAgICAgIG1fc29saWRDb2xvciA9IGNvbG9yLnZhbHVlKCk7CisgICAgICAg
IG1fc29saWRDb2xvclZhbHVlID0gVHJpU3RhdGU6OlllczsKKyAgICB9Cit9CiAKLWJvb2wgQml0
bWFwSW1hZ2U6Om1heUZpbGxXaXRoU29saWRDb2xvcigpCitib29sIEJpdG1hcEltYWdlOjppc1Nv
bGlkQ29sb3IoKQogewotICAgIGlmICghbV9jaGVja2VkRm9yU29saWRDb2xvciAmJiBmcmFtZUNv
dW50KCkgPiAwKSB7CisgICAgaWYgKG1fc29saWRDb2xvclZhbHVlID09IFRyaVN0YXRlOjpVbmNo
ZWNrZWQgJiYgZnJhbWVDb3VudCgpID4gMCkgewogICAgICAgICBjaGVja0ZvclNvbGlkQ29sb3Io
KTsKLSAgICAgICAgQVNTRVJUKG1fY2hlY2tlZEZvclNvbGlkQ29sb3IpOworICAgICAgICBBU1NF
UlQobV9zb2xpZENvbG9yVmFsdWUgIT0gVHJpU3RhdGU6OlVuY2hlY2tlZCk7CiAgICAgfQotICAg
IHJldHVybiBtX2lzU29saWRDb2xvciAmJiAhbV9jdXJyZW50RnJhbWU7CisgICAgcmV0dXJuIG1f
c29saWRDb2xvclZhbHVlID09IFRyaVN0YXRlOjpZZXM7CiB9Ci0KLUNvbG9yIEJpdG1hcEltYWdl
Ojpzb2xpZENvbG9yKCkgY29uc3QKKyAgICAKK2Jvb2wgQml0bWFwSW1hZ2U6Om1heUZpbGxXaXRo
U29saWRDb2xvcigpCit7CisgICAgcmV0dXJuIGlzU29saWRDb2xvcigpICYmICFtX2N1cnJlbnRG
cmFtZTsKK30KKyAgICAKK0NvbG9yIEJpdG1hcEltYWdlOjpzb2xpZENvbG9yKCkKIHsKLSAgICBy
ZXR1cm4gbV9zb2xpZENvbG9yOworICAgIHJldHVybiBpc1NvbGlkQ29sb3IoKSA/IG1fc29saWRD
b2xvciA6IENvbG9yKCk7CiB9CiAgICAgCiBib29sIEJpdG1hcEltYWdlOjpjYW5BbmltYXRlKCkK
QEAgLTcxMiwxMSArNzI1LDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0
cykgY29uc3QKICAgICAKICAgICBpZiAoYWxsb3dTdWJzYW1wbGluZygpKQogICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImFsbG93LXN1YnNhbXBsaW5nIiwgYWxsb3dTdWJzYW1wbGluZygpKTsKLSAg
ICBpZiAobV9pc1NvbGlkQ29sb3IpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic29saWQtY29s
b3IiLCBtX2lzU29saWRDb2xvcik7Ci0gICAgCi0gICAgaWYgKG1faW1hZ2VPcmllbnRhdGlvbiAh
PSBPcmlnaW5Ub3BMZWZ0KQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm9yaWVudGF0aW9uIiwg
bV9pbWFnZU9yaWVudGF0aW9uKTsKKyAgICBpZiAobV9zb2xpZENvbG9yVmFsdWUgPT0gVHJpU3Rh
dGU6OlllcykKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzb2xpZC1jb2xvciIsIG1fc29saWRD
b2xvcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCmluZGV4IDc0OTNjNmE0YmZiODYzZDk3NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQu
LmQ5OTdlZGQ1MmUyNjNiNTVmYzJkMDgxOWE2YzczMjE2ODIzYjkyNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIklt
YWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUg
IkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgpAQCAtNDcsNjEgKzQ4LDkgQEAg
dHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fICpIQklUTUFQOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLSAgICBzdHJ1Y3QgRnJhbWVEYXRhOwotfQotCi1uYW1lc3BhY2UgV1RGIHsKLSAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6RnJhbWVEYXRhPiA6IHB1
YmxpYyBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29s
IGNhbkluaXRpYWxpemVXaXRoTWVtc2V0ID0gZmFsc2U7IC8vIE5vdCBhbGwgRnJhbWVEYXRhIG1l
bWJlcnMgaW5pdGlhbGl6ZSB0byAwLgotICAgIH07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgVGltZXI7CiAKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLy8gRnJhbWVEYXRhIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhbWVEYXRhKTsKLXB1YmxpYzoKLSAgICBGcmFtZURhdGEo
KQotICAgICAgICA6IG1fZnJhbWUoMCkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJ
bWFnZU9yaWVudGF0aW9uKQotICAgICAgICAsIG1fc3Vic2FtcGxpbmdMZXZlbCgwKQotICAgICAg
ICAsIG1fZHVyYXRpb24oMCkKLSAgICAgICAgLCBtX2hhdmVNZXRhZGF0YShmYWxzZSkKLSAgICAg
ICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCi0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKSAKLSAg
ICAgICAgLCBtX2ZyYW1lQnl0ZXMoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZyYW1lRGF0YSgp
Ci0gICAgeyAKLSAgICAgICAgY2xlYXIodHJ1ZSk7Ci0gICAgfQotCi0gICAgLy8gQ2xlYXIgdGhl
IGNhY2hlZCBpbWFnZSBkYXRhIG9uIHRoZSBmcmFtZSwgYW5kIChvcHRpb25hbGx5KSB0aGUgbWV0
YWRhdGEuCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0
YSB0byBjbGVhci4KLSAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7Ci0KLSAgICBO
YXRpdmVJbWFnZVB0ciBtX2ZyYW1lOwotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlv
bjsKLSAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbDsKLSAgICBmbG9hdCBt
X2R1cmF0aW9uOwotICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0Nv
bXBsZXRlIDogMTsKLSAgICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJh
bWVCeXRlczsKLX07Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFs
IDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAg
ZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTI1LDcgKzc0LDcgQEAg
cHVibGljOgogCiAgICAgLy8gRmxvYXRTaXplIGR1ZSB0byBvdmVycmlkZS4KICAgICBGbG9hdFNp
emUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oKSkgY29uc3Q7CisgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9u
KCkgY29uc3Q7CiAKICAgICBib29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdCBvdmVycmlk
ZTsKIApAQCAtMTg5LDcgKzEzOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc0Jp
dG1hcEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdm9pZCB1
cGRhdGVTaXplKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbigpKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZVNpemUoKSBjb25zdDsKICAgICB2
b2lkIGRldGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKQEAgLTIxNCwxMCArMTYzLDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHNpemVfdCBmcmFtZUNv
dW50KCk7CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCwgZmxv
YXQgcHJlc2VudGF0aW9uU2NhbGVIaW50ID0gMSk7Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNv
cHlVbnNjYWxlZEZyYW1lQXRJbmRleChzaXplX3QpOworICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBm
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEp
OworICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChz
aXplX3QpOwogCi0gICAgYm9vbCBoYXZlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgYm9vbCBo
YXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7
CkBAIC0yMjUsMTEgKzE3NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBm
cmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2Fj
aGVzIGEgZnJhbWUuIE5ldmVyIGFjY2Vzc2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0g
SW1hZ2VGcmFtZUNhY2hpbmcgeyBDYWNoZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZy
YW1lIH07Ci0gICAgdm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQg
Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNo
aW5nID0gSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CiAKICAgICAv
LyBDYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0gZm9yIGluZm8gd2l0aG91
dCBkZWNvZGluZy4gUmV0dXJucyBmYWxzZSBvbiBpbmRleCBvdXQgb2YgYm91bmRzLgotICAgIGJv
b2wgZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nID0g
Q2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBib29sIGVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6
ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1l
dGFkYXRhQW5kRnJhbWUpOwogCiAgICAgLy8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRh
dGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVu
dGlyZSBmcmFtZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0
cm95CkBAIC0yODAsOCArMjI4LDkgQEAgcHJvdGVjdGVkOgogICAgIC8vIGNoYW5nZWQuCiAgICAg
dm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKTsKIAorICAgIGJvb2wgaXNTb2xpZENvbG9yKCk7CiAg
ICAgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKLSAgICBDb2xvciBzb2xp
ZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3Igc29saWRDb2xvcigpIG92ZXJyaWRl
OwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGJvb2wgbm90U29saWRDb2xvcigpIG92ZXJy
aWRlOwpAQCAtMjk3LDEzICsyNDYsMTAgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEludFNpemUg
bV9zaXplOyAvLyBUaGUgc2l6ZSB0byB1c2UgZm9yIHRoZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1
c3QgYmUgdGhlIHNpemUgb2YgdGhlIGZpcnN0IGltYWdlKS4KICAgICBtdXRhYmxlIEludFNpemUg
bV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOwogCi0gICAgbXV0YWJsZSBTdWJzYW1wbGluZ0xl
dmVsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWw7Ci0KLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1f
aW1hZ2VPcmllbnRhdGlvbiA6IDQ7IC8vIEltYWdlT3JpZW50YXRpb25FbnVtCi0gICAgbXV0YWJs
ZSB1bnNpZ25lZCBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIDogMTsgLy8gUmVzcGVj
dEltYWdlT3JpZW50YXRpb25FbnVtCisgICAgbXV0YWJsZSBTdWJzYW1wbGluZ0xldmVsIG1fbWF4
aW11bVN1YnNhbXBsaW5nTGV2ZWwgeyAwIH07CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWU7
IC8vIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVj
dG9yPEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJh
bWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBp
biB0aGUgY2FjaGUuCisgICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8g
QW4gYXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0
byByZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8g
SG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4gVGhpcyB3aWxsIGJl
IGNBbmltYXRpb25Ob25lIGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0
aW9uLgpAQCAtMzMwLDE2ICsyNzYsMTUgQEAgcHJpdmF0ZToKICAgICB1aW50MTZfdCBtX3Byb2dy
ZXNzaXZlTG9hZENodW5rQ291bnQ7CiAjZW5kaWYKIAorICAgIGVudW0gY2xhc3MgVHJpU3RhdGUg
eyBVbmNoZWNrZWQsIE5vLCBZZXMgfTsKKyAgICBUcmlTdGF0ZSBtX3NvbGlkQ29sb3JWYWx1ZSB7
IFRyaVN0YXRlOjpVbmNoZWNrZWQgfTsKKyAgICAKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGlu
ZyA6IDE7IC8vIFdoZXRoZXIgd2Ugc2hvdWxkIGF0dGVtcHQgc3Vic2FtcGxpbmcgaWYgdGhpcyBp
bWFnZSBpcyB2ZXJ5IGxhcmdlLgotICAgIGJvb2wgbV9pc1NvbGlkQ29sb3IgOiAxOyAvLyBXaGV0
aGVyIG9yIG5vdCB3ZSBhcmUgYSAxeDEgc29saWQgaW1hZ2UuCi0gICAgYm9vbCBtX2NoZWNrZWRG
b3JTb2xpZENvbG9yIDogMTsgLy8gV2hldGhlciB3ZSd2ZSBjaGVja2VkIHRoZSBmcmFtZSBmb3Ig
c29saWQgY29sb3IuCi0KICAgICBib29sIG1fYW5pbWF0aW9uRmluaXNoZWQgOiAxOyAvLyBXaGV0
aGVyIG9yIG5vdCB3ZSd2ZSBjb21wbGV0ZWQgdGhlIGVudGlyZSBhbmltYXRpb24uCiAKICAgICBi
b29sIG1fYWxsRGF0YVJlY2VpdmVkIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UndmUgcmVjZWl2
ZWQgYWxsIG91ciBkYXRhLgogICAgIG11dGFibGUgYm9vbCBtX2hhdmVTaXplIDogMTsgLy8gV2hl
dGhlciBvciBub3Qgb3VyIHxtX3NpemV8IG1lbWJlciB2YXJpYWJsZSBoYXMgdGhlIGZpbmFsIG92
ZXJhbGwgaW1hZ2Ugc2l6ZSB5ZXQuCiAgICAgYm9vbCBtX3NpemVBdmFpbGFibGUgOiAxOyAvLyBX
aGV0aGVyIG9yIG5vdCB3ZSBjYW4gb2J0YWluIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSBm
cmFtZSB5ZXQgZnJvbSBJbWFnZUlPLgotICAgIG11dGFibGUgYm9vbCBtX2hhc1VuaWZvcm1GcmFt
ZVNpemUgOiAxOwogICAgIG11dGFibGUgYm9vbCBtX2hhdmVGcmFtZUNvdW50IDogMTsKICAgICBi
b29sIG1fYW5pbWF0aW9uRmluaXNoZWRXaGVuQ2F0Y2hpbmdVcCA6IDE7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBkOTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIz
YTRiOWFlZjNmM2MxN2I3Li4yOGMxMzdkMjliMTE4YTljZjFiNjE2MWVkZTRkZTQ5MWQwNDg4MzA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC02OCw4ICs2OCw4
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCi0gICAgSWNvbihDR0lt
YWdlUmVmKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOworICAgIEljb24o
TmF0aXZlSW1hZ2VQdHIpOworICAgIE5hdGl2ZUltYWdlUHRyIG1fY2dJbWFnZTsKICNlbGlmIFBM
QVRGT1JNKE1BQykKICAgICBJY29uKE5TSW1hZ2UqKTsKICAgICBSZXRhaW5QdHI8TlNJbWFnZT4g
bV9uc0ltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXgg
NDFmZWYyYTJiMDMxNzBlM2IwM2ZkNmM1MmEyZmRmMjgzZTU2Mjc1OC4uYjEyYzBjMWVlMmZmODE0
MTQ1ZGFkMGEzNDZkMWM3YTc3NGI2YTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCkBAIC0xOTQsNyArMTk0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU3Vw
cG9ydGluZyB0aWxlZCBkcmF3aW5nCiAgICAgdmlydHVhbCBib29sIG1heUZpbGxXaXRoU29saWRD
b2xvcigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQorICAgIHZpcnR1YWwgQ29sb3Igc29saWRDb2xvcigp
IHsgcmV0dXJuIENvbG9yKCk7IH0KICAgICAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZjY4MjA4N2EzNmY1
ZGEyOTZiMGQ4ZjRhY2EwM2NiOGY2MjcxODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKQEAgLTAsMCArMSw4NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgorCisjaW5jbHVkZSAiSW1h
Z2VEZWNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0ltYWdlRnJhbWVEYXRh
OjpJbWFnZUZyYW1lRGF0YSgpCit7Cit9CisKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0
YShJbWFnZURlY29kZXImIGRlY29kZXIsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCisgICAgOiBtX2lt
YWdlKGltYWdlKQorICAgICwgbV9zdWJzYW1wbGluZ0xldmVsKHN1YnNhbXBsaW5nTGV2ZWwpCisg
ICAgLCBtX2hhdmVNZXRhZGF0YSh0cnVlKQoreworI2lmIFVTRShDRykKKyAgICBtX29yaWVudGF0
aW9uID0gZGVjb2Rlci5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOworICAgIG1faGFzQWxwaGEg
PSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICBtX2ZyYW1lQnl0ZXMg
PSBkZWNvZGVyLmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAg
ICAKKyAgICBtX2FsbG93U3Vic2FtcGxpbmcgPSBkZWNvZGVyLmFsbG93U3Vic2FtcGxpbmdPZkZy
YW1lQXRJbmRleChpbmRleCk7CisgICAgCisgICAgbV9pc0NvbXBsZXRlID0gZGVjb2Rlci5mcmFt
ZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKKyAgICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291
bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkKKyAgICAgICAgbV9kdXJhdGlvbiA9IGRlY29kZXIuZnJh
bWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOworI2Vsc2UKKyAgICBtX29yaWVudGF0aW9uID0gZGVj
b2Rlci5vcmllbnRhdGlvbigpOworICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxw
aGFBdEluZGV4KGluZGV4KTsKKyAgICBtX2ZyYW1lQnl0ZXMgPSBkZWNvZGVyLmZyYW1lQnl0ZXNB
dEluZGV4KGluZGV4KTsKKyAgICAKKyAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBkZWNvZGVyLmZy
YW1lQnVmZmVyQXRJbmRleChpbmRleCk7CisgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1
cygpICE9IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKKyAgICAgICAgbV9pc0NvbXBsZXRlID0g
YnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAgICAgICBp
ZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkgeworICAgICAg
ICAgICAgLy8gTWFueSBhbm5veWluZyBhZHMgc3BlY2lmeSBhIDAgZHVyYXRpb24gdG8gbWFrZSBh
biBpbWFnZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLgorICAgICAgICAgICAgLy8gV2Ug
Zm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZv
ciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgICAgICAgICAgLy8gYSBkdXJhdGlvbiBvZiA8
PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMzYwODI+CisgICAgICAgICAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAg
ICAgICAgIG1fZHVyYXRpb24gPSBzdGQ6Om1heChidWZmZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBm
LCAwLjEwMGYpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKK0ltYWdlRnJhbWVEYXRh
Ojp+SW1hZ2VGcmFtZURhdGEoKQoreworICAgIGNsZWFyKEltYWdlRnJhbWVDYWNoaW5nOjpDYWNo
ZU5vbmUpOworfQorCitJbWFnZUZyYW1lU3RhdHVzIEltYWdlRnJhbWVEYXRhOjpzdGF0dXMoKSBj
b25zdAoreworICAgIGlmICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWVTdGF0
dXM6OkRlY29kZU5vbmU7CisgICAgCisgICAgcmV0dXJuIG1faXNDb21wbGV0ZSA/IEltYWdlRnJh
bWVTdGF0dXM6OkRlY29kZUNvbXBsZXRlIDogSW1hZ2VGcmFtZVN0YXR1czo6RGVjb2RlUGFydGlh
bDsKK30KKyAgICAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRnJhbWVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0YWZmODY0MjI4ODc5ZmZkNWZkZDM1MDczYWQ1
ODk3YjU2MDYzM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbWFnZUZyYW1lRGF0YV9o
CisjZGVmaW5lIEltYWdlRnJhbWVEYXRhX2gKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVk
ZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJO
YXRpdmVJbWFnZVB0ci5oIgorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisvLyBTdWJzYW1wbGlu
Z0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNo
IGF4aXMgZXRjLgordHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwordHlwZWRlZiBzaXpl
X3QgSW1hZ2VGcmFtZUluZGV4OworCitzdGF0aWMgY29uc3QgSW1hZ2VGcmFtZUluZGV4IE1heElt
YWdlRnJhbWVJbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8SW1hZ2VGcmFtZUluZGV4Pjo6bWF4
KCk7CisKK2VudW0gY2xhc3MgSW1hZ2VGcmFtZUNhY2hpbmcgeworICAgIENhY2hlTm9uZSwKKyAg
ICBDYWNoZU1ldGFkYXRhLAorICAgIENhY2hlRnJhbWUsCisgICAgQ2FjaGVNZXRhZGF0YUFuZEZy
YW1lCit9OworCitlbnVtIGNsYXNzIEltYWdlRnJhbWVTdGF0dXMgeworICAgIERlY29kZU5vbmUs
CisgICAgRGVjb2RlUGFydGlhbCwKKyAgICBEZWNvZGVDb21wbGV0ZQorfTsKKworY2xhc3MgSW1h
Z2VEZWNvZGVyOworCitzdHJ1Y3QgSW1hZ2VGcmFtZURhdGEgeworcHVibGljOgorICAgIEltYWdl
RnJhbWVEYXRhKCk7CisgICAgSW1hZ2VGcmFtZURhdGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsK
KyAgICBJbWFnZUZyYW1lRGF0YShJbWFnZURlY29kZXImLCBJbWFnZUZyYW1lSW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiA9IG51bGxwdHIpOworICAgIH5JbWFn
ZUZyYW1lRGF0YSgpOworICAgIAorICAgIEltYWdlRnJhbWVTdGF0dXMgc3RhdHVzKCkgY29uc3Q7
CisgICAgCisgICAgYm9vbCBjbGVhcihJbWFnZUZyYW1lQ2FjaGluZyk7CisgICAgT3B0aW9uYWw8
Q29sb3I+IHNvbGlkQ29sb3IoKSBjb25zdDsKKyAgICAKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2lt
YWdlIHsgbnVsbHB0ciB9OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERl
ZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07CisgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBs
aW5nTGV2ZWwgeyAwIH07CisgICAgZmxvYXQgbV9kdXJhdGlvbiB7IDAgfTsKKworICAgIHVuaW9u
IHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAx
OworICAgICAgICAgICAgYm9vbCBtX2lzQ29tcGxldGUgOiAxOworICAgICAgICAgICAgYm9vbCBt
X2hhc0FscGhhIDogMTsKKyAgICAgICAgICAgIGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIDogMTsK
KyAgICAgICAgfTsKKyAgICAgICAgdWludDhfdCBtX2ZsYWdzW3NpemVvZihib29sKV0geyAwIH07
CisgICAgfTsKKyAgICB1bnNpZ25lZCBtX2ZyYW1lQnl0ZXMgeyAwIH07CisgICAgSW50U2l6ZSBt
X3NpemU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSW1h
Z2VGcmFtZURhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCmluZGV4IDc0ZWYwNTNhMzMzZmY1ZmM1NzhlODE4MDBjYzZmYzk3NTVlZmJh
YjguLjJjNmE0NzlhZTFkNDlkMjA0NDI0YzMyMzAwMGIzNmY0YTJjMWIwZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tl
ckBjb2xsYWJvcmEuY28udWs+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2Jp
bGUsIEluYwpAQCAtMjksOCArMjksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkltYWdlU291cmNlLmgiCiAKLSNpZiAhVVNFKENHKQotCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVy
LmgiCiAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCkBAIC0zOCwxNSArMzYsMTcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKLXVuc2lnbmVkIEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJbWFn
ZSA9IDEwMjQgKiAxMDI0OwotI2VuZGlmCi0KIEltYWdlU291cmNlOjpJbWFnZVNvdXJjZShJbWFn
ZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IG1fZGVj
b2RlcigwKQotICAgICwgbV9hbHBoYU9wdGlvbihhbHBoYU9wdGlvbikKKyNpZiAhVVNFKENHKQor
ICAgIDogbV9hbHBoYU9wdGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24oZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisjZW5kaWYKIHsKKyNpZiBV
U0UoQ0cpCisgICAgVU5VU0VEX1BBUkFNKGFscGhhT3B0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0o
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworI2VuZGlmCisKIH0KIAogSW1hZ2VTb3VyY2U6
On5JbWFnZVNvdXJjZSgpCkBAIC01NCwxMjggKzU0LDIwMiBAQCBJbWFnZVNvdXJjZTo6fkltYWdl
U291cmNlKCkKICAgICBjbGVhcih0cnVlKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIo
Ym9vbCBkZXN0cm95QWxsLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wg
ZGVzdHJveUFsbEZyYW1lcywgSW1hZ2VGcmFtZUluZGV4IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgaWYgKCFkZXN0cm95
QWxsKSB7CisgICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKSB7CisjaWYgVVNFKENHKQorICAgICAg
ICAvLyBSZWNlbnQgdmVyc2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2Rl
ZCBpbWFnZSBmcmFtZXMgaWYgdGhlIGNsaWVudAorICAgICAgICAvLyBhcHBsaWNhdGlvbiBubyBs
b25nZXIgaG9sZHMgcmVmZXJlbmNlcyB0byB0aGVtLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdGhy
b3cgYXdheQorICAgICAgICAvLyB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBh
c2tlZCB0byBkZXN0cm95IGFsbCBvZiB0aGUgZnJhbWVzLgorICAgICAgICBVTlVTRURfUEFSQU0o
Y2xlYXJCZWZvcmVGcmFtZSk7CisjZWxzZQogICAgICAgICBpZiAobV9kZWNvZGVyKQogICAgICAg
ICAgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7
CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGRlbGV0ZSBtX2RlY29kZXI7
Ci0gICAgbV9kZWNvZGVyID0gMDsKKyAgICBtX2RlY29kZXIgPSBudWxscHRyOwogICAgIGlmIChk
YXRhKQogICAgICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9Ci0KLWJvb2wg
SW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKCkgY29uc3QKKyAgICAKK3ZvaWQgSW1hZ2VTb3VyY2U6
OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotICAgIHJldHVy
biBtX2RlY29kZXI7CisgICAgaWYgKG1fZGVjb2RlcikKKyAgICAgICAgcmV0dXJuOworI2lmIFVT
RShDRykKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgbV9kZWNvZGVyID0gbmV3IEltYWdl
RGVjb2RlcigpOworI2Vsc2UKKyAgICBtX2RlY29kZXIgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbWFn
ZURlY29kZXJQdHI+KE5hdGl2ZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBtX2FscGhhT3B0
aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisjaWYgRU5BQkxFKElNQUdFX0RF
Q09ERVJfRE9XTl9TQU1QTElORykKKyAgICBpZiAobV9kZWNvZGVyKQorICAgICAgICBtX2RlY29k
ZXItPnNldE1heE51bVBpeGVscyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7CisjZW5kaWYK
KyNlbmRpZgorICAgIAogfQogCiB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgLy8gTWFrZSB0aGUgZGVjb2Rl
ciBieSBzbmlmZmluZyB0aGUgYnl0ZXMuCi0gICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBleGFtaW5l
IHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUg
ZGVjb2RlciBwbHVnaW4uCi0gICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBhdmFpbGFi
bGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3aWxsIGJl
Ci0gICAgLy8gbWFkZS4KKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKGRhdGEpOwogICAgIGlmICghbV9kZWNvZGVyKSB7Ci0g
ICAgICAgIG1fZGVjb2RlciA9IHN0YXRpY19jYXN0PE5hdGl2ZUltYWdlRGVjb2RlclB0cj4oTmF0
aXZlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pKTsKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBM
SU5HKQotICAgICAgICBpZiAobV9kZWNvZGVyICYmIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdl
KQotICAgICAgICAgICAgbV9kZWNvZGVyLT5zZXRNYXhOdW1QaXhlbHMoc19tYXhQaXhlbHNQZXJE
ZWNvZGVkSW1hZ2UpOwotI2VuZGlmCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm47CiAgICAgfQotCi0gICAgaWYgKG1fZGVjb2RlcikKLSAgICAgICAgbV9kZWNv
ZGVyLT5zZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci19Ci0KLVN0cmluZyBJbWFnZVNv
dXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2RlY29kZXIg
PyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKKyAgICAKKyAgICBt
X2RlY29kZXItPnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotU3Vic2FtcGxp
bmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25z
dAorYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gMDsKLX0KKyAgICBpZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAoIW1fc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwog
Ci1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90
KSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fZGVjb2Rlci0+aXNTaXpl
QXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtX3NpemUgPSBm
cmFtZVNpemVBdEluZGV4KDAsIDApOworICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9
IGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUoKQorSW50
U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2RlciAm
JiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOworICAgIHJldHVybiBpc1NpemVBdmFpbGFi
bGUoKSA/IG1fc2l6ZSA6IEludFNpemUoKTsKIH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6
ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pIGNvbnN0CitJbnRTaXpl
IEltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBkZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIGlz
U2l6ZUF2YWlsYWJsZSgpID8gbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uIDogSW50U2l6ZSgp
OwogfQotCi1JbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0
aW9uKSBjb25zdAorICAgIAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxp
bmdMZXZlbEZvclNjYWxlKGZsb2F0IHNjYWxlLCBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJz
YW1wbGluZ0xldmVsKSBjb25zdAogewotICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1
cm4gSW50U2l6ZSgpOwotCi0gICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVB
dEluZGV4KGluZGV4KTsKLSAgICBpZiAoKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pICYmIG1fZGVjb2Rlci0+b3JpZW50YXRp
b24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQotICAgICAgICByZXR1cm4gSW50U2l6ZShzaXplLmhl
aWdodCgpLCBzaXplLndpZHRoKCkpOwotCi0gICAgcmV0dXJuIHNpemU7Ci19Ci0KLWJvb2wgSW1h
Z2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+aG90U3BvdChob3RTcG90KSA6IGZhbHNlOworI2lm
IFVTRShDRykKKyAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2Nh
bGUoc2NhbGUsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHNjYWxlKTsKKyAgICBVTlVTRURfUEFSQU0obWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwor
ICAgIHJldHVybiAwOworI2VuZGlmCiB9Ci0KKyAgICAKIHNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0
ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKIHsKKyNpZiBVU0UoQ0cpCisg
ICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVz
KCk7CisjZWxzZQogICAgIHJldHVybiAwOworI2VuZGlmCiB9Ci0KKyAgICAKIGludCBJbWFnZVNv
dXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNv
ZGVyLT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Ob25lOworICAgIGlmICghaW5pdGlh
bGl6ZWQoKSkKKyNpZiBVU0UoQ0cpCisgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7
CisjZWxzZQorICAgICAgICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7CisjZW5kaWYKKyAgICByZXR1
cm4gbV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQoKTsKIH0KLQorICAgIAogc2l6ZV90IEltYWdl
U291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9k
ZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9k
ZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOworfQorICAgIAorU3RyaW5nIEltYWdlU291cmNlOjpm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVj
b2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwogfQogCi1QYXNzTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwpCitib29sIEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RT
cG90KSBjb25zdAoreworICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworI2lmIFVTRShDRykKKyAgICBib29sIHJlc3VsdCA9IG1fZGVjb2Rlci0+Z2V0SG90U3Bv
dChob3RTcG90KTsKKyNlbHNlCisgICAgYm9vbCByZXN1bHQgPSBtX2RlY29kZXItPmhvdFNwb3Qo
aG90U3BvdCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorUGFzc05hdGl2
ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFnZUZyYW1l
SW5kZXggaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBp
ZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OworI2lmIFVTRShDRykKKyAgICAgICAgcmV0dXJuIG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oc3Vic2FtcGxpbmdMZXZlbCk7CiAKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29k
ZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVy
LT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2Fu
IGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiAgSWYgd2UgaGF2ZSBhbgorICAgIC8vIFpl
cm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuIElmIHdl
IGhhdmUgYW4KICAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KICAgICBp
ZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIAogICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFz
IGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCiAgICAgLy8gaXMgYWxy
ZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMg
cmVmY291bnQuCiAgICAgcmV0dXJuIGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOworI2VuZGlm
CiB9CiAKLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5k
ZXgpCitib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KEltYWdlRnJhbWVJ
bmRleCBpbmRleCkKIHsKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgVVNFKENH
KQorICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChpbmRleCk7CisjZWxzZQorICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rl
ci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gYnVmZmVyICYmIGJ1ZmZl
ci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyNlbmRpZgorfQorCiti
b29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChJbWFnZUZyYW1lSW5kZXggaW5k
ZXgpCit7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Cit9
CisgICAgCitib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgo
SW1hZ2VGcmFtZUluZGV4IGluZGV4KSBjb25zdAoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4g
aW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRl
eChpbmRleCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCit9CiAKK2Zsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eChJbWFnZUZyYW1lSW5kZXggaW5kZXgpCit7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAg
ICAgICByZXR1cm4gMDsKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZnJhbWVE
dXJhdGlvbkF0SW5kZXgoaW5kZXgpOworI2Vsc2UKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBt
X2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFidWZmZXIgfHwg
YnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQogICAgICAgICByZXR1
cm4gMDsKLQorICAgIAogICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0
aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KICAgICAv
LyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAg
bXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5CiAgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAx
MCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMzYwODI+CkBAIC0xODQsMzYgKzI1OCw0NyBAQCBmbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVE
dXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikK
ICAgICAgICAgcmV0dXJuIDAuMTAwZjsKICAgICByZXR1cm4gZHVyYXRpb247CisjZW5kaWYKIH0K
LQotSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVf
dCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5vcmllbnRhdGlv
bigpIDogRGVmYXVsdEltYWdlT3JpZW50YXRpb247Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZy
YW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKKyAgICAKK0ltYWdlT3JpZW50YXRpb24g
SW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChJbWFnZUZyYW1lSW5kZXggaW5kZXgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBtX2RlY29kZXItPmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICBpZiAoaW5p
dGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOworI2lm
IFVTRShDRykKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaW5kZXgpOworICAgIHJldHVybiBtX2RlY29kZXIt
Pm9yaWVudGF0aW9uKCk7CisjZW5kaWYKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVC
eXRlc0F0SW5kZXgoSW1hZ2VGcmFtZUluZGV4IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZm
ZXJBdEluZGV4KGluZGV4KTsKLSAgICByZXR1cm4gYnVmZmVyICYmIGJ1ZmZlci0+c3RhdHVzKCkg
PT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKCkpCisg
ICAgICAgIHJldHVybiAwOworI2lmIFVTRShDRykKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5mcmFt
ZUJ5dGVzQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShzdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5mcmFtZUJ5
dGVzQXRJbmRleChpbmRleCk7CisjZW5kaWYKIH0KIAotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK0lu
dFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QKIHsKLSAgICBpZiAo
IW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZnJh
bWVCeXRlc0F0SW5kZXgoaW5kZXgpOworICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKKyAgICAgICAg
cmV0dXJuIEludFNpemUoKTsKKyNpZiBVU0UoQ0cpCisgICAgSW50U2l6ZSBzaXplID0gbV9kZWNv
ZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgo
aW5kZXgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3Vic2FtcGxpbmdMZXZlbCk7CisgICAg
SW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4KTsKKyAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRhdGlvbigpOwor
I2VuZGlmCisgICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBz
aXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOwogfQogCiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0cp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRl
eCBhY2RkMWNlNGNlMzAwZGU4MWM5ZTA2MmVlZTc2MDdiZjQ3MmE3MGFmLi5iNjdjMjA4N2ZmNjE5
MzNiYTk0NWU4YjllMzgxMWNhYTRmZDZkZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmls
ZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMTIgKzI3LDE0IEBACiAjaWZuZGVmIElt
YWdlU291cmNlX2gKICNkZWZpbmUgSW1hZ2VTb3VyY2VfaAogCisjaW5jbHVkZSAiSW1hZ2VGcmFt
ZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTmF0aXZl
SW1hZ2VQdHIuaCIKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiAjaWYgVVNFKENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJj
ZSogQ0dJbWFnZVNvdXJjZVJlZjsKQEAgLTQ2LDE4ICs0OCw5IEBAIGNsYXNzIEludFBvaW50Owog
Y2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAotI2lmIFVTRShDRykKLXR5cGVk
ZWYgQ0dJbWFnZVNvdXJjZVJlZiBOYXRpdmVJbWFnZURlY29kZXJQdHI7Ci0jZWxzZQogY2xhc3Mg
SW1hZ2VEZWNvZGVyOwogdHlwZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2ZUltYWdlRGVjb2RlclB0
cjsKLSNlbmRpZgotCi0jaWYgVVNFKENHKQotI2RlZmluZSBOYXRpdmVJbWFnZURlY29kZXIgSW1h
Z2VEZWNvZGVyCi0jZWxzZQogdHlwZWRlZiBJbWFnZURlY29kZXIgTmF0aXZlSW1hZ2VEZWNvZGVy
OwotI2VuZGlmCiAKIC8vIFJpZ2h0IG5vdyBHSUZzIGFyZSB0aGUgb25seSByZWNvZ25pemVkIGlt
YWdlIGZvcm1hdCB0aGF0IHN1cHBvcnRzIGFuaW1hdGlvbi4KIC8vIFRoZSBhbmltYXRpb24gc3lz
dGVtIGFuZCB0aGUgY29uc3RhbnRzIGJlbG93IGFyZSBkZXNpZ25lZCB3aXRoIHRoaXMgaW4gbWlu
ZC4KQEAgLTc3LDkgKzcwLDYgQEAgY29uc3QgaW50IGNBbmltYXRpb25Mb29wT25jZSA9IDA7CiBj
b25zdCBpbnQgY0FuaW1hdGlvbkxvb3BJbmZpbml0ZSA9IC0xOwogY29uc3QgaW50IGNBbmltYXRp
b25Ob25lID0gLTI7CiAKLS8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAgaXMgbm8gc3Vic2FtcGxpbmcs
IDEgaXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMuCi10eXBlZGVmIHNob3J0IFN1
YnNhbXBsaW5nTGV2ZWw7Ci0KIGNsYXNzIEltYWdlU291cmNlIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbWFnZVNvdXJjZSk7CiBwdWJsaWM6CkBAIC0xMTAsNjcgKzEwMCw1NSBAQCBwdWJs
aWM6CiAgICAgLy8gZGVjb2RlZCBmcmFtZXMuCiAgICAgLy8KICAgICAvLyBDYWxsZXJzIHNob3Vs
ZCBub3QgY2FsbCBjbGVhcihmYWxzZSwgbikgYW5kIHN1YnNlcXVlbnRseSBjYWxsCi0gICAgLy8g
Y3JlYXRlRnJhbWVBdEluZGV4KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNhbGwg
Y2xlYXIodHJ1ZSkuCisgICAgLy8gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobSkgd2l0aCBtIDwg
biwgdW5sZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0cnVlKS4KICAgICAvLyBUaGlzIGVuc3Vy
ZXMgdGhhdCBzdGF0ZWZ1bCBJbWFnZVNvdXJjZXMvZGVjb2RlcnMgd2lsbCB3b3JrIHByb3Blcmx5
LgogICAgIC8vCiAgICAgLy8gVGhlIHxkYXRhfCBhbmQgfGFsbERhdGFSZWNlaXZlZHwgcGFyYW1l
dGVycyBzaG91bGQgYmUgc3VwcGxpZWQgYnkgY2FsbGVycwogICAgIC8vIHdobyBzZXQgfGRlc3Ry
b3lBbGx8IHRvIHRydWUgaWYgdGhleSB3aXNoIHRvIGJlIGFibGUgdG8gY29udGludWUgdXNpbmcK
ICAgICAvLyB0aGUgSW1hZ2VTb3VyY2UuICBUaGlzIHdheSBpbXBsZW1lbnRhdGlvbnMgd2hpY2gg
Y2hvb3NlIHRvIGRlc3Ryb3kgdGhlaXIKICAgICAvLyBkZWNvZGVycyBpbiBzb21lIGNhc2VzIGNh
biByZWNvbnN0cnVjdCB0aGVtIGNvcnJlY3RseS4KLSAgICB2b2lkIGNsZWFyKGJvb2wgZGVzdHJv
eUFsbCwKLSAgICAgICAgICAgICAgIHNpemVfdCBjbGVhckJlZm9yZUZyYW1lID0gMCwKLSAgICAg
ICAgICAgICAgIFNoYXJlZEJ1ZmZlciogZGF0YSA9IE5VTEwsCi0gICAgICAgICAgICAgICBib29s
IGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKKyAgICB2b2lkIGNsZWFyKGJvb2wgZGVzdHJveUFs
bCwgSW1hZ2VGcmFtZUluZGV4IGNsZWFyQmVmb3JlRnJhbWUgPSAwLCBTaGFyZWRCdWZmZXIqIGRh
dGEgPSBudWxscHRyLCBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKIAotICAgIGJvb2wg
aW5pdGlhbGl6ZWQoKSBjb25zdDsKKyAgICBib29sIGluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1
cm4gbV9kZWNvZGVyOyB9CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29u
c3Q7Ci0KLSAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9h
dCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90
KSBjb25zdDsKIAotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CisgICAgYm9vbCBpc1NpemVB
dmFpbGFibGUoKSBjb25zdDsKICAgICAvLyBBbHdheXMgb3JpZ2luYWwgc2l6ZSwgd2l0aG91dCBz
dWJzYW1wbGluZy4KLSAgICBJbnRTaXplIHNpemUoSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
ID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpIGNvbnN0OwotICAgIC8vIFNpemUgb2Yg
b3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkgY29uc3Q7Ci0KLSAgICBib29sIGdl
dEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAg
ICBJbnRTaXplIHNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdDsKIAorICAgIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0LCBTdWJzYW1wbGluZ0xl
dmVsKSBjb25zdDsKICAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVz
KCkgY29uc3Q7CiAKLSAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCk7Ci0KICAgICBzaXplX3QgZnJh
bWVDb3VudCgpIGNvbnN0OworICAgIGludCByZXBldGl0aW9uQ291bnQoKTsKKyAgICBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICBib29sIGdldEhvdFNwb3QoSW50UG9pbnQm
KSBjb25zdDsKIAotICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2Fs
bGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7Ci0gICAgLy8gc2VlIGNvbW1lbnRzIG9u
IGNsZWFyKCkgYWJvdmUuCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKLQotICAgIGZsb2F0IGZyYW1lRHVyYXRp
b25BdEluZGV4KHNpemVfdCk7Ci0gICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3Qp
OyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCi0g
ICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90
IHRoZSBmcmFtZSBpcyBjb21wbGV0ZWx5IGRlY29kZWQuCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJRiBpbWFnZSBvcmllbnRhdGlv
bgorICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFnZUZy
YW1lSW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKIAotICAgIC8vIFJldHVybiB0aGUgbnVt
YmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUgaXMgbm90IHll
dAotICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1bnNpZ25lZCBmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKyAgICBib29sIGZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4KTsgLy8gV2hldGhlciBvciBub3Qg
dGhlIGZyYW1lIGlzIGNvbXBsZXRlbHkgZGVjb2RlZC4KKyAgICBib29sIGZyYW1lSGFzQWxwaGFB
dEluZGV4KEltYWdlRnJhbWVJbmRleCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1
YWxseSB1c2VkIGFueSBhbHBoYS4KKyAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJ
bmRleChJbWFnZUZyYW1lSW5kZXgpIGNvbnN0OworICAgIAorICAgIGZsb2F0IGZyYW1lRHVyYXRp
b25BdEluZGV4KEltYWdlRnJhbWVJbmRleCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbkF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4KSBjb25zdDsgLy8gRVhJRiBpbWFnZSBvcmllbnRh
dGlvbgogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBzdGF0
aWMgdW5zaWduZWQgbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKCkgeyByZXR1cm4gc19tYXhQaXhl
bHNQZXJEZWNvZGVkSW1hZ2U7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRNYXhQaXhlbHNQZXJEZWNv
ZGVkSW1hZ2UodW5zaWduZWQgbWF4UGl4ZWxzKSB7IHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdl
ID0gbWF4UGl4ZWxzOyB9Ci0jZW5kaWYKKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChJ
bWFnZUZyYW1lSW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKyAgICBJbnRTaXpl
IGZyYW1lU2l6ZUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4LCBTdWJzYW1wbGluZ0xldmVsID0gMCwg
UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgTmF0aXZlSW1hZ2VEZWNvZGVyUHRyIG1fZGVjb2Rl
cjsKLQorICAgIHZvaWQgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqKTsKKyAg
ICAKKyAgICBOYXRpdmVJbWFnZURlY29kZXJQdHIgbV9kZWNvZGVyIHsgbnVsbHB0ciB9OworICAg
IG11dGFibGUgSW50U2l6ZSBtX3NpemU7CisgICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZVJlc3Bl
Y3RpbmdPcmllbnRhdGlvbjsKKyAgICAKICNpZiAhVVNFKENHKQotICAgIEFscGhhT3B0aW9uIG1f
YWxwaGFPcHRpb247Ci0gICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gbV9nYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbjsKLSNlbmRpZgotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05f
U0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdl
OworICAgIEFscGhhT3B0aW9uIG1fYWxwaGFPcHRpb24geyBBbHBoYVByZW11bHRpcGxpZWQgfTsK
KyAgICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIHsgR2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkIH07CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlID0gMTAyNCAqIDEwMjQ7CiAjZW5kaWYK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVB0ci5oCmluZGV4IGRmOTQxYTU2NmE5ZTQ2OTI3NzI3YmExZWM2ODQ4ZjIxNjgwM2E0NWIuLmVj
YTFiOTJjNDFlZTE4MjhlMzEwZDViZWRiYjJiNWFjYTU5NWY1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApAQCAtMjksNiArMjks
NyBAQAogI2RlZmluZSBOYXRpdmVJbWFnZVB0cl9oCiAKICNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKICNl
bGlmIFVTRShDQUlSTykKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgpAQCAtNDEsNyArNDIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBGSVhNRTogTmF0aXZlSW1hZ2VQdHIgYW5kIFBhc3NO
YXRpdmVJbWFnZVB0ciBzaG91bGQgYmUgc21hcnQKIC8vIHBvaW50ZXJzIChzZWUgU1ZHSW1hZ2U6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpLgogI2lmIFVTRShDRykKLXR5cGVkZWYgQ0dJ
bWFnZVJlZiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5h
dGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKENBSVJPKQogdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKIHR5cGVkZWYgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IFBhc3NOYXRpdmVJbWFnZVB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDYzZGNmMGEyNTNlMjM0
MGY2N2YxYzgxZDg1ZmMyNzBkZDIzMGU4NmQuLmE0YzY1YmRmZjMyYTkyZjljMWRmMjZkNGJmNTMw
ODBmMDVhYjk2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdl
KQogewogICAgIGlmIChpbWFnZSkgewotICAgICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIENHSW1hZ2VSZWYgbmV3
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS5nZXQoKTsKICAgICAg
ICAgaWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcAppbmRleCBjZDU3ZWU0ODVlYTgwYzZjZjM0N2FiM2JkOTczN2Q1OTk5ZTEwMjgyLi4xMDIy
MzVkOWFmMDA1NGQ2Mzg5MWZjNGM3Y2U1Y2Q3NDVjNjAwMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcApAQCAtNDAsMTYgKzQwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRpdmVJbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKLSAgICAsIG1f
c2l6ZShjYWlyb1N1cmZhY2VTaXplKG5hdGl2ZUltYWdlLmdldCgpKSkKLSAgICAsIG1fbWluaW11
bVN1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX3Jl
cGV0aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3Rh
dHVzKFVua25vd24pCiAgICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKLSAgICAsIG1fZGVj
b2RlZFNpemUobV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCkgKiA0KQogICAgICwgbV9m
cmFtZUNvdW50KDEpCi0gICAgLCBtX2lzU29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fY2hlY2tl
ZEZvclNvbGlkQ29sb3IoZmFsc2UpCiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKHRydWUpCiAg
ICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQpAQCAt
NTcsMTEgKzUyLDkgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlcioKICAgICAsIG1faGF2ZUZyYW1l
Q291bnQodHJ1ZSkKIHsKICAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1f
aGFzQWxwaGEgPSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG5hdGl2ZUltYWdlLmdldCgpKSAh
PSBDQUlST19DT05URU5UX0NPTE9SOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBuYXRpdmVJ
bWFnZTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0KLSAgICBjaGVj
a0ZvclNvbGlkQ29sb3IoKTsKKyAgICBtX2ZyYW1lc1swXSA9IEltYWdlRnJhbWVEYXRhKG5hdGl2
ZUltYWdlKTsKKyAgICBtX3NpemUgPSBtX2ZyYW1lc1swXS5tX3NpemU7CisgICAgbV9kZWNvZGVk
U2l6ZSA9IG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpICogNDsKIH0KIAogdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCkBAIC03
Miw3ICs2NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAKICAgICBzdGFydEFuaW1hdGlv
bigpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9
IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBpZiAoIXN1cmZhY2UpIC8v
IElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICBy
ZXR1cm47CiAKQEAgLTEyNCw0NyArMTE3LDUxIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAK
IHZvaWQgQml0bWFwSW1hZ2U6OmRldGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29u
c3QKIHsKLSAgICBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsID0gMDsKKyAgICBtX21heGltdW1T
dWJzYW1wbGluZ0xldmVsID0gMDsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xp
ZENvbG9yKCkKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICwgbV9oYXZlTWV0YWRhdGEo
dHJ1ZSkKKyAgICAsIG1faXNDb21wbGV0ZSh0cnVlKQogewotICAgIG1faXNTb2xpZENvbG9yID0g
ZmFsc2U7Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7Ci0KLSAgICBpZiAoZnJh
bWVDb3VudCgpID4gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFz
dXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4K
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFj
ZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBJbnRTaXplIHNpemUgPSBjYWlyb1N1cmZhY2VTaXplKHN1cmZhY2UuZ2V0KCkpOwotCi0g
ICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSByZWludGVycHJldF9jYXN0X3B0
cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZS5nZXQoKSkp
OwotICAgIG1fc29saWRDb2xvciA9IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbENv
bG9yKTsKLQotICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKKyAgICBBU1NFUlQobV9pbWFnZSk7
CisgICAgbV9zaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKKyAgICBtX2Zy
YW1lQnl0ZXMgPSBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSAqIDQ7CisgICAgbV9o
YXNBbHBoYSA9IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobV9pbWFnZS5nZXQoKSkgIT0gQ0FJ
Uk9fQ09OVEVOVF9DT0xPUjsKIH0KIAotYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJN
ZXRhZGF0YSkKKworYm9vbCBJbWFnZUZyYW1lRGF0YTo6Y2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmcg
ZnJhbWVDYWNoaW5nKQogewotICAgIGlmIChjbGVhck1ldGFkYXRhKQorICAgIGlmIChmcmFtZUNh
Y2hpbmcgPT0gSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSkKICAgICAgICAgbV9oYXZlTWV0
YWRhdGEgPSBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWUgPSBu
dWxscHRyOworICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAgIG1faW1hZ2UgPSBudWxscHRyOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitPcHRp
b25hbDxDb2xvcj4gSW1hZ2VGcmFtZURhdGE6OnNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlm
ICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgCisgICAgaWYgKGNhaXJv
X3N1cmZhY2VfZ2V0X3R5cGUobV9pbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lN
QUdFKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKworICAgIEludFNpemUgc2l6ZSA9IGNhaXJv
U3VyZmFjZVNpemUobV9pbWFnZS5nZXQoKSk7CisKKyAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEg
fHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKworICAgIHVu
c2lnbmVkKiBwaXhlbENvbG9yID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1faW1hZ2UuZ2V0KCkpKTsKKyAgICByZXR1cm4gY29s
b3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29sb3IpOworfQorCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
M0RDYWlyby5jcHAKaW5kZXggY2M3MDQ2MTQ3YWU4MWYxZmFkYWE2ZDg0MTYyNDk4MGM2ZmRmY2Jm
MS4uOGM0MTg2ZDcxZTUzYTE5MDdlOTJkNzNhMmIwMTY0N2ZmZDY2YjFjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbAogICAgICAgICBkZWNvZGVyLnNldERhdGEobV9pbWFnZS0+ZGF0YSgpLCB0cnVl
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFtZUlz
Q29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBt
X2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBt
X2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxW
aWRlb0VsbWVudCBpbnB1dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4gYXBw
bGllZCBhbmQgdGhlIGFscGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
CmluZGV4IDAxYjdkNjkyY2RiZDdhYjRkMjJiYmMxMzk5YzEwMzI4ZjU3ZTVlNDcuLjVhYzMzNmQy
YWZjMjZmYjEyNDMxOWZkZjY0NjVmNTJjNWNkODE0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC00OSwzMSAr
NDksNjMgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitJbWFnZUZyYW1l
RGF0YTo6SW1hZ2VGcmFtZURhdGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorICAgIDog
bV9pbWFnZShpbWFnZSkKKyAgICAsIG1faGF2ZU1ldGFkYXRhKHRydWUpCisgICAgLCBtX2lzQ29t
cGxldGUodHJ1ZSkKKyAgICAsIG1faGFzQWxwaGEodHJ1ZSkKK3sKKyAgICBBU1NFUlQobV9pbWFn
ZSk7CisgICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2ltYWdlLmdldCgpKTsK
KyAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9pbWFnZS5nZXQoKSk7Cisg
ICAgbV9mcmFtZUJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OworICAgIG1fc2l6ZSA9IEludFNp
emUod2lkdGgsIGhlaWdodCk7Cit9CiAKLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFy
TWV0YWRhdGEpCitib29sIEltYWdlRnJhbWVEYXRhOjpjbGVhcihJbWFnZUZyYW1lQ2FjaGluZyBm
cmFtZUNhY2hpbmcpCiB7Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCisgICAgaWYgKGZyYW1lQ2Fj
aGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVOb25lKQogICAgICAgICBtX2hhdmVNZXRh
ZGF0YSA9IGZhbHNlOwogCiAgICAgbV9vcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0
aW9uOwogICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IDA7CiAKLSAgICBpZiAobV9mcmFtZSkgewor
ICAgIGlmIChtX2ltYWdlKSB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKG1fZnJhbWUpOworICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xl
YXJJbWFnZShtX2ltYWdlLmdldCgpKTsKICNlbmRpZgotICAgICAgICBDR0ltYWdlUmVsZWFzZSht
X2ZyYW1lKTsKLSAgICAgICAgbV9mcmFtZSA9IDA7CisgICAgICAgIG1faW1hZ2UgPSBudWxscHRy
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorICAg
IAorT3B0aW9uYWw8Q29sb3I+IEltYWdlRnJhbWVEYXRhOjpzb2xpZENvbG9yKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIAorICAgIC8v
IEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZvciBzb2xpZCBjb2xvciBpbiB0aGUgaW1wb3J0YW50
IHNwZWNpYWwgY2FzZSBvZiBhIDF4MSBpbWFnZS4KKyAgICBpZiAoQ0dJbWFnZUdldFdpZHRoKG1f
aW1hZ2UuZ2V0KCkpICE9IDEgfHwgQ0dJbWFnZUdldEhlaWdodChtX2ltYWdlLmdldCgpKSAhPSAx
KQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVs
WzRdOyAvLyBSR0JBCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4
ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Qg
fCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworICAgIGlmICghYml0bWFwQ29udGV4dCkKKyAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgCisgICAgR3JhcGhpY3NDb250ZXh0KGJpdG1hcENv
bnRleHQuZ2V0KCkpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKKyAgICBD
R1JlY3QgZGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKTsKKyAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LCBtX2lt
YWdlLmdldCgpKTsKKyAgICBpZiAoIXBpeGVsWzNdKQorICAgICAgICByZXR1cm4gQ29sb3IoMCwg
MCwgMCwgMCk7CisgICAgCisgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxb
M10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10s
IHBpeGVsWzNdKTsKK30KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJ
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2Uo
TmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1h
Z2Uob2JzZXJ2ZXIpCi0gICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsKDApCi0gICAgLCBt
X2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkKLSAgICAsIG1fc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRGcmFtZSgwKQogICAgICwgbV9y
ZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3JlcGV0aXRpb25Db3VudFN0
YXR1cyhVbmtub3duKQpAQCAtODEsMTYgKzExMywxNCBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1h
Z2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1f
ZGVjb2RlZFNpemUoMCkKICAgICAsIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplKDApCiAgICAgLCBt
X2ZyYW1lQ291bnQoMSkKLSAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVj
a2VkRm9yU29saWRDb2xvcihmYWxzZSkKICAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQodHJ1ZSkK
ICAgICAsIG1fYWxsRGF0YVJlY2VpdmVkKHRydWUpCiAgICAgLCBtX2hhdmVTaXplKHRydWUpCiAg
ICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkK
IHsKLSAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2UpOwotICAgIENH
RmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKTsKKyAgICBDR0Zsb2F0IHdp
ZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKKyAgICBDR0Zsb2F0IGhlaWdodCA9
IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwogICAgIG1fZGVjb2RlZFNpemUgPSB3aWR0
aCAqIGhlaWdodCAqIDQ7CiAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIApA
QCAtOTksMTEgKzEyOSw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNn
SW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmll
bnRhdGlvbiA9IG1fc2l6ZTsKIAogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNb
MF0ubV9mcmFtZSA9IENHSW1hZ2VSZXRhaW4oY2dJbWFnZSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9o
YXNBbHBoYSA9IHRydWU7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOwot
Ci0gICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CisgICAgbV9mcmFtZXNbMF0gPSBJbWFnZUZyYW1l
RGF0YShpbWFnZSk7CiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRldGVybWluZU1pbmltdW1TdWJz
YW1wbGluZ0xldmVsKCkgY29uc3QKQEAgLTEyNSw2NCArMTUxLDIxIEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRldGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwgPSBjdXJyZW50
TGV2ZWw7Ci19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCi17Ci0g
ICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBm
YWxzZTsKLQotICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIWhhdmVGcmFtZUF0SW5kZXgoMCkpIHsKLSAgICAgICAgSW50U2l6ZSBzaXplID0gbV9z
b3VyY2UuZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLSAgICAgICAgaWYgKHNpemUud2lkdGgoKSAh
PSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoMCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IG51bGxwdHI7Ci0gICAgaWYgKG1fZnJhbWVzLnNp
emUoKSkKLSAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1swXS5tX2ZyYW1lOwotCi0gICAgaWYgKCFp
bWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgY2hlY2sg
Zm9yIHNvbGlkIGNvbG9yIGluIHRoZSBpbXBvcnRhbnQgc3BlY2lhbCBjYXNlIG9mIGEgMXgxIGlt
YWdlLgotICAgIGlmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IDEgJiYgQ0dJbWFnZUdldEhl
aWdodChpbWFnZSkgPT0gMSkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBS
R0JBCi0gICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSwKLSAgICAgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7Ci0gICAgICAgIGlmICghYml0bWFw
Q29udGV4dCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KGJp
dG1hcENvbnRleHQuZ2V0KCkpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsK
LSAgICAgICAgQ0dSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgMSwgMSk7
Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBkZXN0aW5h
dGlvblJlY3QsIGltYWdlKTsKLSAgICAgICAgaWYgKCFwaXhlbFszXSkKLSAgICAgICAgICAgIG1f
c29saWRDb2xvciA9IENvbG9yKDAsIDAsIDAsIDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX3NvbGlkQ29sb3IgPSBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsx
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7
Ci0KLSAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOwotICAgIH0KKyAgICBtX21heGltdW1T
dWJzYW1wbGluZ0xldmVsID0gY3VycmVudExldmVsOwogfQogCiBDR0ltYWdlUmVmIEJpdG1hcElt
YWdlOjpnZXRDR0ltYWdlUmVmKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KDApOworICAg
IHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKIH0KIAogQ0dJbWFnZVJlZiBCaXRt
YXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7
CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUF0
SW5kZXgoaSk7Ci0gICAgICAgIGlmIChjZ0ltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdpZHRo
KGNnSW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpKSA9PSBzaXplKQotICAgICAgICAg
ICAgcmV0dXJuIGNnSW1hZ2U7CisgICAgICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IGZy
YW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoaW1hZ2UgJiYgSW50U2l6ZShDR0ltYWdl
R2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSkgPT0g
c2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBpbWFnZS5nZXQoKTsKICAgICB9CiAKICAgICAvLyBG
YWxsYmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNhbid0IGZpbmQgdGhlIHJp
Z2h0IHNpemUKQEAgLTE5Nyw4ICsxODAsOCBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFw
SW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCiAgICAgCiAgICAgQ0ZNdXRhYmxlQXJyYXlSZWYgYXJy
YXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShOVUxMLCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAg
IGlmIChDR0ltYWdlUmVmIGN1cnJGcmFtZSA9IGZyYW1lQXRJbmRleChpKSkKLSAgICAgICAgICAg
IENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKKyAgICAgICAgaWYgKE5hdGl2
ZUltYWdlUHRyIGN1cnJGcmFtZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpKQorICAgICAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJyRnJhbWUuZ2V0KCkpOwogICAgIH0KICAgICBy
ZXR1cm4gYWRvcHRDRihhcnJheSk7CiB9CkBAIC0yMTEsMTUgKzE5NCwxNSBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAjZW5kaWYKIAotICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKICAgICAv
LyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYgY29udGV4
dHMuCiAgICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0
KCkpKQotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1f
Y3VycmVudEZyYW1lKSk7CisgICAgICAgIGltYWdlID0gY29weVVuc2NhbGVkRnJhbWVJbWFnZUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAgIGVsc2UgewogICAgICAgICBDR1JlY3QgdHJhbnNm
b3JtZWREZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RBcHBseUFmZmluZVRyYW5zZm9ybShkZXN0UmVj
dCwgQ0dDb250ZXh0R2V0Q1RNKGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgZmxv
YXQgc3Vic2FtcGxpbmdTY2FsZSA9IHN0ZDo6bWluPGZsb2F0PigxLCBzdGQ6Om1heCh0cmFuc2Zv
cm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLndpZHRoIC8gc3JjUmVjdC53aWR0aCgpLCB0cmFuc2Zv
cm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLmhlaWdodCAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKIAot
ICAgICAgICBpbWFnZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3Vic2FtcGxpbmdT
Y2FsZSk7CisgICAgICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUs
IHN1YnNhbXBsaW5nU2NhbGUpOwogICAgIH0KIAogICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3Mg
dG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgpAQCAtMjUxLDE4ICsyMzQsMTgg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWRE
cmF3KHRoaXMpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmNvcHlVbnNj
YWxlZEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAg
ICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2Zy
YW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsKIAogICAgIGlmICghbV9m
cmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJuIENHSW1hZ2VS
ZXRhaW4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpOworICAgICAgICByZXR1cm4gbV9mcmFtZXNb
aW5kZXhdLm1faW1hZ2U7CiAKLSAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4
KGluZGV4KTsKKyAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5k
ZXgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDZjMDNhMmNlZjg0NjA2NTYx
ZWEwN2ViOTI4ZjFjZjI5NWY5ZjVlMzYuLjdhMTNiYjU4NDY3MDhkMzdlMDJiZDNkZDY3MjNjMjdh
NDk1MTc2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0zMzMsMTAgKzMzMywxMCBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fZGVjb2RlZEltYWdlID0g
YWRvcHRDRihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7CisgICAgICAgIG1fZGVjb2Rl
ZEltYWdlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKICAgICAgICAgbV9j
Z0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fY2dJ
bWFnZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIG1f
Y2dJbWFnZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkuZ2V0KCk7CiAg
ICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTM2LDcgKzUz
Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWdu
ZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgY29udGV4dC5zY2FsZShGbG9hdFNp
emUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VIZWlnaHQpOwogICAg
IGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7
Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBj
YW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVD
b3B5KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNh
bnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZUNv
cHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXgg
YTQ0OTY1NDA0NmFlOGYxMGFiYWQxNjQxNWU2NDYwYWRiYmJiOGU4OC4uMTYyMDlhZjUzNDQ4MWRi
NGNkZGQ4YjQyM2NlN2JmMmE0MGIwZGJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMzExLDgg
KzMxMSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgZmxvYXQgYWRqdXN0ZWRYID0g
cGhhc2UueCgpIC0gZGVzdFJlY3QueCgpICsgdGlsZVJlY3QueCgpICogbmFycm93UHJlY2lzaW9u
VG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7IC8vIFdlIHRyYW5zbGF0ZWQgdGhlIGNvbnRl
eHQgc28gdGhhdCBkZXN0UmVjdC54KCkgaXMgdGhlIG9yaWdpbiwgc28gc3VidHJhY3QgaXQgb3V0
LgogICAgIGZsb2F0IGFkanVzdGVkWSA9IGRlc3RSZWN0LmhlaWdodCgpIC0gKHBoYXNlLnkoKSAt
IGRlc3RSZWN0LnkoKSArIHRpbGVSZWN0LnkoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0
dGVyblRyYW5zZm9ybS5kKCkpICsgc2NhbGVkVGlsZUhlaWdodCk7CiAKLSAgICBDR0ltYWdlUmVm
IHRpbGVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgZmxv
YXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAg
ICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTMyNiwx
MyArMzI2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIC8vIENvcHlpbmcg
YSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRl
Y29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAg
ICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdl
LCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAg
ICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRpbGVSZWN0KSk7
CisgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0
KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBuZWVk
IHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkg
bG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBiYWNrIHRvIHRo
ZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAgIGZsb2F0IHNj
YWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRp
bGVJbWFnZSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UuZ2V0KCkp
OwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0gaW1hZ2Uuc2l6ZSgp
LmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVpZ2h0KCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdlcyB0byBpbnRlZ3JhbCBz
aXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdlLXJlcGVhdDogcm91bmQp
LAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBsYXN0LCBhbmQgc3RldGNo
IHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNWFjNGFmMTMwMWU0
YjViMWM3MjI2YTU1OWYyZjM5M2VkOGI0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuY3BwCkBAIC0wLDAgKzEsNDEz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorCisjaWYgVVNFKENHKQor
CisjaW5jbHVkZSAiQ29yZUdyYXBoaWNzU1BJLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmICFQTEFURk9STShJT1MpCisjaW5jbHVk
ZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CisjZWxzZQorI2lu
Y2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNl
bmRpZgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPEltYWdlSU8vQ0dJ
bWFnZVNvdXJjZVByaXZhdGUuaD4KKyNlbHNlCitjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVNv
dXJjZVN1YnNhbXBsZUZhY3RvciA9IENGU1RSKCJrQ0dJbWFnZVNvdXJjZVN1YnNhbXBsZUZhY3Rv
ciIpOworY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTaG91bGRDYWNoZUltbWVkaWF0
ZWx5ID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU2hvdWxkQ2FjaGVJbW1lZGlhdGVseSIpOworI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NvbnN0IENGU3RyaW5nUmVmIFdlYkNv
cmVDR0ltYWdlUHJvcGVydHlBUE5HVW5jbGFtcGVkRGVsYXlUaW1lID0gQ0ZTVFIoIlVuY2xhbXBl
ZERlbGF5VGltZSIpOworY29uc3QgQ0ZTdHJpbmdSZWYgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQ
TkdEZWxheVRpbWUgPSBDRlNUUigiRGVsYXlUaW1lIik7Citjb25zdCBDRlN0cmluZ1JlZiBXZWJD
b3JlQ0dJbWFnZVByb3BlcnR5QVBOR0xvb3BDb3VudCA9IENGU1RSKCJMb29wQ291bnQiKTsKKwor
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0IzMiA9IENGU1RS
KCJrQ0dJbWFnZVNvdXJjZVNob3VsZFByZWZlclJHQjMyIik7Citjb25zdCBDRlN0cmluZ1JlZiBr
Q0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSA9IENGU1RSKCJrQ0dJbWFnZVNvdXJjZVNraXBNZXRh
ZGF0YSIpOworCitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlSW1hZ2VT
b3VyY2VPcHRpb25zKFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RlTW9k
ZSBkZWNvZGVNb2RlKQoreworICAgIGNvbnN0IENGSW5kZXggYmFzaWNPcHRpb25zID0gMzsKKyAg
ICBjb25zdCB2b2lkKiBrZXlzW2Jhc2ljT3B0aW9ucyArIDJdID0geyBrQ0dJbWFnZVNvdXJjZVNo
b3VsZENhY2hlLCBrQ0dJbWFnZVNvdXJjZVNob3VsZFByZWZlclJHQjMyLCBrQ0dJbWFnZVNvdXJj
ZVNraXBNZXRhZGF0YSB9OworICAgIGNvbnN0IHZvaWQqIHZhbHVlc1tiYXNpY09wdGlvbnMgKyAy
XSA9IHsga0NGQm9vbGVhblRydWUsIGtDRkJvb2xlYW5UcnVlLCBrQ0ZCb29sZWFuVHJ1ZSB9Owor
ICAgIENGSW5kZXggbnVtT3B0aW9ucyA9IGJhc2ljT3B0aW9uczsKKyAgICAKKyAgICBpZiAoc3Vi
c2FtcGxpbmdMZXZlbCA+IDApIHsKKyAgICAgICAgc2hvcnQgY29uc3RyYWluZWRTdWJzYW1wbGlu
Z0xldmVsID0gc3RkOjptaW48c2hvcnQ+KDMsIHN0ZDo6bWF4PHNob3J0PigwLCBzdWJzYW1wbGlu
Z0xldmVsKSk7CisgICAgICAgIGludCBzdWJzYW1wbGVJbnQgPSAxIDw8IGNvbnN0cmFpbmVkU3Vi
c2FtcGxpbmdMZXZlbDsgLy8gWzAuLjNdID0+IFsxLCAyLCA0LCA4XQorICAgICAgICBSZXRhaW5Q
dHI8Q0ZOdW1iZXJSZWY+IHN1YnNhbXBsZU51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUo
bnVsbHB0ciwgIGtDRk51bWJlckludFR5cGUsICAmc3Vic2FtcGxlSW50KSk7CisgICAgICAgIAor
ICAgICAgICBrZXlzW251bU9wdGlvbnNdID0ga0NHSW1hZ2VTb3VyY2VTdWJzYW1wbGVGYWN0b3I7
CisgICAgICAgIHZhbHVlc1tudW1PcHRpb25zKytdID0ga0NHSW1hZ2VTb3VyY2VTdWJzYW1wbGVG
YWN0b3I7CisgICAgfQorICAgIAorICAgIGlmIChkZWNvZGVNb2RlID09IERlY29kZU1vZGU6Oklt
bWVkaWF0ZSkgeworICAgICAgICBrZXlzW251bU9wdGlvbnNdID0ga0NHSW1hZ2VTb3VyY2VTaG91
bGRDYWNoZUltbWVkaWF0ZWx5OworICAgICAgICB2YWx1ZXNbbnVtT3B0aW9ucysrXSA9IGtDRkJv
b2xlYW5UcnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUobnVsbHB0ciwga2V5cywgdmFsdWVzLCBudW1PcHRpb25zLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cit9CisK
K3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZVNvdXJjZU9wdGlvbnMoU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0gMCwgRGVjb2RlTW9kZSBkZWNvZGVNb2Rl
ID0gRGVjb2RlTW9kZTo6TGF6eSkKK3sKKyAgICBpZiAoc3Vic2FtcGxpbmdMZXZlbCB8fCBkZWNv
ZGVNb2RlID09IERlY29kZU1vZGU6OkltbWVkaWF0ZSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUlt
YWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsLCBkZWNvZGVNb2RlKTsKKyAgICAKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IG9wdGlv
bnMgPSBjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMoMCwgRGVjb2RlTW9kZTo6TGF6eSk7CisgICAg
cmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
RnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGltYWdlUHJvcGVydGllcykKK3sKKyAgICBB
U1NFUlQoaW1hZ2VQcm9wZXJ0aWVzKTsKKyAgICBDRk51bWJlclJlZiBvcmllbnRhdGlvblByb3Bl
cnR5ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlUHJvcGVydGllcywg
a0NHSW1hZ2VQcm9wZXJ0eU9yaWVudGF0aW9uKTsKKyAgICBpZiAoIW9yaWVudGF0aW9uUHJvcGVy
dHkpCisgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKKyAgICAKKyAgICBp
bnQgZXhpZlZhbHVlOworICAgIENGTnVtYmVyR2V0VmFsdWUob3JpZW50YXRpb25Qcm9wZXJ0eSwg
a0NGTnVtYmVySW50VHlwZSwgJmV4aWZWYWx1ZSk7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRp
b246OmZyb21FWElGVmFsdWUoZXhpZlZhbHVlKTsKK30KKyAgICAKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCitzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZv
aWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKK3sKKyAgICBTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwor
ICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKHBv
c2l0aW9uID49IHNvdXJjZVNpemUpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGNvbnN0
IGNoYXIqIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9zaXRpb247CisgICAgc2l6
ZV90IGFtb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oY291bnQsIHNvdXJjZVNpemUgLSBwb3NpdGlv
bik7CisgICAgbWVtY3B5KGJ1ZmZlciwgc291cmNlLCBhbW91bnQpOworICAgIHJldHVybiBhbW91
bnQ7Cit9CisKK3ZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQoreworICAgIFNo
YXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5m
byk7CisgICAgc2hhcmVkQnVmZmVyLT5kZXJlZigpOworfQorI2VuZGlmCisKK0ltYWdlRGVjb2Rl
cjo6SW1hZ2VEZWNvZGVyKCkKK3sKKyAgICBtX25hdGl2ZURlY29kZXIgPSBDR0ltYWdlU291cmNl
Q3JlYXRlSW5jcmVtZW50YWwoMCk7Cit9CisKK1N1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2ZWwg
bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCit7CisgICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2Ft
cGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCisg
ICAgZmxvYXQgY2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBzdGQ6Om1pbjxm
bG9hdD4oMSwgc2NhbGUpKTsKKyAgICBTdWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9IGNlaWxmKGxv
ZzJmKDEgLyBjbGFtcGVkU2NhbGUpKTsKKyAgICBBU1NFUlQocmVzdWx0ID49MCAmJiByZXN1bHQg
PD0gMyk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNhbXBsaW5nTGV2
ZWwpOworfQorCitzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVBy
b3BlcnRpZXMoKQoreworICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcgbWFsbG9jL2NhbGxvYyBj
YWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCisgICAgLy8gQSBub24temVybyB2YWx1ZSBl
bnN1cmVzIGNhY2hlZCBpbWFnZXMgd2l0aCBubyBkZWNvZGVkIGZyYW1lcyBzdGlsbCBlbnRlcgor
ICAgIC8vIHRoZSBsaXZlIGRlY29kZWQgcmVzb3VyY2VzIGxpc3Qgd2hlbiB0aGUgQ0dJbWFnZVNv
dXJjZSBkZWNvZGVzIGltYWdlCisgICAgLy8gcHJvcGVydGllcywgYWxsb3dpbmcgdGhlIGNhY2hl
IHRvIHBydW5lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBpbWFnZS4KKyAgICAvLyBUaGlzIHZhbHVl
IGlzIGxpa2VseSB0byBiZSBpbmFjY3VyYXRlIG9uIG90aGVyIHBsYXRmb3JtcywgYnV0IHRoZSBv
dmVyYWxsCisgICAgLy8gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLgorICAgIHJldHVybiAxMzA4ODsK
K30KKworU3RyaW5nIEltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAorewor
ICAgIENGU3RyaW5nUmVmIGltYWdlU291cmNlVHlwZSA9IENHSW1hZ2VTb3VyY2VHZXRUeXBlKG1f
bmF0aXZlRGVjb2Rlcik7CisgICAgcmV0dXJuIFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZv
ckltYWdlU291cmNlVHlwZShpbWFnZVNvdXJjZVR5cGUpOworfQorCitib29sIEltYWdlRGVjb2Rl
cjo6aXNTaXplQXZhaWxhYmxlKCkgY29uc3QKK3sKKyAgICAvLyBSYWduYXJvcyB5ZWxsczogVE9P
IFNPT04hIFlvdSBoYXZlIGF3YWtlbmVkIG1lIFRPTyBTT09OLCBFeGVjdXR1cyEKKyAgICBpZiAo
Q0dJbWFnZVNvdXJjZUdldFN0YXR1cyhtX25hdGl2ZURlY29kZXIpIDwga0NHSW1hZ2VTdGF0dXNJ
bmNvbXBsZXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gaW1hZ2UwUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNv
cHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIsIDAsIGltYWdlU291cmNlT3B0aW9u
cygpLmdldCgpKSk7CisgICAgaWYgKCFpbWFnZTBQcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgcmV0dXJuIENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGltYWdlMFBy
b3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbFdpZHRoKQorICAgICYmIENGRGlj
dGlvbmFyeUNvbnRhaW5zS2V5KGltYWdlMFByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVy
dHlQaXhlbEhlaWdodCk7Cit9CisKK0ludFNpemUgSW1hZ2VEZWNvZGVyOjpzaXplKCkgY29uc3QK
K3sKKyAgICBpZiAobV9zaXplLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zaXplID0gZnJhbWVTaXpl
QXRJbmRleCgwLCAwKTsKKyAgICByZXR1cm4gbV9zaXplOworfQorCitzaXplX3QgSW1hZ2VEZWNv
ZGVyOjpmcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0dJbWFnZVNvdXJjZUdldENv
dW50KG1fbmF0aXZlRGVjb2Rlcik7Cit9CisKK2ludCBJbWFnZURlY29kZXI6OnJlcGV0aXRpb25D
b3VudCgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGll
cyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzKG1fbmF0aXZlRGVjb2Rlciwg
aW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKKyAgICBpZiAoIXByb3BlcnRpZXMpCisgICAg
ICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7CisgICAgCisgICAgQ0ZEaWN0aW9uYXJ5UmVm
IGdpZlByb3BlcnRpZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHBy
b3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlHSUZEaWN0aW9uYXJ5KTsKKyAgICBpZiAo
Z2lmUHJvcGVydGllcykgeworICAgICAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZ2lmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUdJRkxv
b3BDb3VudCk7CisgICAgICAgIAorICAgICAgICAvLyBObyBwcm9wZXJ0eSBtZWFucyBsb29wIG9u
Y2UuCisgICAgICAgIGlmICghbnVtKQorICAgICAgICAgICAgcmV0dXJuIGNBbmltYXRpb25Mb29w
T25jZTsKKyAgICAgICAgCisgICAgICAgIGludCBsb29wQ291bnQ7CisgICAgICAgIENGTnVtYmVy
R2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmbG9vcENvdW50KTsKKyAgICAgICAgCisg
ICAgICAgIC8vIEEgcHJvcGVydHkgd2l0aCB2YWx1ZSAwIG1lYW5zIGxvb3AgZm9yZXZlci4KKyAg
ICAgICAgcmV0dXJuIGxvb3BDb3VudCA/IGxvb3BDb3VudCA6IGNBbmltYXRpb25Mb29wSW5maW5p
dGU7CisgICAgfQorICAgIAorICAgIENGRGljdGlvbmFyeVJlZiBwbmdQcm9wZXJ0aWVzID0gKENG
RGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJ
bWFnZVByb3BlcnR5UE5HRGljdGlvbmFyeSk7CisgICAgaWYgKHBuZ1Byb3BlcnRpZXMpIHsKKyAg
ICAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KHBuZ1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HTG9vcENvdW50KTsKKyAg
ICAgICAgaWYgKCFudW0pCisgICAgICAgICAgICByZXR1cm4gY0FuaW1hdGlvbkxvb3BPbmNlOwor
ICAgICAgICAKKyAgICAgICAgaW50IGxvb3BDb3VudDsKKyAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1
ZShudW0sIGtDRk51bWJlckludFR5cGUsICZsb29wQ291bnQpOworICAgICAgICByZXR1cm4gbG9v
cENvdW50ID8gbG9vcENvdW50IDogY0FuaW1hdGlvbkxvb3BJbmZpbml0ZTsKKyAgICB9CisgICAg
CisgICAgLy8gVHVybnMgb3V0IHdlJ3JlIG5vdCBhbiBhbmltYXRlZCBpbWFnZSBhZnRlciBhbGws
IHNvIHdlIGRvbid0IGFuaW1hdGUuCisgICAgcmV0dXJuIGNBbmltYXRpb25Ob25lOworfQorCiti
b29sIEltYWdlRGVjb2Rlcjo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK3sK
KyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0lt
YWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2RlciwgMCwgaW1hZ2VT
b3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKKyAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBpbnQgeCA9IC0xLCB5ID0gLTE7CisgICAgQ0ZOdW1iZXJS
ZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0
KCksIENGU1RSKCJob3RzcG90WCIpKTsKKyAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1
ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVz
LmdldCgpLCBDRlNUUigiaG90c3BvdFkiKSk7CisgICAgaWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0
VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAoeCA8IDAgfHwgeSA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBob3RTcG90ID0gSW50UG9pbnQoeCwgeSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K0ludFNpemUgSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAoreworICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJv
cGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25z
KHN1YnNhbXBsaW5nTGV2ZWwpLmdldCgpKSk7CisgICAgCisgICAgaWYgKCFwcm9wZXJ0aWVzKQor
ICAgICAgICByZXR1cm4geyB9OworICAgIAorICAgIGludCB3aWR0aCA9IDA7CisgICAgaW50IGhl
aWdodCA9IDA7CisgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbFdpZHRoKTsK
KyAgICBpZiAobnVtKQorICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50
VHlwZSwgJndpZHRoKTsKKyAgICAKKyAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBpeGVsSGVpZ2h0KTsK
KyAgICBpZiAobnVtKQorICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50
VHlwZSwgJmhlaWdodCk7CisgICAgCisgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7
Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBp
bmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKKyAgICByZXR1cm4gQ0dJ
bWFnZVNvdXJjZUdldFN0YXR1c0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLCBpbmRleCkgPT0ga0NH
SW1hZ2VTdGF0dXNDb21wbGV0ZTsKK30KKworSW1hZ2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXI6
Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQ
cm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlv
bnMoKS5nZXQoKSkpOworICAgIGlmICghcHJvcGVydGllcykKKyAgICAgICAgcmV0dXJuIERlZmF1
bHRJbWFnZU9yaWVudGF0aW9uOworICAgIAorICAgIHJldHVybiBvcmllbnRhdGlvbkZyb21Qcm9w
ZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOworfQorCitmbG9hdCBJbWFnZURlY29kZXI6OmZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBmbG9hdCBkdXJhdGlv
biA9IDA7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0
Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIsIGlu
ZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOworICAgIGlmIChwcm9wZXJ0aWVzKSB7
CisgICAgICAgIENGRGljdGlvbmFyeVJlZiBnaWZQcm9wZXJ0aWVzID0gKENGRGljdGlvbmFyeVJl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5
R0lGRGljdGlvbmFyeSk7CisgICAgICAgIGlmIChnaWZQcm9wZXJ0aWVzKSB7CisgICAgICAgICAg
ICBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KGdpZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlHSUZVbmNsYW1wZWREZWxheVRpbWUpKSB7
CisgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSB1bmNsYW1wZWQgZnJhbWUgZGVsYXkgaWYgaXQg
ZXhpc3RzLgorICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJG
bG9hdFR5cGUsICZkdXJhdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKENGTnVtYmVyUmVm
IG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShnaWZQcm9wZXJ0aWVzLCBr
Q0dJbWFnZVByb3BlcnR5R0lGRGVsYXlUaW1lKSkgeworICAgICAgICAgICAgICAgIC8vIEZhbGwg
YmFjayB0byB0aGUgY2xhbXBlZCBmcmFtZSBkZWxheSBpZiB0aGUgdW5jbGFtcGVkIGZyYW1lIGRl
bGF5IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVt
LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIENGRGljdGlvbmFyeVJlZiBwbmdQcm9wZXJ0aWVzID0gKENG
RGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJ
bWFnZVByb3BlcnR5UE5HRGljdGlvbmFyeSk7CisgICAgICAgIGlmIChwbmdQcm9wZXJ0aWVzKSB7
CisgICAgICAgICAgICBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlv
bmFyeUdldFZhbHVlKHBuZ1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HVW5j
bGFtcGVkRGVsYXlUaW1lKSkKKyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwg
a0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVyYXRpb24pOworICAgICAgICAgICAgZWxzZSBpZiAoQ0ZO
dW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHBuZ1Byb3Bl
cnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HRGVsYXlUaW1lKSkKKyAgICAgICAgICAg
ICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVyYXRpb24p
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRzIHNwZWNp
ZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBhcyBwb3Nz
aWJsZS4KKyAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBkdXJh
dGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5CisgICAgLy8gYSBkdXJh
dGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6
Ly93ZWJraXQub3JnL2IvMzYwODI+CisgICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAg
aWYgKGR1cmF0aW9uIDwgMC4wMTFmKQorICAgICAgICByZXR1cm4gMC4xZjsKKyAgICByZXR1cm4g
ZHVyYXRpb247Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFt
ZUF0SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgo
bV9uYXRpdmVEZWNvZGVyLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOworICAgIGlm
ICghcHJvcGVydGllcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIENGRGljdGlv
bmFyeVJlZiBqZmlmUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUpGSUZE
aWN0aW9uYXJ5KSk7CisgICAgaWYgKGpmaWZQcm9wZXJ0aWVzKSB7CisgICAgICAgIENGQm9vbGVh
blJlZiBpc1Byb2dDRkJvb2wgPSBzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKGpmaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5SkZJRklzUHJvZ3Jlc3Np
dmUpKTsKKyAgICAgICAgaWYgKGlzUHJvZ0NGQm9vbCkgeworICAgICAgICAgICAgYm9vbCBpc1By
b2dyZXNzaXZlID0gQ0ZCb29sZWFuR2V0VmFsdWUoaXNQcm9nQ0ZCb29sKTsKKyAgICAgICAgICAg
IC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS81MTg0NjU1PiAtIEhhbmcgcmVuZGVy
aW5nIHZlcnkgbGFyZ2UgcHJvZ3Jlc3NpdmUgSlBFRy4gRGVjb2RpbmcgcHJvZ3Jlc3NpdmUKKyAg
ICAgICAgICAgIC8vIGltYWdlcyBoYW5ncyBmb3IgYSB2ZXJ5IGxvbmcgdGltZSByaWdodCBub3cu
IFVudGlsIHRoaXMgaXMgZml4ZWQsIGRvbid0IHN1Yi1zYW1wbGUgcHJvZ3Jlc3NpdmUgaW1hZ2Vz
LiBUaGlzCisgICAgICAgICAgICAvLyB3aWxsIGNhdXNlIHRoZW0gdG8gZmFpbCBvdXIgbGFyZ2Ug
aW1hZ2UgY2hlY2sgYW5kIHRoZXkgd29uJ3QgYmUgZGVjb2RlZC4KKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBSZW1vdmUgb25jZSB1bmRlcmx5aW5nIGlzc3VlIGlzIGZpeGVkICg8cmRhcjovL3Byb2Js
ZW0vNTE5MTQxOD4pCisgICAgICAgICAgICByZXR1cm4gIWlzUHJvZ3Jlc3NpdmU7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVy
OjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKCFm
cmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
CisgICAgQ0ZTdHJpbmdSZWYgaW1hZ2VUeXBlID0gQ0dJbWFnZVNvdXJjZUdldFR5cGUobV9uYXRp
dmVEZWNvZGVyKTsKKyAgICAKKyAgICAvLyBSZXR1cm4gZmFsc2UgaWYgdGhlcmUgaXMgbm8gaW1h
Z2UgdHlwZSBvciB0aGUgaW1hZ2UgdHlwZSBpcyBKUEVHLCBiZWNhdXNlCisgICAgLy8gSlBFRyBk
b2VzIG5vdCBzdXBwb3J0IGFscGhhIHRyYW5zcGFyZW5jeS4KKyAgICBpZiAoIWltYWdlVHlwZSB8
fCBDRkVxdWFsKGltYWdlVHlwZSwgQ0ZTVFIoInB1YmxpYy5qcGVnIikpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgLy8gRklYTUU6IENvdWxkIHJldHVybiBmYWxzZSBmb3Igb3Ro
ZXIgbm9uLXRyYW5zcGFyZW50IGltYWdlIGZvcm1hdHMuCisgICAgLy8gRklYTUU6IENvdWxkIG1h
eWJlIHJldHVybiBmYWxzZSBmb3IgYSBHSUYgRnJhbWUgaWYgd2UgaGF2ZSBlbm91Z2ggaW5mbyBp
biB0aGUgR0lGIHByb3BlcnRpZXMgZGljdGlvbmFyeQorICAgIC8vIHRvIGRldGVybWluZSB3aGV0
aGVyIG9yIG5vdCBhIHRyYW5zcGFyZW50IGNvbG9yIHdhcyBkZWZpbmVkLgorICAgIHJldHVybiB0
cnVlOworfQorCit1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAoreworICAg
IEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdM
ZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZS53aWR0aCgpICogZnJhbWVTaXplLmhlaWdodCgp
ICogNDsKK30KKworUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwsIERlY29kZU1vZGUgZGVjb2RlTW9kZSkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgobV9u
YXRpdmVEZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKHN1YnNhbXBsaW5nTGV2ZWws
IGRlY29kZU1vZGUpLmdldCgpKSk7CisgICAgICAgIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAv
LyA8cmRhcjovL3Byb2JsZW0vNzM3MTE5OD4gLSBDb3JlR3JhcGhpY3MgY2hhbmdlZCB0aGUgZGVm
YXVsdCBjYWNoaW5nIGJlaGF2aW91ciBpbiBpT1MgNC4wIHRvIGtDR0ltYWdlQ2FjaGluZ1RyYW5z
aWVudAorICAgIC8vIHdoaWNoIGNhdXNlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gZm9yIHVz
IHNpbmNlIHRoZSBpbWFnZXMgaGFkIHRvIGJlIHJlc2FtcGxlZC9yZWNyZWF0ZWQgZXZlcnkgdGlt
ZSB3ZSBjYWxsZWQKKyAgICAvLyBDR0NvbnRleHREcmF3SW1hZ2UuIFdlIG5vdyB0ZWxsIENHIHRv
IGNhY2hlIHRoZSBkcmF3biBpbWFnZXMuIFNlZSBhbHNvIDxyZGFyOi8vcHJvYmxlbS8xNDM2Njc1
NT4gLQorICAgIC8vIENvcmVHcmFwaGljcyBuZWVkcyB0byB1bi1kZXByZWNhdGUga0NHSW1hZ2VD
YWNoaW5nVGVtcG9yYXJ5IHNpbmNlIGl0J3Mgc3RpbGwgbm90IHRoZSBkZWZhdWx0LgorI2lmIENP
TVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorI2VuZGlm
CisgICAgICAgIENHSW1hZ2VTZXRDYWNoaW5nRmxhZ3MoaW1hZ2UuZ2V0KCksIGtDR0ltYWdlQ2Fj
aGluZ1RlbXBvcmFyeSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcG9wCisjZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisgICAgICAgIAorICAg
IENGU3RyaW5nUmVmIGltYWdlVVRJID0gQ0dJbWFnZVNvdXJjZUdldFR5cGUobV9uYXRpdmVEZWNv
ZGVyKTsKKyAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgeGJtVVRJID0gQ0ZTVFIoInB1Ymxp
Yy54Yml0bWFwLWltYWdlIik7CisKKyAgICBpZiAoIWltYWdlVVRJKQorICAgICAgICByZXR1cm4g
aW1hZ2U7CisKKyAgICBpZiAoIUNGRXF1YWwoaW1hZ2VVVEksIHhibVVUSSkpCisgICAgICAgIHJl
dHVybiBpbWFnZTsKKworICAgIC8vIElmIGl0IGlzIGFuIHhibSBpbWFnZSwgbWFzayBvdXQgYWxs
IHRoZSB3aGl0ZSBhcmVhcyB0byByZW5kZXIgdGhlbSB0cmFuc3BhcmVudC4KKyAgICBjb25zdCBD
R0Zsb2F0IG1hc2tpbmdDb2xvcnNbNl0gPSB7MjU1LCAyNTUsICAyNTUsIDI1NSwgMjU1LCAyNTV9
OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYXNrZWRJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZVdpdGhNYXNraW5nQ29sb3JzKGltYWdlLmdldCgpLCBtYXNraW5nQ29sb3JzKSk7Cisg
ICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKK30KKyAgICAKK3Zv
aWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLy8gT24gTWFjIHRoZSBOU0Rh
dGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdp
dGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KKyAgICAvLyBXZSB1c2UgU2hhcmVk
QnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91
bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcg
YXQgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2
ZURlY29kZXIsIGRhdGEtPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwor
I2Vsc2UKKyAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRC
dWZmZXIuCisgICAgZGF0YS0+cmVmKCk7CisgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9z
aXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNl
IFNoYXJlZEJ1ZmZlcgorICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3du
IHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNo
CisgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNh
bGxiYWNrLgorICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJh
Y2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1
ZmZlclJlbGVhc2UgfTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoZGF0YSwgZGF0YS0+c2l6
ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVBy
b3ZpZGVyKG1fbmF0aXZlRGVjb2RlciwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2
ZWQpOworI2VuZGlmCit9CisKK30KKworI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTU2MWFiOWUxNzc5MTcyYmYzZWQyN2ZhMDQwYTBlNDE5MWJhMTY2ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5oCkBA
IC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEltYWdlRGVjb2Rlcl9oCisjZGVmaW5lIEltYWdlRGVjb2Rlcl9oCisKKyNp
bmNsdWRlICJJbWFnZVNvdXJjZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSk7CisKK2VudW0gY2xhc3MgRGVjb2RlTW9kZSB7IEltbWVkaWF0
ZSwgTGF6eSB9OworCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIEltYWdlRGVjb2RlciB7
CitwdWJsaWM6CisgICAgSW1hZ2VEZWNvZGVyKCk7CisgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVy
KCkgeyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVy
dGllcygpOworICAgIHN0YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JT
Y2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCk7CisKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICBib29sIGlz
U2l6ZUF2YWlsYWJsZSgpIGNvbnN0OworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0OworICAgIHNp
emVfdCBmcmFtZUNvdW50KCkgY29uc3Q7CisgICAgaW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0
OworICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3Q7CisKKyAgICBJ
bnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsK
KyAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworCisgICAgZmxv
YXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBib29sIGZyYW1lSGFz
QWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKworICAgIFBhc3NOYXRpdmVJ
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWws
IERlY29kZU1vZGUgPSBEZWNvZGVNb2RlOjpMYXp5KSBjb25zdDsKKworICAgIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgCitwcm90ZWN0ZWQ6
CisgICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZTsKKyAgICBDR0ltYWdlU291cmNlUmVmIG1fbmF0
aXZlRGVjb2RlcjsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBJbWFnZURlY29kZXJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRhMDEyYjZmNTdiZjUzOTMwNjQ3
NzdiNmMxMDkzNjZiMjRjNDQ1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgotCi0jaWYgVVNFKENHKQotI2lu
Y2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKLQotI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgot
I2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnRQb2ludC5oIgotI2lu
Y2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLSNp
ZiAhUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRp
b25TZXJ2aWNlcy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4KLSNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jaW1wb3J0IDxJbWFnZUlPL0NHSW1hZ2VTb3VyY2VQcml2YXRlLmg+Ci0jZWxzZQotY29u
c3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTdWJzYW1wbGVGYWN0b3IgPSBDRlNUUigia0NH
SW1hZ2VTb3VyY2VTdWJzYW1wbGVGYWN0b3IiKTsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNvbnN0IENGU3RyaW5nUmVmIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HVW5jbGFt
cGVkRGVsYXlUaW1lID0gQ0ZTVFIoIlVuY2xhbXBlZERlbGF5VGltZSIpOwotY29uc3QgQ0ZTdHJp
bmdSZWYgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdEZWxheVRpbWUgPSBDRlNUUigiRGVsYXlU
aW1lIik7Ci1jb25zdCBDRlN0cmluZ1JlZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR0xvb3BD
b3VudCA9IENGU1RSKCJMb29wQ291bnQiKTsKLQotY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VT
b3VyY2VTaG91bGRQcmVmZXJSR0IzMiA9IENGU1RSKCJrQ0dJbWFnZVNvdXJjZVNob3VsZFByZWZl
clJHQjMyIik7Ci1jb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSA9
IENGU1RSKCJrQ0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSIpOwotCi0jaWYgIVBMQVRGT1JNKENP
Q09BKQotc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2
b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCi17Ci0gICAgU2hhcmVk
QnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsK
LSAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwotICAgIGlmIChw
b3NpdGlvbiA+PSBzb3VyY2VTaXplKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNvbnN0IGNo
YXIqIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9zaXRpb247Ci0gICAgc2l6ZV90
IGFtb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oY291bnQsIHNvdXJjZVNpemUgLSBwb3NpdGlvbik7
Ci0gICAgbWVtY3B5KGJ1ZmZlciwgc291cmNlLCBhbW91bnQpOwotICAgIHJldHVybiBhbW91bnQ7
Ci19Ci0KLXZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQotewotICAgIFNoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7
Ci0gICAgc2hhcmVkQnVmZmVyLT5kZXJlZigpOwotfQotI2VuZGlmCi0KLUltYWdlU291cmNlOjpJ
bWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IG1fZGVjb2RlcigwKQotewotICAgIC8vIEZJWE1F
OiBBbHBoYU9wdGlvbiBhbmQgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gYXJlIGlnbm9yZWQu
Ci19Ci0KLUltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQotewotICAgIGNsZWFyKHRydWUpOwot
fQotCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGxGcmFtZXMsIHNpemVf
dCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICAvLyBS
ZWNlbnQgdmVyc2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFn
ZSBmcmFtZXMgaWYgdGhlIGNsaWVudAotICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxvbmdlciBob2xk
cyByZWZlcmVuY2VzIHRvIHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5Ci0g
ICAgLy8gdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQgdG8gZGVzdHJv
eSBhbGwgb2YgdGhlIGZyYW1lcy4KLSAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtX2RlY29kZXIpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKG1fZGVj
b2Rlcik7Ci0gICAgICAgIG1fZGVjb2RlciA9IDA7Ci0gICAgfQotICAgIGlmIChkYXRhKQotICAg
ICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMoU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsKQotewotICAgIGlmICghc3Vic2FtcGxpbmdMZXZlbCkgewot
ICAgICAgICBjb25zdCB1bnNpZ25lZCBudW1PcHRpb25zID0gMzsKLSAgICAgICAgY29uc3Qgdm9p
ZCoga2V5c1tudW1PcHRpb25zXSA9IHsga0NHSW1hZ2VTb3VyY2VTaG91bGRDYWNoZSwga0NHSW1h
Z2VTb3VyY2VTaG91bGRQcmVmZXJSR0IzMiwga0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEgfTsK
LSAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzW251bU9wdGlvbnNdID0geyBrQ0ZCb29sZWFuVHJ1
ZSwga0NGQm9vbGVhblRydWUsIGtDRkJvb2xlYW5UcnVlIH07Ci0gICAgICAgIHJldHVybiBDRkRp
Y3Rpb25hcnlDcmVhdGUobnVsbHB0ciwga2V5cywgdmFsdWVzLCBudW1PcHRpb25zLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KTsKLSAgICB9Ci0KLSAgICBzaG9ydCBjb25zdHJhaW5lZFN1YnNhbXBsaW5nTGV2ZWwgPSBzdGQ6
Om1pbjxzaG9ydD4oMywgc3RkOjptYXg8c2hvcnQ+KDAsIHN1YnNhbXBsaW5nTGV2ZWwpKTsKLSAg
ICBpbnQgc3Vic2FtcGxlSW50ID0gMSA8PCBjb25zdHJhaW5lZFN1YnNhbXBsaW5nTGV2ZWw7IC8v
IFswLi4zXSA9PiBbMSwgMiwgNCwgOF0KLQotICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gc3Vi
c2FtcGxlTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShudWxscHRyLCAga0NGTnVtYmVy
SW50VHlwZSwgICZzdWJzYW1wbGVJbnQpKTsKLSAgICBjb25zdCBDRkluZGV4IG51bU9wdGlvbnMg
PSA0OwotICAgIGNvbnN0IHZvaWQqIGtleXNbbnVtT3B0aW9uc10gPSB7IGtDR0ltYWdlU291cmNl
U2hvdWxkQ2FjaGUsIGtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdCMzIsIGtDR0ltYWdlU291
cmNlU2tpcE1ldGFkYXRhLCBrQ0dJbWFnZVNvdXJjZVN1YnNhbXBsZUZhY3RvciB9OwotICAgIGNv
bnN0IHZvaWQqIHZhbHVlc1tudW1PcHRpb25zXSA9IHsga0NGQm9vbGVhblRydWUsIGtDRkJvb2xl
YW5UcnVlLCBrQ0ZCb29sZWFuVHJ1ZSwgc3Vic2FtcGxlTnVtYmVyLmdldCgpIH07Ci0gICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKG51bGxwdHIsIGtleXMsIHZhbHVlcywgbnVt
T3B0aW9ucywgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gaW1hZ2VTb3VyY2VPcHRpb25zKFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCA9
IDApCi17Ci0gICAgaWYgKHN1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBjcmVhdGVJ
bWFnZVNvdXJjZU9wdGlvbnMoc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IG9wdGlvbnMgPSBjcmVhdGVJbWFn
ZVNvdXJjZU9wdGlvbnMoMCk7Ci0gICAgcmV0dXJuIG9wdGlvbnM7Ci19Ci0KLWJvb2wgSW1hZ2VT
b3VyY2U6OmluaXRpYWxpemVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kZWNvZGVyOwotfQot
Ci12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCi17Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKCFtX2RlY29kZXIp
Ci0gICAgICAgIG1fZGVjb2RlciA9IENHSW1hZ2VTb3VyY2VDcmVhdGVJbmNyZW1lbnRhbCgwKTsK
LSAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUg
c2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdl
LiAgV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkKLSAgICAvLyB0byB3cmFwIGl0c2VsZiBp
bnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlz
IHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJjZVVw
ZGF0ZURhdGEobV9kZWNvZGVyLCBkYXRhLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJl
Y2VpdmVkKTsKLSNlbHNlCi0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2RlciA9
IENHSW1hZ2VTb3VyY2VDcmVhdGVJbmNyZW1lbnRhbCgwKTsKLSAgICAvLyBDcmVhdGUgYSBDR0Rh
dGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS0+cmVmKCk7Ci0g
ICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4g
dGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgotICAgIC8vIGRvZXMg
bm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJh
bnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCi0gICAgLy8gaXMgYSByZXF1aXJlbWVudCBm
b3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgotICAgIENHRGF0YVByb3ZpZGVy
RGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZm
ZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVEaXJlY3QoZGF0YSwgZGF0YS0+c2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsK
LSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fZGVjb2RlciwgZGF0YVByb3Zp
ZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwotI2VuZGlmCi19Ci0KLVN0cmluZyBJbWFnZVNv
dXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAotewotICAgIGlmICghbV9kZWNvZGVyKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgQ0ZTdHJpbmdSZWYgaW1hZ2VTb3VyY2VUeXBl
ID0gQ0dJbWFnZVNvdXJjZUdldFR5cGUobV9kZWNvZGVyKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6
cHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGltYWdlU291cmNlVHlwZSk7Ci19
Ci0KLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShmbG9hdCBzY2FsZSkgY29uc3QKLXsKLSAgICAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1wbGlu
ZyBsZXZlbHM6IDAgPSAxeCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KLSAgICBm
bG9hdCBjbGFtcGVkU2NhbGUgPSBzdGQ6Om1heDxmbG9hdD4oMC4xMjUsIHN0ZDo6bWluPGZsb2F0
PigxLCBzY2FsZSkpOwotICAgIGludCByZXN1bHQgPSBjZWlsZihsb2cyZigxIC8gY2xhbXBlZFNj
YWxlKSk7Ci0gICAgQVNTRVJUKHJlc3VsdCA+PTAgJiYgcmVzdWx0IDw9IDMpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCi17Ci0g
ICAgLy8gUmFnbmFyb3MgeWVsbHM6IFRPTyBTT09OISBZb3UgaGF2ZSBhd2FrZW5lZCBtZSBUT08g
U09PTiwgRXhlY3V0dXMhCi0gICAgaWYgKENHSW1hZ2VTb3VyY2VHZXRTdGF0dXMobV9kZWNvZGVy
KSA8IGtDR0ltYWdlU3RhdHVzSW5jb21wbGV0ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2UwUHJvcGVydGllcyA9IGFkb3B0Q0Yo
Q0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX2RlY29kZXIsIDAsIGltYWdlU291
cmNlT3B0aW9ucygpLmdldCgpKSk7Ci0gICAgaWYgKCFpbWFnZTBQcm9wZXJ0aWVzKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoaW1h
Z2UwUHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBpeGVsV2lkdGgpCi0gICAgICAg
ICYmIENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGltYWdlMFByb3BlcnRpZXMuZ2V0KCksIGtDR0lt
YWdlUHJvcGVydHlQaXhlbEhlaWdodCk7Ci19Ci0KLXN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGltYWdlUHJvcGVydGllcykK
LXsKLSAgICBBU1NFUlQoaW1hZ2VQcm9wZXJ0aWVzKTsKLSAgICBDRk51bWJlclJlZiBvcmllbnRh
dGlvblByb3BlcnR5ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlUHJv
cGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eU9yaWVudGF0aW9uKTsKLSAgICBpZiAoIW9yaWVudGF0
aW9uUHJvcGVydHkpCi0gICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKLQot
ICAgIGludCBleGlmVmFsdWU7Ci0gICAgQ0ZOdW1iZXJHZXRWYWx1ZShvcmllbnRhdGlvblByb3Bl
cnR5LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmZXhpZlZhbHVlKTsKLSAgICByZXR1cm4gSW1hZ2VPcmll
bnRhdGlvbjo6ZnJvbUVYSUZWYWx1ZShleGlmVmFsdWUpOwotfQotCi1ib29sIEltYWdlU291cmNl
OjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAotewotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3Vy
Y2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMo
KS5nZXQoKSkpOwotICAgIGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGpmaWZQcm9wZXJ0aWVzID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0
aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFn
ZVByb3BlcnR5SkZJRkRpY3Rpb25hcnkpKTsKLSAgICBpZiAoamZpZlByb3BlcnRpZXMpIHsKLSAg
ICAgICAgQ0ZCb29sZWFuUmVmIGlzUHJvZ0NGQm9vbCA9IHN0YXRpY19jYXN0PENGQm9vbGVhblJl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoamZpZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlK
RklGSXNQcm9ncmVzc2l2ZSkpOwotICAgICAgICBpZiAoaXNQcm9nQ0ZCb29sKSB7Ci0gICAgICAg
ICAgICBib29sIGlzUHJvZ3Jlc3NpdmUgPSBDRkJvb2xlYW5HZXRWYWx1ZShpc1Byb2dDRkJvb2wp
OwotICAgICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzUxODQ2NTU+
IC0gSGFuZyByZW5kZXJpbmcgdmVyeSBsYXJnZSBwcm9ncmVzc2l2ZSBKUEVHLiBEZWNvZGluZyBw
cm9ncmVzc2l2ZQotICAgICAgICAgICAgLy8gaW1hZ2VzIGhhbmdzIGZvciBhIHZlcnkgbG9uZyB0
aW1lIHJpZ2h0IG5vdy4gVW50aWwgdGhpcyBpcyBmaXhlZCwgZG9uJ3Qgc3ViLXNhbXBsZSBwcm9n
cmVzc2l2ZSBpbWFnZXMuIFRoaXMKLSAgICAgICAgICAgIC8vIHdpbGwgY2F1c2UgdGhlbSB0byBm
YWlsIG91ciBsYXJnZSBpbWFnZSBjaGVjayBhbmQgdGhleSB3b24ndCBiZSBkZWNvZGVkLgotICAg
ICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIHVuZGVybHlpbmcgaXNzdWUgaXMgZml4ZWQg
KDxyZGFyOi8vcHJvYmxlbS81MTkxNDE4PikKLSAgICAgICAgICAgIHJldHVybiAhaXNQcm9ncmVz
c2l2ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1JbnRTaXpl
IEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb24pIGNvbnN0Ci17Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGll
cyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX2RlY29kZXIs
IGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoc3Vic2FtcGxpbmdMZXZlbCkuZ2V0KCkpKTsKLQot
ICAgIGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIEludFNpemUoKTsKLQotICAgIGlu
dCB3aWR0aCA9IDA7Ci0gICAgaW50IGhlaWdodCA9IDA7Ci0gICAgQ0ZOdW1iZXJSZWYgbnVtID0g
KENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0lt
YWdlUHJvcGVydHlQaXhlbFdpZHRoKTsKLSAgICBpZiAobnVtKQotICAgICAgICBDRk51bWJlckdl
dFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJndpZHRoKTsKLSAgICBudW0gPSAoQ0ZOdW1i
ZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9w
ZXJ0eVBpeGVsSGVpZ2h0KTsKLSAgICBpZiAobnVtKQotICAgICAgICBDRk51bWJlckdldFZhbHVl
KG51bSwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodCk7Ci0KLSAgICBpZiAoKGRlc2NyaXB0aW9u
LnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pICYm
IG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMocHJvcGVydGllcy5nZXQoKSkudXNlc1dpZHRoQXNI
ZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoaGVpZ2h0LCB3aWR0aCk7Ci0KLSAgICBy
ZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLX0KLQotSW1hZ2VPcmllbnRhdGlvbiBJbWFn
ZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKLXsKLSAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291
cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fZGVjb2RlciwgaW5kZXgsIGltYWdlU291cmNlT3B0
aW9ucygpLmdldCgpKSk7Ci0gICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gRGVm
YXVsdEltYWdlT3JpZW50YXRpb247Ci0KLSAgICByZXR1cm4gb3JpZW50YXRpb25Gcm9tUHJvcGVy
dGllcyhwcm9wZXJ0aWVzLmdldCgpKTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZShJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgZGVzY3JpcHRpb24pOwotfQotCi1ib29sIEltYWdl
U291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAotewotICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VD
b3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5n
ZXQoKSkpOwotICAgIGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaW50IHggPSAtMSwgeSA9IC0xOwotICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBDRlNUUigiaG90c3BvdFgi
KSk7Ci0gICAgaWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRU
eXBlLCAmeCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG51bSA9IChDRk51bWJlclJl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBDRlNUUigiaG90c3BvdFki
KSk7Ci0gICAgaWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRU
eXBlLCAmeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICh4IDwgMCB8fCB5IDwg
MCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaG90U3BvdCA9IEludFBvaW50KHgsIHkp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2Rl
ZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0Ci17Ci0gICAgLy8gTWVhc3VyZWQgYnkgdHJh
Y2luZyBtYWxsb2MvY2FsbG9jIGNhbGxzIG9uIE1hYyBPUyAxMC42LjYsIHg4Nl82NC4KLSAgICAv
LyBBIG5vbi16ZXJvIHZhbHVlIGVuc3VyZXMgY2FjaGVkIGltYWdlcyB3aXRoIG5vIGRlY29kZWQg
ZnJhbWVzIHN0aWxsIGVudGVyCi0gICAgLy8gdGhlIGxpdmUgZGVjb2RlZCByZXNvdXJjZXMgbGlz
dCB3aGVuIHRoZSBDR0ltYWdlU291cmNlIGRlY29kZXMgaW1hZ2UKLSAgICAvLyBwcm9wZXJ0aWVz
LCBhbGxvd2luZyB0aGUgY2FjaGUgdG8gcHJ1bmUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGltYWdl
LgotICAgIC8vIFRoaXMgdmFsdWUgaXMgbGlrZWx5IHRvIGJlIGluYWNjdXJhdGUgb24gb3RoZXIg
cGxhdGZvcm1zLCBidXQgdGhlIG92ZXJhbGwKLSAgICAvLyBiZWhhdmlvciBpcyB1bmNoYW5nZWQu
Ci0gICAgcmV0dXJuIDEzMDg4OwotfQotICAgIAotaW50IEltYWdlU291cmNlOjpyZXBldGl0aW9u
Q291bnQoKQotewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIGNBbmlt
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
Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fZGVjb2RlciA/IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2RlY29kZXIpIDogMDsKLX0K
LQotQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQotewotICAgIGlmICghaW5pdGlh
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
Z2UubGVha1JlZigpOwotfQotCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdElu
ZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKLSAgICByZXR1
cm4gQ0dJbWFnZVNvdXJjZUdldFN0YXR1c0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCkgPT0ga0NH
SW1hZ2VTdGF0dXNDb21wbGV0ZTsKLX0KLQotZmxvYXQgSW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRp
b25BdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgZmxvYXQgZHVyYXRpb24gPSAwOwotICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJv
cGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0
KCkpKTsKLSAgICBpZiAocHJvcGVydGllcykgewotICAgICAgICBDRkRpY3Rpb25hcnlSZWYgZ2lm
UHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVy
dGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUdJRkRpY3Rpb25hcnkpOwotICAgICAgICBpZiAo
Z2lmUHJvcGVydGllcykgewotICAgICAgICAgICAgaWYgKENGTnVtYmVyUmVmIG51bSA9IChDRk51
bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShnaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3Bl
cnR5R0lGVW5jbGFtcGVkRGVsYXlUaW1lKSkgewotICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUg
dW5jbGFtcGVkIGZyYW1lIGRlbGF5IGlmIGl0IGV4aXN0cy4KLSAgICAgICAgICAgICAgICBDRk51
bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVyYXRpb24pOwotICAgICAg
ICAgICAgfSBlbHNlIGlmIChDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoZ2lmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUdJRkRlbGF5VGltZSkp
IHsKLSAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdGhlIGNsYW1wZWQgZnJhbWUgZGVs
YXkgaWYgdGhlIHVuY2xhbXBlZCBmcmFtZSBkZWxheSBkb2VzIG5vdCBleGlzdC4KLSAgICAgICAg
ICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVyYXRp
b24pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVm
IHBuZ1Byb3BlcnRpZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHBy
b3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQTkdEaWN0aW9uYXJ5KTsKLSAgICAgICAg
aWYgKHBuZ1Byb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGlmIChDRk51bWJlclJlZiBudW0gPSAo
Q0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocG5nUHJvcGVydGllcywgV2ViQ29yZUNH
SW1hZ2VQcm9wZXJ0eUFQTkdVbmNsYW1wZWREZWxheVRpbWUpKQotICAgICAgICAgICAgICAgIENG
TnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUocG5nUHJvcGVydGllcywgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdEZWxh
eVRpbWUpKQotICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJG
bG9hdFR5cGUsICZkdXJhdGlvbik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBNYW55IGFu
bm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFz
IHF1aWNrbHkgYXMgcG9zc2libGUuCi0gICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlv
ciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lm
eQotICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4
OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgotICAgIC8vIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgotICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAgcmV0dXJuIDAu
MWY7Ci0gICAgcmV0dXJuIGR1cmF0aW9uOwotfQotCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsgLy8gRklYTUU6IHdoeSBkb2Vzbid0IHRoaXMgcmV0dXJuIHRydWU/
Ci0KLSAgICBpZiAoIWZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIENGU3RyaW5nUmVmIGltYWdlVHlwZSA9IENHSW1hZ2VTb3VyY2VHZXRU
eXBlKG1fZGVjb2Rlcik7Ci0KLSAgICAvLyBSZXR1cm4gZmFsc2UgaWYgdGhlcmUgaXMgbm8gaW1h
Z2UgdHlwZSBvciB0aGUgaW1hZ2UgdHlwZSBpcyBKUEVHLCBiZWNhdXNlCi0gICAgLy8gSlBFRyBk
b2VzIG5vdCBzdXBwb3J0IGFscGhhIHRyYW5zcGFyZW5jeS4KLSAgICBpZiAoIWltYWdlVHlwZSB8
fCBDRkVxdWFsKGltYWdlVHlwZSwgQ0ZTVFIoInB1YmxpYy5qcGVnIikpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBGSVhNRTogQ291bGQgcmV0dXJuIGZhbHNlIGZvciBvdGhlciBu
b24tdHJhbnNwYXJlbnQgaW1hZ2UgZm9ybWF0cy4KLSAgICAvLyBGSVhNRTogQ291bGQgbWF5YmUg
cmV0dXJuIGZhbHNlIGZvciBhIEdJRiBGcmFtZSBpZiB3ZSBoYXZlIGVub3VnaCBpbmZvIGluIHRo
ZSBHSUYgcHJvcGVydGllcyBkaWN0aW9uYXJ5Ci0gICAgLy8gdG8gZGV0ZXJtaW5lIHdoZXRoZXIg
b3Igbm90IGEgdHJhbnNwYXJlbnQgY29sb3Igd2FzIGRlZmluZWQuCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKLXsKLSAgICBJbnRT
aXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWws
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbihSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikpOwot
ICAgIHJldHVybiBmcmFtZVNpemUud2lkdGgoKSAqIGZyYW1lU2l6ZS5oZWlnaHQoKSAqIDQ7Ci19
Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCmluZGV4
IGJhNDE1OTdhYTExMDFkYjYyOTAyM2QyNzNiMjAwZTc4MWQzM2FhYzkuLjU5Y2MyYzliZThiM2Zm
ZTExMTg2YTY4NWQyZThjZjU5NGMxZDM5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcApA
QCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9y
OjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGlmICgh
ZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgw
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9
IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9
IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwogICAgICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1
dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFs
cGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDIxNTkxNWYyOGExOTIxNzIzOTZk
NDZmMDg2ZDIyNDliODFkOWQ3NmEuLmUxODMzZDE5ODMwYjEwNzY2MzY2NGI2MTI4NDQ1OTdmODNm
YzBhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9J
Y29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29u
SU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLUlj
b246Okljb24oQ0dJbWFnZVJlZiBpbWFnZSkKK0ljb246Okljb24oTmF0aXZlSW1hZ2VQdHIgaW1h
Z2UpCiAgICAgOiBtX2NnSW1hZ2UoaW1hZ2UpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggZmYwNzEzMWE2MWZjZWQwNDU4
NmIzNzJkOWJhMjA3OWE5ODczYzM4Yi4uZmEwMTFhYTg4MTYzMDMwMDA5NDQ5OGViYzBmZmNhOWZi
OWMzMDM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbQpAQCAtOTUsNyArOTUsNyBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6OmdldFRJ
RkZSZXByZXNlbnRhdGlvbigpCiAKICAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJ
bWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKICAgICAgICAgaWYgKGNnSW1hZ2Up
CiAgICAgICAgICAgICBpbWFnZXMuYXBwZW5kKGNnSW1hZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA4
MzVlY2YzZjRmZWVlYjhhMGRmYThkMzY5NzMxMjhmM2I4MDdiOTI2Li40NzA3M2MwZWQ2OTBlMDQ0
ZmZiM2E5NGU1ODZmMjYwMjc5ZDFjNGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1h
Z2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQo
KSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1Np
emUud2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJl
bnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRl
eCAyOWEyMDIzZGI2M2E5MTQzNGMzOTQ4ZWFhNTUyM2JiNjFmZTgxMDc1Li45N2VkMDk3OTM1YzUx
ZmMyMGE4NDVjOTU4ZTE1Njk4ZDIwMDBkYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC05Myw3ICs5Myw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1l
Q291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAg
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgoaSk7Cisg
ICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRl
eChpKTsKICAgICAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCmluZGV4IGJiYWU5MWZh
OGUzYzA2NjQ0N2M0NjRkNmUzMTIwMGRlMjQ4Y2U4M2YuLjkxYzkyZTkxMmNjMjE4OTJmNjU5ZTY3
YTk1OTU3MWZiZGQwMDI3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9EcmFnSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJ
bWFnZU1hYy5tbQpAQCAtOTEsNyArOTEsNyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaQogICAg
IGlmIChpczxCaXRtYXBJbWFnZT4oKmltYWdlKSkgewogICAgICAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uOwogICAgICAgICBCaXRtYXBJbWFnZSYgYml0bWFwSW1hZ2UgPSBkb3duY2Fz
dDxCaXRtYXBJbWFnZT4oKmltYWdlKTsKLSAgICAgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09y
aWVudGF0aW9uID0gYml0bWFwSW1hZ2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbihkZXNjcmlw
dGlvbik7CisgICAgICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IGJpdG1h
cEltYWdlLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKTsKIAogICAgICAgICBpZiAoZGVzY3Jp
cHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bikKICAgICAgICAgICAgIG9yaWVudGF0aW9uID0gYml0bWFwSW1hZ2Uub3JpZW50YXRpb25Gb3JD
dXJyZW50RnJhbWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274038</attachid>
            <date>2016-03-14 15:36:30 -0700</date>
            <delta_ts>2016-03-30 16:44:13 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>image-4.patch</filename>
            <type>text/plain</type>
            <size>23649</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNjcyYWJkLi5lMWY3YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTEg
QEAKIDIwMTYtMDMtMTQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNv
bT4KIAorICAgICAgICBNZXJnZSBDRyBJbWFnZVNvdXJjZSBhbmQgbm9uIENHIEltYWdlU291cmNl
IGltcGxlbWVudGF0aW9uIGluIG9uZSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZpbmcgdGhlIEltYWdlRnJhbWVEYXRhIGNhY2hpbmcgdG8g
SW1hZ2VTb3VyY2UgaXMgaGFyZCB3aXRoIHR3byBzZXBhcmF0ZQorICAgICAgICBpbXBsZW1lbnRh
dGlvbnMgZm9yIHRoZSBzYW1lIGNsYXNzLiBJbWFnZVNvdXJjZS5jcHAgYW5kIEltYWdlU291cmNl
Q0cuY3BwCisgICAgICAgIGhhdmUgYSBsb3Qgb2YgZHVwbGljYXRlZCBjb2RlLiBTbyBtZXJnaW5n
IHRoZW0gaW4gb25lIGZpbGUgd2lsbCByZW1vdmUgdGhlCisgICAgICAgIGR1cGxpY2F0ZWQgY29k
ZSBhbmQgaXQgaXMgYSBzdGVwIGZvcndhcmQgZm9yIHRoZSBhc3luY2hyb25vdXMgaW1hZ2UgZGVj
b2RpbmcuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybUFw
cGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjppc1NpemVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5n
T3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNv
ZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1l
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6aW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om1heFBpeGVs
c1BlckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6c2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcDogRGVsZXRl
ZC4KKworMjAxNi0wMy0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUs
Y29tPgorCiAgICAgICAgIFJlbmFtZSBGcmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1v
dmUgaXQgdG8gYSBzZXBhcmF0ZSBmaWxlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTU0NDQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21h
a2UKaW5kZXggN2IzNjdhNy4uYjA5YjYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2lu
LmNtYWtlCkBAIC03Miw3ICs3Miw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lu
dFJlY3RDRy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggZGFjZGE1Ni4uNDAxMzVi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTQwMSw3ICs0MDEsNiBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMTNlOWI4Li45YWNhNzA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC01MDA2LDcgKzUwMDYsNiBAQAogCQlCMjc1MzU1QTBCMDUzODE0MDAyQ0U2NEYgLyog
RmxvYXRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLzsgfTsK
IAkJQjI3NTM1NUIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTJEMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi87IH07CiAJCUIyNzUzNTVFMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLzsgfTsKLQkJ
QjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzEwQjA1MzgxNDAwMkNF
NjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovOyB9OwogCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2
NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi87
IH07CiAJCUIyNzUzNTYxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzMwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYyMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbnRTaXplQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi87IH07
CkBAIC0xMjkxMyw3ICsxMjkxMiw2IEBACiAJCUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBG
bG9hdFJlY3RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxv
YXRSZWN0Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUyRDBCMDUz
ODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZsb2F0U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAv
KiBJbnRQb2ludENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnRQb2ludENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzMwQjA1
MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW50UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxODQzLDcgKzIxODQxLDYgQEAKIAkJCQlCMjc1MzUzMDBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8sCiAJCQkJNTU5QkI4NzcxQzk2NDY1ODAwMjQxM0NEIC8q
IEltYWdlRGVjb2Rlci5jcHAgKi8sCiAJCQkJNTU5QkI4NzgxQzk2NDY1ODAwMjQxM0NEIC8qIElt
YWdlRGVjb2Rlci5oICovLAotCQkJCUIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNv
dXJjZUNHLmNwcCAqLywKIAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3Vy
Y2VDRy5oICovLAogCQkJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNH
TWFjLm1tICovLAogCQkJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNw
cCAqLywKQEAgLTMwMDc2LDcgKzMwMDczLDYgQEAKIAkJCQkyRDVBNTkyRjE1MjUyNTIzMDAzNkVF
NTEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTFBMkY0MTE3
RDdENURFMDA3MjUxN0EgLyogSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0dNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExNzBFNkUxREE3MDBCRjYw
ODggLyogSW1wbGljaXRBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU5NjFDNTQx
OEFEMzM4NTAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
aW5kZXggMmZmYTQwZS4uMmM2YTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwLnRva2VyQGNvbGxhYm9yYS5jby51az4KICAq
IENvcHlyaWdodCAoQykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jCkBAIC0yOSw4ICsyOSw2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKIAotI2lm
ICFVU0UoQ0cpCi0KICNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKIAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKQEAgLTM4LDE1ICszNiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotdW5zaWduZWQgSW1h
Z2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlID0gMTAyNCAqIDEwMjQ7Ci0jZW5k
aWYKLQogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIDogbV9kZWNvZGVyKDApCi0gICAgLCBtX2FscGhh
T3B0aW9uKGFscGhhT3B0aW9uKQorI2lmICFVU0UoQ0cpCisgICAgOiBtX2FscGhhT3B0aW9uKGFs
cGhhT3B0aW9uKQogICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKKyNlbmRpZgogeworI2lmIFVTRShDRykKKyAgICBVTlVTRURfUEFS
QU0oYWxwaGFPcHRpb24pOworICAgIFVOVVNFRF9QQVJBTShnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik7CisjZW5kaWYKKwogfQogCiBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKQEAgLTU0
LDEyNyArNTQsMjAyIEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIGNsZWFyKHRy
dWUpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVf
dCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBJbWFn
ZUZyYW1lSW5kZXggY2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKLSAgICBpZiAoIWRlc3Ryb3lBbGwpIHsKKyAgICBpZiAoIWRlc3Ry
b3lBbGxGcmFtZXMpIHsKKyNpZiBVU0UoQ0cpCisgICAgICAgIC8vIFJlY2VudCB2ZXJzaW9ucyBv
ZiBJbWFnZUlPIGRpc2NhcmQgcHJldmlvdXNseSBkZWNvZGVkIGltYWdlIGZyYW1lcyBpZiB0aGUg
Y2xpZW50CisgICAgICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxvbmdlciBob2xkcyByZWZlcmVuY2Vz
IHRvIHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5CisgICAgICAgIC8vIHRo
ZSBkZWNvZGVyIHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5IGFza2VkIHRvIGRlc3Ryb3kgYWxsIG9m
IHRoZSBmcmFtZXMuCisgICAgICAgIFVOVVNFRF9QQVJBTShjbGVhckJlZm9yZUZyYW1lKTsKKyNl
bHNlCiAgICAgICAgIGlmIChtX2RlY29kZXIpCiAgICAgICAgICAgICBtX2RlY29kZXItPmNsZWFy
RnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKKyNlbmRpZgogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgZGVsZXRlIG1fZGVjb2RlcjsKLSAgICBtX2RlY29kZXIgPSAwOwor
ICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAgICAgaWYgKGRhdGEpCiAgICAgICAgIHNldERhdGEo
ZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KLQotdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorICAgIAordm9pZCBJbWFn
ZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqIGRhdGEpCiB7Ci0g
ICAgLy8gTWFrZSB0aGUgZGVjb2RlciBieSBzbmlmZmluZyB0aGUgYnl0ZXMuCi0gICAgLy8gVGhp
cyBtZXRob2Qgd2lsbCBleGFtaW5lIHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5j
ZSBvZiB0aGUgYXBwcm9wcmlhdGUgZGVjb2RlciBwbHVnaW4uCi0gICAgLy8gSWYgaW5zdWZmaWNp
ZW50IGJ5dGVzIGFyZSBhdmFpbGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBk
ZWNvZGVyIHBsdWdpbiB3aWxsIGJlCi0gICAgLy8gbWFkZS4KLSAgICBpZiAoIW1fZGVjb2Rlcikg
ewotICAgICAgICBtX2RlY29kZXIgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbWFnZURlY29kZXJQdHI+
KE5hdGl2ZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBtX2FscGhhT3B0aW9uLCBtX2dhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgaWYgKG1fZGVjb2RlcikKKyAgICAgICAgcmV0
dXJuOworI2lmIFVTRShDRykKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgbV9kZWNvZGVy
ID0gbmV3IEltYWdlRGVjb2RlcigpOworI2Vsc2UKKyAgICBtX2RlY29kZXIgPSBzdGF0aWNfY2Fz
dDxOYXRpdmVJbWFnZURlY29kZXJQdHI+KE5hdGl2ZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRh
LCBtX2FscGhhT3B0aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAjaWYgRU5B
QkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICAgICAgaWYgKG1fZGVjb2RlciAm
JiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSkKLSAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0
TWF4TnVtUGl4ZWxzKHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTsKLSNlbmRpZgotICAgIH0K
LQogICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0YShkYXRhLCBh
bGxEYXRhUmVjZWl2ZWQpOwotfQotCi1TdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFt
ZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CisgICAgICAgIG1fZGVjb2Rlci0+c2V0TWF4TnVtUGl4
ZWxzKHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTsKKyNlbmRpZgorI2VuZGlmCisgICAgCiB9
CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShmbG9hdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNldERh
dGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICByZXR1
cm4gMDsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBlbnN1cmVE
ZWNvZGVySXNDcmVhdGVkKGRhdGEpOworICAgIGlmICghbV9kZWNvZGVyKSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1f
ZGVjb2Rlci0+c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi1ib29sIEltYWdl
U291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorYm9v
bCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFs
c2U7Ci19CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgaWYgKCFtX3NpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
Ym9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKLXsKLSAgICByZXR1cm4gbV9kZWNv
ZGVyICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCk7CisgICAgaWYgKCFtX2RlY29kZXIt
PmlzU2l6ZUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgbV9z
aXplID0gZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKKyAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50
YXRpb24gPSBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CisgICAgcmV0dXJuIGlzU2l6
ZUF2YWlsYWJsZSgpID8gbV9zaXplIDogSW50U2l6ZSgpOwogfQotICAgIAorCiBJbnRTaXplIElt
YWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CisgICAg
cmV0dXJuIGlzU2l6ZUF2YWlsYWJsZSgpID8gbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uIDog
SW50U2l6ZSgpOwogfQotCi1JbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVt
IHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAotewotICAgIGlmICghaW5pdGlh
bGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoKTsKLQotICAgIEludFNpemUgc2l6ZSA9
IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCk7Ci0gICAgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbiA9IG1fZGVjb2Rlci0+b3JpZW50YXRpb24oKTsKLQotICAgIHJldHVybiBz
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAm
JiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgp
IDogc2l6ZTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90
U3BvdCkgY29uc3QKKyAgICAKK1N1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vi
c2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVy
LT5ob3RTcG90KGhvdFNwb3QpIDogZmFsc2U7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBJbWFn
ZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShzY2FsZSwgbWF4aW11bVN1YnNhbXBs
aW5nTGV2ZWwpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2NhbGUpOworICAgIFVOVVNFRF9Q
QVJBTShtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0K
LQorICAgIAogc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3Bl
cnRpZXMoKSBjb25zdAogeworI2lmIFVTRShDRykKKyAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpi
eXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKKyNlbHNlCiAgICAgcmV0dXJuIDA7
CisjZW5kaWYKIH0KLQorICAgIAogaW50IEltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQoKQog
ewotICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDog
Y0FuaW1hdGlvbk5vbmU7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorI2lmIFVTRShDRykKKyAg
ICAgICAgcmV0dXJuIGNBbmltYXRpb25Mb29wT25jZTsKKyNlbHNlCisgICAgICAgIHJldHVybiBj
QW5pbWF0aW9uTm9uZTsKKyNlbmRpZgorICAgIHJldHVybiBtX2RlY29kZXItPnJlcGV0aXRpb25D
b3VudCgpOwogfQotCisgICAgCiBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25z
dAogewotICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7
CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7
Cit9CisgICAgCitTdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigp
IDogU3RyaW5nKCk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQorYm9vbCBJ
bWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK3sKKyAgICBp
ZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBVU0UoQ0cpCisg
ICAgYm9vbCByZXN1bHQgPSBtX2RlY29kZXItPmdldEhvdFNwb3QoaG90U3BvdCk7CisjZWxzZQor
ICAgIGJvb2wgcmVzdWx0ID0gbV9kZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOworI2VuZGlmCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKyAgICAKK1Bhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJj
ZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBVU0UoQ0cpCisgICAg
ICAgIHJldHVybiBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN1YnNhbXBsaW5nTGV2ZWwp
OwogCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5k
ZXgoaW5kZXgpOwogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VG
cmFtZTo6RnJhbWVFbXB0eSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Ig
c29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KKyAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2Fu
IGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuCiAgICAgLy8gZW1w
dHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiAwOwotCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAK
ICAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gIEZv
ciBzb21lIHBvcnRzLCB0aGUgZGF0YQogICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUgY29u
dGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgogICAgIHJldHVy
biBidWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyNlbmRpZgogfQogCi1mbG9hdCBJbWFnZVNv
dXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBJbWFnZVNvdXJj
ZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChJbWFnZUZyYW1lSW5kZXggaW5kZXgpCiB7Ci0gICAg
aWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghaW5pdGlhbGl6ZWQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIFVTRShDRykKKyAgICByZXR1cm4gaW5pdGlh
bGl6ZWQoKSAmJiBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOworI2Vs
c2UKKyAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRl
eChpbmRleCk7CisgICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1cygpID09IEltYWdl
RnJhbWU6OkZyYW1lQ29tcGxldGU7CisjZW5kaWYKK30KKworYm9vbCBJbWFnZVNvdXJjZTo6ZnJh
bWVIYXNBbHBoYUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4IGluZGV4KQoreworICAgIGlmICghaW5p
dGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIG1fZGVj
b2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworfQorICAgIAorYm9vbCBJbWFnZVNv
dXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KEltYWdlRnJhbWVJbmRleCBpbmRl
eCkgY29uc3QKK3sKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9k
ZWNvZGVyLT5hbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoaW5kZXgpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oaW5kZXgpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQogCitm
bG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4IGlu
ZGV4KQoreworICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisjaWYg
VVNFKENHKQorICAgIHJldHVybiBtX2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4
KTsKKyNlbHNlCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZl
ckF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0g
SW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKICAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICAKICAgICAv
LyBNYW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdl
IGZsYXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCiAgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gn
cyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRo
YXQgc3BlY2lmeQogICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3By
b2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgpAQCAtMTgzLDM2
ICsyNTgsNDcgQEAgZmxvYXQgSW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVf
dCBpbmRleCkKICAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCiAgICAgICAgIHJldHVybiAwLjEw
MGY7CiAgICAgcmV0dXJuIGR1cmF0aW9uOworI2VuZGlmCiB9Ci0KLUltYWdlT3JpZW50YXRpb24g
SW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+b3JpZW50YXRpb24oKSA6IERlZmF1bHRJbWFnZU9y
aWVudGF0aW9uOwotfQotCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QgaW5kZXgpCisgICAgCitJbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRh
dGlvbkF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4IGluZGV4KSBjb25zdAogewotICAgIGlmICghbV9k
ZWNvZGVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5mcmFt
ZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgaWYgKGluaXRpYWxpemVkKCkpCisgICAgICAg
IHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJu
IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGluZGV4KTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5vcmllbnRhdGlvbigpOworI2Vu
ZGlmCiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90
IGluZGV4KQordW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KEltYWdlRnJh
bWVJbmRleCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAog
ewotICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbWFn
ZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0g
ICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1l
Q29tcGxldGU7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gMDsKKyNp
ZiBVU0UoQ0cpCisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3Vic2FtcGxpbmdM
ZXZlbCk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgpOwor
I2VuZGlmCiB9CiAKLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CitJbnRTaXplIEltYWdlU291cmNlOjpm
cmFtZVNpemVBdEluZGV4KEltYWdlRnJhbWVJbmRleCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBtX2RlY29kZXItPmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4
KTsKKyAgICBpZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7Cisj
aWYgVVNFKENHKQorICAgIEludFNpemUgc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbiA9IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIEludFNpemUgc2l6ZSA9IG1fZGVj
b2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiA9IG1fZGVjb2Rlci0+b3JpZW50YXRpb24oKTsKKyNlbmRpZgorICAgIHJldHVybiBz
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAm
JiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgp
IDogc2l6ZTsKIH0KIAogfQogCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggOTBiNDI5My4uZWZiMTE4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTI3LDEyICsyNywxNCBAQAogI2lmbmRlZiBJbWFnZVNvdXJjZV9oCiAjZGVmaW5lIEltYWdlU291
cmNlX2gKIAorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmll
bnRhdGlvbi5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShDRykK
IHR5cGVkZWYgc3RydWN0IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7CkBAIC02OCw5
ICs3MCw2IEBAIGNvbnN0IGludCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNB
bmltYXRpb25Mb29wSW5maW5pdGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0y
OwogCi0vLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYg
ZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xl
dmVsOwotCiBjbGFzcyBJbWFnZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1h
Z2VTb3VyY2UpOwogcHVibGljOgpAQCAtMTA4LDYzICsxMDcsNDkgQEAgcHVibGljOgogICAgIC8v
IHdobyBzZXQgfGRlc3Ryb3lBbGx8IHRvIHRydWUgaWYgdGhleSB3aXNoIHRvIGJlIGFibGUgdG8g
Y29udGludWUgdXNpbmcKICAgICAvLyB0aGUgSW1hZ2VTb3VyY2UuICBUaGlzIHdheSBpbXBsZW1l
bnRhdGlvbnMgd2hpY2ggY2hvb3NlIHRvIGRlc3Ryb3kgdGhlaXIKICAgICAvLyBkZWNvZGVycyBp
biBzb21lIGNhc2VzIGNhbiByZWNvbnN0cnVjdCB0aGVtIGNvcnJlY3RseS4KLSAgICB2b2lkIGNs
ZWFyKGJvb2wgZGVzdHJveUFsbCwKLSAgICAgICAgICAgICAgIHNpemVfdCBjbGVhckJlZm9yZUZy
YW1lID0gMCwKLSAgICAgICAgICAgICAgIFNoYXJlZEJ1ZmZlciogZGF0YSA9IE5VTEwsCi0gICAg
ICAgICAgICAgICBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKKyAgICB2b2lkIGNsZWFy
KGJvb2wgZGVzdHJveUFsbCwgSW1hZ2VGcmFtZUluZGV4IGNsZWFyQmVmb3JlRnJhbWUgPSAwLCBT
aGFyZWRCdWZmZXIqIGRhdGEgPSBudWxscHRyLCBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNl
KTsKIAogICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0K
IAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKLSAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKIAotICAgIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0LCBTdWJzYW1wbGluZ0xl
dmVsKSBjb25zdDsKLSAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXpl
X3QpIGNvbnN0OwotCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKLSAgICAvLyBBbHdheXMg
b3JpZ2luYWwgc2l6ZSwgd2l0aG91dCBzdWJzYW1wbGluZy4KKyAgICBib29sIGlzU2l6ZUF2YWls
YWJsZSgpIGNvbnN0OwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgIEludFNpemUgc2l6
ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0OwotICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxs
eSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05v
dFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdDsKLQotICAgIGJvb2wgZ2V0SG90U3BvdChJ
bnRQb2ludCYpIGNvbnN0OwogCisgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
Rm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0OwogICAgIHNpemVfdCBieXRl
c0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdDsKIAotICAgIGludCByZXBldGl0
aW9uQ291bnQoKTsKLQogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7CisgICAgaW50IHJl
cGV0aXRpb25Db3VudCgpOworICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Owor
ICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGVycyBz
aG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBp
bmRleDsKLSAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBQYXNzTmF0
aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gMCk7Ci0KLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwotICAg
IGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhl
IGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgotICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVs
eSBkZWNvZGVkLgotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVf
dCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KKyAgICBQYXNzTmF0aXZlSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsID0gMCk7CiAKLSAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZGVj
b2RlZCBmcmFtZS4gSWYgdGhlIGZyYW1lIGlzIG5vdCB5ZXQKLSAgICAvLyBkZWNvZGVkIHRoZW4g
cmV0dXJuIDAuCi0gICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gMCkgY29uc3Q7CisgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KElt
YWdlRnJhbWVJbmRleCk7CisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChJbWFnZUZyYW1l
SW5kZXgpOworICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KEltYWdlRnJh
bWVJbmRleCkgY29uc3Q7CisgICAgCisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoSW1h
Z2VGcmFtZUluZGV4KTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChJ
bWFnZUZyYW1lSW5kZXgpIGNvbnN0OwogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKLSAgICBzdGF0aWMgdW5zaWduZWQgbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKCkg
eyByZXR1cm4gc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UodW5zaWduZWQgbWF4UGl4ZWxzKSB7IHNfbWF4UGl4
ZWxzUGVyRGVjb2RlZEltYWdlID0gbWF4UGl4ZWxzOyB9Ci0jZW5kaWYKKyAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChJbWFnZUZyYW1lSW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBj
b25zdDsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoSW1hZ2VGcmFtZUluZGV4LCBTdWJz
YW1wbGluZ0xldmVsID0gMCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVE
ZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciopOwogICAgIAogICAgIE5hdGl2ZUltYWdlRGVj
b2RlclB0ciBtX2RlY29kZXIgeyBudWxscHRyIH07Ci0KKyAgICBtdXRhYmxlIEludFNpemUgbV9z
aXplOworICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247Cisg
ICAgCiAjaWYgIVVTRShDRykKLSAgICBBbHBoYU9wdGlvbiBtX2FscGhhT3B0aW9uOwotICAgIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb247Ci0j
ZW5kaWYKKyAgICBBbHBoYU9wdGlvbiBtX2FscGhhT3B0aW9uIHsgQWxwaGFQcmVtdWx0aXBsaWVk
IH07CisgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gbV9nYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiB7IEdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCB9OwogI2lmIEVOQUJMRShJTUFH
RV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIHNfbWF4UGl4ZWxz
UGVyRGVjb2RlZEltYWdlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX21heFBpeGVsc1Bl
ckRlY29kZWRJbWFnZSA9IDEwMjQgKiAxMDI0OworI2VuZGlmCiAjZW5kaWYKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275237</attachid>
            <date>2016-03-30 16:44:16 -0700</date>
            <delta_ts>2016-03-30 18:14:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160330164420.patch</filename>
            <type>text/plain</type>
            <size>35224</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE2LTAzLTMwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVyZ2UgQ0cg
SW1hZ2VTb3VyY2UgYW5kIG5vbiBDRyBJbWFnZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBpbiBvbmUg
ZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
NDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWZ0
ZXIgbW92aW5nIHRoZSBDRyBpbWFnZSBkZWNvZGluZyBjb2RlIHRvIGZyb20gSW1hZ2VTb3VyY2VD
Ry5jcHAgdG8KKyAgICAgICAgSW1hZ2VEZWNvZGVyQ0cuaCBhbmQgLmNwcCwgSW1hZ2VTb3VyY2Ug
Zm9yIENHIGFuZCBDRyBjb2RlIHBhdGhzIGxvb2sKKyAgICAgICAgdmVyeSBzaW1pbGFyLiBBbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgY2FuIGJlIG1vdmVkIHRvIEltYWdlRGVjb2RlckNH
CisgICAgICAgIGNsYXNzZXMuIFNvIHdlIGNhbiBoYXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0
Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0CisgICAgICAgIHJpZCBvZiBJbWFnZVNvdXJjZUNH
LmNwcC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgd29yayBpcyBhIHN0ZXAgdG93YXJkcyB0
aGUgYXN5bmNocm9ub3VzIGltYWdlIGRlY29kaW5nIGZlYXR1cmUuCisgICAgICAgIFRoZSBwdXJw
b3NlIG9mIHRoaXMgbWVyZ2UgaXMgdG8gbWFrZSBlYXN5IHRvIG1vdmUgY2FjaGluZyB0aGUgRnJh
bWVEYXRhCisgICAgICAgIGZyb20gQml0bWFwSW1hZ2UgdG8gSW1hZ2VTb3VyY2UuCisgICAgICAg
IAorICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6CisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpJbWFnZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6fkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpj
bGVhckZyYW1lQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om1heGltdW1TdWJzYW1wbGluZ0xl
dmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9y
U2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdP
ZkZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09y
aWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVsc1Bl
ckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3Nh
cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Omlnbm9yZXNHYW1tYUFuZENv
bG9yUHJvZmlsZSk6CisKIDIwMTYtMDMtMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICAtd2Via2l0LXRleHQtdW5kZXJsaW5lLXBvc2l0aW9uOiB1bmRlcjsgZG9lcyBu
b3Qgd29yayBpbiBUb1QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQko
cmV2aXNpb24gMTk4ODQ5KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFr
ZQkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShy
ZXZpc2lvbiAxOTg4NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtNDA2LDcgKzQwNiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbnRSZWN0Q0cuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTg4NDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQ5ODEsNyArNDk4MSw2IEBACiAJCUIyNzUzNTVBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJl
Y3RDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Mjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1
MzU1QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8q
IEZsb2F0U2l6ZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NUUwQjA1MzgxNDAwMkNFNjRGIC8qIElt
YWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovOyB9OwotCQlCMjc1MzU1
RjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyog
SW1hZ2VTb3VyY2VDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYwMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLzsgfTsKIAkJ
QjI3NTM1NjEwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMzBCMDUzODE0MDAyQ0U2NEYg
LyogSW50UmVjdENHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjIwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemVDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjc1MzUzNDBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCAqLzsgfTsKQEAgLTEy
ODY2LDcgKzEyODY1LDYgQEAKIAkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVj
dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJlY3RD
Ry5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTJEMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRmxvYXRTaXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1
MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZVNvdXJjZUNHLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBv
aW50Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFBvaW50
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMzBCMDUzODE0MDAy
Q0U2NEYgLyogSW50UmVjdENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnRSZWN0Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUz
NDBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnRTaXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjE3NzcsNyArMjE3NzUsNiBAQAogCQkJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAv
KiBJbWFnZUNHLmNwcCAqLywKIAkJCQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VE
ZWNvZGVyQ0cuY3BwICovLAogCQkJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURl
Y29kZXJDRy5oICovLAotCQkJCUIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJj
ZUNHLmNwcCAqLywKIAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VD
Ry5oICovLAogCQkJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFj
Lm1tICovLAogCQkJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAq
LywKQEAgLTI5OTg2LDcgKzI5OTgzLDYgQEAKIAkJCQkyRDVBNTkyRjE1MjUyNTIzMDAzNkVFNTEg
LyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTFBMkY0MTE3RDdE
NURFMDA3MjUxN0EgLyogSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNEIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291
cmNlQ0dNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExNzBFNkUxREE3MDBCRjYwODgg
LyogSW1wbGljaXRBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU5NjFDNTQxOEFE
MzM4NTAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwCShyZXZpc2lvbiAxOTg4NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28u
dWs+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYwpAQCAtMjks
MTkgKzI5LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2Uu
aCIKIAotI2lmICFVU0UoQ0cpCi0KKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVy
Q0cuaCIKKyNlbHNlCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKIAogI2luY2x1
ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBM
SU5HKQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlID0g
MTAyNCAqIDEwMjQ7Ci0jZW5kaWYKLQogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291
cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9hbHBoYU9w
dGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24oZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCkBAIC01MCwxNCArNDgsMjYgQEAgSW1hZ2VTb3VyY2U6
OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbAogCiBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNl
KCkKIHsKLSAgICBjbGVhcih0cnVlKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9v
bCBkZXN0cm95QWxsLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyRnJhbWVDYWNo
ZShzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSkKIHsKLSAgICBpZiAoIWRlc3Ryb3lBbGwpIHsKLSAg
ICAgICAgaWYgKG1fZGVjb2RlcikKLSAgICAgICAgICAgIG1fZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1
ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJhbWUpOworICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworI2lmIFVTRShDRykKKyAgICBVTlVTRURfUEFSQU0oY2xlYXJCZWZvcmVG
cmFtZSk7CisjZWxzZQorICAgIG1fZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFy
QmVmb3JlRnJhbWUpOworI2VuZGlmCit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wg
ZGVzdHJveUFsbEZyYW1lcywgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgLy8gUmVjZW50IHZlcnNpb25zIG9m
IEltYWdlSU8gZGlzY2FyZCBwcmV2aW91c2x5IGRlY29kZWQgaW1hZ2UgZnJhbWVzIGlmIHRoZSBj
bGllbnQKKyAgICAvLyBhcHBsaWNhdGlvbiBubyBsb25nZXIgaG9sZHMgcmVmZXJlbmNlcyB0byB0
aGVtLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheQorICAgIC8vIHRoZSBkZWNvZGVy
IHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5IGFza2VkIHRvIGRlc3Ryb3kgYWxsIG9mIHRoZSBmcmFt
ZXMuCisgICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKSB7CisgICAgICAgIGNsZWFyRnJhbWVDYWNo
ZShjbGVhckJlZm9yZUZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzcsMTAg
Kzg3LDYgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZAogICAgIC8v
IElmIGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRldGVybWluZSB0aGUgaW1h
Z2UgdHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQogICAgIC8vIG1hZGUuCiAgICAgbV9k
ZWNvZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05f
U0FNUExJTkcpCi0gICAgaWYgKG1fZGVjb2RlciAmJiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFn
ZSkKLSAgICAgICAgbV9kZWNvZGVyLT5zZXRNYXhOdW1QaXhlbHMoc19tYXhQaXhlbHNQZXJEZWNv
ZGVkSW1hZ2UpOwotI2VuZGlmCiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKQEAgLTk5LDIxICsxMDUsNiBAQCB2
b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogCiAgICAgICAgIG1fZGVjb2Rl
ci0+c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi1TdHJpbmcgSW1hZ2VTb3Vy
Y2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kZWNvZGVyID8g
bV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7Ci19Ci0KLVN1YnNhbXBs
aW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCkgY29u
c3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1w
bGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCiB7CiAgICAgcmV0dXJuIGlu
aXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKTsKQEAgLTEyOSwxNSAr
MTIwLDE0IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW4KICAgICBy
ZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CiB9
CiAKLUludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pIGNvbnN0CitzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQo
KSBjb25zdAogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsK
K30KIAotICAgIEludFNpemUgc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRl
eCk7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IG1fZGVjb2Rlci0+b3JpZW50
YXRpb24oKTsKLSAgICAKLSAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24g
PT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWln
aHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7CitpbnQgSW1hZ2VTb3VyY2U6OnJl
cGV0aXRpb25Db3VudCgpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
PnJlcGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CiB9CiAKIGJvb2wgSW1hZ2VTb3Vy
Y2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CkBAIC0xNDUsNjIgKzEzNSw2
OSBAQCBib29sIEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBoCiAgICAgcmV0dXJu
IGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOwogfQogCi1zaXpl
X3QgSW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0
CitTdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVF
eHRlbnNpb24oKSA6IFN0cmluZygpOwogfQogCi1pbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25D
b3VudCgpCitzaXplX3QgSW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVy
dGllcygpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRp
b25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CisgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6Ynl0
ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJj
ZTo6ZnJhbWVDb3VudCgpIGNvbnN0CitTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpjYWxj
dWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluaXRp
YWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CisgICAgaWYgKCFtX2FsbG93
U3Vic2FtcGxpbmcgfHwgIWFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleCgwKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAvLyBWYWx1ZXMgY2hvc2VuIHRvIGJlIGFwcHJvcHJpYXRlIGZv
ciBpT1MuCisgICAgY29uc3QgaW50IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcg
PSA1ICogMTAyNCAqIDEwMjQ7CisgICAgY29uc3QgU3Vic2FtcGxpbmdMZXZlbCBtYXhTdWJzYW1w
bGluZ0xldmVsID0gMzsKKworICAgIFN1YnNhbXBsaW5nTGV2ZWwgY3VycmVudExldmVsID0gMDsK
KyAgICBmb3IgKCA7IGN1cnJlbnRMZXZlbCA8PSBtYXhTdWJzYW1wbGluZ0xldmVsOyArK2N1cnJl
bnRMZXZlbCkgeworICAgICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgo
MCwgY3VycmVudExldmVsKTsKKyAgICAgICAgaWYgKGZyYW1lU2l6ZS5hcmVhKCkgPCBjTWF4aW11
bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBjdXJyZW50TGV2ZWw7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdl
U291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwpCitTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdM
ZXZlbCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMg
Zm9yIHNvbWUgcG9ydHMuICBJZiB3ZSBoYXZlIGFuCi0gICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5z
aW9uLCBqdXN0IGJhaWwuCi0gICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgp
OworfQogCi0gICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0
SW5kZXgoaW5kZXgpOwotICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CitTdWJzYW1wbGlu
Z0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNj
YWxlKHNjYWxlLCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpKTsKK30KIAotICAgIC8vIFJldHVy
biB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUgcG9ydHMs
IHRoZSBkYXRhCi0gICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0
aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCi0gICAgcmV0dXJuIGJ1ZmZlci0+YXNO
ZXdOYXRpdmVJbWFnZSgpOworYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJh
bWVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQo
KSAmJiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRleCk7CiB9
CiAKLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgp
CitJbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVu
dW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFpbml0
aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4
KTsKLSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZy
YW1lRW1wdHkpCi0gICAgICAgIHJldHVybiAwOworICAgIEludFNpemUgc2l6ZSA9IG1fZGVjb2Rl
ci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CisgICAg
cmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9z
ZWRTaXplKCkgOiBzaXplOworfQogCi0gICAgLy8gTWFueSBhbm5veWluZyBhZHMgc3BlY2lmeSBh
IDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBvc3NpYmxl
LgotICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94J3MgYmVoYXZpb3IgYW5kIHVzZSBhIGR1cmF0aW9u
IG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0aGF0IHNwZWNpZnkKLSAgICAvLyBhIGR1cmF0aW9u
IG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzc2ODkzMDA+IGFuZCA8aHR0cDovL3dl
YmtpdC5vcmcvYi8zNjA4Mj4KLSAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBjb25z
dCBmbG9hdCBkdXJhdGlvbiA9IGJ1ZmZlci0+ZHVyYXRpb24oKSAvIDEwMDAuMGY7Ci0gICAgaWYg
KGR1cmF0aW9uIDwgMC4wMTFmKQotICAgICAgICByZXR1cm4gMC4xMDBmOwotICAgIHJldHVybiBk
dXJhdGlvbjsKK3Vuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK3sKKyAgICBJ
bnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwpOworICAgIHJldHVybiBmcmFtZVNpemUuYXJlYSgpICogNDsKIH0KIAotSW1hZ2VPcmllbnRh
dGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QKK2Jvb2wg
SW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAg
IHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbigpIDogSW1hZ2VP
cmllbnRhdGlvbigpOworICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+ZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKQEAgLTIwOCwxOCArMjA1LDI0IEBAIGJvb2wg
SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHMKICAgICByZXR1cm4gIWluaXRpYWxp
emVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CiB9CiAKLWJv
b2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorZmxv
YXQgSW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKK3sKKyAg
ICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0SW5kZXgo
aW5kZXgpIDogMDsKK30KKworSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRp
b25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoIWluaXRpYWxpemVkKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24o
KTsKIAotICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdElu
ZGV4KGluZGV4KTsKLSAgICByZXR1cm4gYnVmZmVyICYmIGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1h
Z2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5vcmllbnRhdGlv
bkF0SW5kZXgoaW5kZXgpOwogfQotCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAorICAgIAorTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBpbml0
aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCkgOiAwOworICAg
IGlmICghaW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwpOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdApA
QCAtMjMzLDUgKzIzNiwzIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMp
IGMKIH0KICAgICAKIH0KLQotI2VuZGlmIC8vIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkocmV2aXNpb24gMTk4ODQ5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBnZXRIb3RTcG90
KEludFBvaW50JikgY29uc3Q7CiAKLSAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQ
cm9wZXJ0aWVzKCkgY29uc3Q7CisgICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVy
bWluZVByb3BlcnRpZXMoKTsKIAogICAgIGludCByZXBldGl0aW9uQ291bnQoKTsKIApAQCAtMTUy
LDEyICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgLy8gZGVjb2RlZCB0aGVuIHJldHVybiAwLgogICAg
IHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAp
IGNvbnN0OwogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBz
dGF0aWMgdW5zaWduZWQgbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKCkgeyByZXR1cm4gc19tYXhQ
aXhlbHNQZXJEZWNvZGVkSW1hZ2U7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRNYXhQaXhlbHNQZXJE
ZWNvZGVkSW1hZ2UodW5zaWduZWQgbWF4UGl4ZWxzKSB7IHNfbWF4UGl4ZWxzUGVyRGVjb2RlZElt
YWdlID0gbWF4UGl4ZWxzOyB9Ci0jZW5kaWYKLQogcHJpdmF0ZToKKyAgICB2b2lkIGNsZWFyRnJh
bWVDYWNoZShzaXplX3QpOwogICAgIHZvaWQgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRC
dWZmZXIqKTsKICAgICBTdWJzYW1wbGluZ0xldmVsIGNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGlu
Z0xldmVsKCkgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mKSBjb25zdDsKQEAgLTE3
MCwxMyArMTY2LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyB7IGZh
bHNlIH07CiAjZW5kaWYKIAotI2lmICFVU0UoQ0cpCiAgICAgQWxwaGFPcHRpb24gbV9hbHBoYU9w
dGlvbjsKICAgICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uOwotI2VuZGlmCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElO
RykKLSAgICBzdGF0aWMgdW5zaWduZWQgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7Ci0jZW5k
aWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHJldmlzaW9uIDE5ODg0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAzLDYgKzMwMyw3IEBAIGZsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgKIAogYm9vbCBJbWFnZURlY29kZXI6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleChzaXplX3QpIGNvbnN0CiB7CisjaWYgUExBVEZPUk0oSU9TKQogICAgIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5
UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCAwLCBpbWFnZVNvdXJjZU9w
dGlvbnMoKS5nZXQoKSkpOwogICAgIGlmICghcHJvcGVydGllcykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMzIxLDYgKzMyMiw5IEBAIGJvb2wgSW1hZ2VEZWNvZGVyOjphbGxvd1N1YnNhbXBs
aW5nT2ZGcmEKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0
SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCShyZXZpc2lvbiAxOTg4NDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlciB7CiBw
dWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyKCk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZURlY29kZXI+IGNyZWF0ZSgpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRp
b24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlRGVjb2Rlcj4oKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHLmNwcAkocmV2aXNpb24gMTk4ODQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjE1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdl
U291cmNlLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgotCi0j
aW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSW1h
Z2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3Vy
Y2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotewotICAgIC8vIEZJWE1FOiBBbHBoYU9w
dGlvbiBhbmQgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gYXJlIGlnbm9yZWQuCi19Ci0KLUlt
YWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQotewotICAgIGNsZWFyKHRydWUpOwotfQotCi12b2lk
IEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGxGcmFtZXMsIHNpemVfdCwgU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICAvLyBSZWNlbnQgdmVy
c2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBmcmFtZXMg
aWYgdGhlIGNsaWVudAotICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxvbmdlciBob2xkcyByZWZlcmVu
Y2VzIHRvIHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5Ci0gICAgLy8gdGhl
IGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQgdG8gZGVzdHJveSBhbGwgb2Yg
dGhlIGZyYW1lcy4KLSAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fZGVjb2RlciA9IG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKGRhdGEpCi0gICAgICAg
IHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLSAgICAKLXZvaWQgSW1hZ2VTb3Vy
Y2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKikKLXsKLSAgICBpZiAoaW5p
dGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZGVjb2RlciA9IEltYWdlRGVjb2Rl
cjo6Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKGRhdGEpOwotICAgIAot
ICAgIGlmICghaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBtX2RlY29kZXItPnNldERhdGEoZGF0
YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLQotU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
PmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKLX0KLSAgICAKLVN1YnNhbXBsaW5nTGV2
ZWwgSW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QK
LXsKLSAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJh
bWVBdEluZGV4KDApKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFZhbHVlcyBjaG9zZW4g
dG8gYmUgYXBwcm9wcmlhdGUgZm9yIGlPUy4KLSAgICBjb25zdCBpbnQgY01heGltdW1JbWFnZUFy
ZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBjb25zdCBTdWJzYW1w
bGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwotCi0gICAgU3Vic2FtcGxpbmdMZXZl
bCBjdXJyZW50TGV2ZWwgPSAwOwotICAgIGZvciAoIDsgY3VycmVudExldmVsIDw9IG1heFN1YnNh
bXBsaW5nTGV2ZWw7ICsrY3VycmVudExldmVsKSB7Ci0gICAgICAgIEludFNpemUgZnJhbWVTaXpl
ID0gZnJhbWVTaXplQXRJbmRleCgwLCBjdXJyZW50TGV2ZWwpOwotICAgICAgICBpZiAoZnJhbWVT
aXplLmFyZWEoKSA8IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3VycmVudExldmVsOwotfQotICAgIAot
U3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBj
b25zdAotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gY2FsY3VsYXRlTWF4aW11bVN1
YnNhbXBsaW5nTGV2ZWwoKTsKLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1TdWJzYW1wbGlu
Z0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNj
YWxlKHNjYWxlLCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpKTsKLX0KLQotYm9vbCBJbWFnZVNv
dXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBt
X2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwotfQotCi1ib29sIEltYWdlU291cmNlOjphbGxv
d1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJl
dHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KGluZGV4KTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVj
dEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25z
dAotewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAK
LSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBtX2Rl
Y29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgCi0gICAgcmV0dXJuIHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYmIG9y
aWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBz
aXplOwotfQotCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9k
ZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogSW1hZ2VPcmllbnRhdGlvbigpOwot
fQotCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJh
bWVTaXplQXRJbmRleCgwLCAwKTsKLX0KLSAgICAKLUludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVS
ZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZVNpemVBdElu
ZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJj
ZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5p
dGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7Ci19Ci0KLXNpemVfdCBJ
bWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRp
ZXMoKTsKLX0KLSAgICAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKLXsKLSAg
ICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBj
QW5pbWF0aW9uTG9vcE9uY2U7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291
bnQoKSA6IDA7Ci19Ci0KLVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZVNvdXJjZTo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7Ci19
Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleChpbmRleCk7Ci19Ci0KLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2Rl
Y29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KSA6IDA7Ci19Ci0KLWJvb2wgSW1hZ2VT
b3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICByZXR1cm4g
IWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7
Ci19Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKLXsKLSAgICBJbnRT
aXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwp
OwotICAgIHJldHVybiBmcmFtZVNpemUuYXJlYSgpICogNDsKLX0KLSAgICAKLXZvaWQgSW1hZ2VT
b3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fYWxsb3dTdWJz
YW1wbGluZykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbGxvdy1zdWJzYW1wbGluZyIsIG1f
YWxsb3dTdWJzYW1wbGluZyk7Ci0gICAgCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
biA9IG9yaWVudGF0aW9uQXRJbmRleCgwKTsKLSAgICBpZiAob3JpZW50YXRpb24gIT0gT3JpZ2lu
VG9wTGVmdCkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvcmllbnRhdGlvbiIsIG9yaWVudGF0
aW9uKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCShy
ZXZpc2lvbiAxOTg4NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC0yNzAsMTMgKzI3MSwxNiBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+
IGludCBnZXRTY2FsZWRWCiAKIH0KIAotYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFB
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLnNpemUoKSA8PSBpbmRleCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKG1f
ZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21w
bGV0ZSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uaGFzQWxwaGEo
KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBt
X2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29t
cGxldGU7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFmcmFtZUlzQ29tcGxldGVBdEluZGV4KGlu
ZGV4KSB8fCBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmhhc0FscGhhKCk7CiB9CiAKIHVuc2ln
bmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdApA
QCAtMjg3LDYgKzI5MSw0MiBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdElu
ZGV4CiAgICAgcmV0dXJuIG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxE
YXRhKTsKIH0KIAorZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0g
aW5kZXgpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtp
bmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICAvLyBNYW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBt
YWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCisgICAgLy8gV2UgZm9s
bG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBh
bnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNl
ZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgy
PgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9u
ID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5kdXJhdGlvbigpIC8gMTAwMC4wZjsKKyAgICBp
ZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAgICAgIHJldHVybiAwLjEwMGY7CisgICAgcmV0dXJu
IGR1cmF0aW9uOworfQorCitOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK3sKKyAg
ICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1z
IGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuCisgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5z
aW9uLCBqdXN0IGJhaWwuCisgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkg
PT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gRm9yIHNv
bWUgcG9ydHMsIHRoZSBkYXRhCisgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWlu
ZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCisgICAgcmV0dXJuIG1f
ZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uYXNOZXdOYXRpdmVJbWFnZSgpOworfQorCiB2b2lkIElt
YWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCkKIHsKICAgICBtX3NjYWxl
ZCA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
SW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDE5ODg0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBU
b3JjaCBNb2JpbGUsIEluYy4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQpAQCAtMjM1
LDE1ICsyMzUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbWFnZURlY29kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CiAgICAgICAgIEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKLSAgICAgICAgICAgIDogbV9zY2FsZWQoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6QWxw
aGFQcmVtdWx0aXBsaWVkKQogICAgICAgICAgICAgLCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9m
aWxlKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID09IEltYWdlU291cmNlOjpHYW1tYUFuZENv
bG9yUHJvZmlsZUlnbm9yZWQpCi0gICAgICAgICAgICAsIG1fc2l6ZUF2YWlsYWJsZShmYWxzZSkK
LSAgICAgICAgICAgICwgbV9tYXhOdW1QaXhlbHMoLTEpCi0gICAgICAgICAgICAsIG1faXNBbGxE
YXRhUmVjZWl2ZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fZmFpbGVkKGZhbHNlKSB7IH0KKyAg
ICAgICAgeworICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkgeyB9
CisgICAgICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpCisgICAgICAgIHsKKyAgICAgICAgfQog
CiAgICAgICAgIC8vIFJldHVybnMgYSBjYWxsZXItb3duZWQgZGVjb2RlciBvZiB0aGUgYXBwcm9w
cmlhdGUgdHlwZS4gIFJldHVybnMgMCBpZgogICAgICAgICAvLyB3ZSBjYW4ndCBzbmlmZiBhIHN1
cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5CkBAIC0yODIsNyAr
MjgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBzaXplcy4gIFRoaXMgZG9l
cyBOT1QgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBHSUYsIHNpbmNlIGRlY29kaW5nIEdJRnMKICAg
ICAgICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxlciBmcmFtZXMgYWdhaW5zdCBwcmV2aW91cyBm
cmFtZXMgdG8gY3JlYXRlIGZ1bGwtCiAgICAgICAgIC8vIHNpemUgZnJhbWVzLgotICAgICAgICB2
aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QpIGNvbnN0CisgICAgICAgIHZp
cnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkg
Y29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHNpemUoKTsKICAgICAgICAgfQpA
QCAtMzEwLDE2ICszMDksMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJbWFn
ZURlY29kZXItb3duZWQgcG9pbnRlci4KICAgICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFt
ZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7CiAKKyAgICAgICAgYm9vbCBmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CisKICAgICAgICAgLy8gTWFrZSB0aGUgYmVzdCBlZmZv
cnQgZ3Vlc3MgdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3RlZCBmcmFtZSBoYXMgYWxwaGEgY2hhbm5l
bC4KLSAgICAgICAgdmlydHVhbCBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29u
c3Q7CisgICAgICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKIAog
ICAgICAgICAvLyBOdW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQgZnJhbWUgcmVxdWVzdGVk
LiBSZXR1cm4gMCBpZiBub3QgeWV0IGRlY29kZWQuCi0gICAgICAgIHZpcnR1YWwgdW5zaWduZWQg
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgZnJhbWVC
eXRlc0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIGZsb2F0IGZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIAorICAgICAgICBOYXRpdmVJ
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwp
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9v
bCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAgICAg
IGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQogCi0gICAgICAgIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgICAgIEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QgeyByZXR1cm4gbV9v
cmllbnRhdGlvbjsgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBhbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIGVu
dW0geyBpY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGggPSAxMjggfTsKIApAQCAtMzMwLDYgKzMz
NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gIW1lbWNtcCgm
cHJvZmlsZURhdGFbMTZdLCAiUkdCICIsIDQpOwogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGlj
IHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSB7IHJldHVybiAwOyB9
CisgICAgICAgIAorICAgICAgICBzdGF0aWMgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJuIDA7IH0K
KwogICAgICAgICBzdGF0aWMgYm9vbCBpbnB1dERldmljZUNvbG9yUHJvZmlsZShjb25zdCBjaGFy
KiBwcm9maWxlRGF0YSwgdW5zaWduZWQgcHJvZmlsZUxlbmd0aCkKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49IGljY0Nv
bG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7CkBAIC0zNTQsMTAgKzM2NSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gY29tcG9zaXRpbmcpLgogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9CiAKLSNpZiBFTkFCTEUoSU1BR0VfREVD
T0RFUl9ET1dOX1NBTVBMSU5HKQotICAgICAgICB2b2lkIHNldE1heE51bVBpeGVscyhpbnQgbSkg
eyBtX21heE51bVBpeGVscyA9IG07IH0KLSNlbmRpZgotCiAgICAgICAgIC8vIElmIHRoZSBpbWFn
ZSBoYXMgYSBjdXJzb3IgaG90LXNwb3QsIHN0b3JlcyBpdCBpbiB0aGUgYXJndW1lbnQKICAgICAg
ICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBob3RTcG90KEludFBvaW50JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTM3NCw3ICszODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFZlY3RvcjxJ
bWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7CiAgICAgICAgIC8vIEZJWE1FOiBEbyB3
ZSBuZWVkIG1fY29sb3JQcm9maWxlIGFueSBtb3JlLCBmb3IgYW55IHBvcnQ/CiAgICAgICAgIENv
bG9yUHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKLSAgICAgICAgYm9vbCBtX3NjYWxlZDsKKyAgICAg
ICAgYm9vbCBtX3NjYWxlZCB7IGZhbHNlIH07CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVk
Q29sdW1uczsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRSb3dzOwogICAgICAgICBib29s
IG1fcHJlbXVsdGlwbHlBbHBoYTsKQEAgLTM5MiwxMCArMzk5LDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIEludFNpemUgbV9zaXplOwotICAgICAgICBib29s
IG1fc2l6ZUF2YWlsYWJsZTsKLSAgICAgICAgaW50IG1fbWF4TnVtUGl4ZWxzOwotICAgICAgICBi
b29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7Ci0gICAgICAgIGJvb2wgbV9mYWlsZWQ7CisgICAgICAg
IGJvb2wgbV9zaXplQXZhaWxhYmxlIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RF
Ul9ET1dOX1NBTVBMSU5HKQorICAgICAgICBpbnQgbV9tYXhOdW1QaXhlbHMgeyAxMDI0ICogMTAy
NCB9OworI2Vsc2UKKyAgICAgICAgaW50IG1fbWF4TnVtUGl4ZWxzIHsgLTEgfTsKKyNlbmRpZgor
ICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OworICAgICAgICBib29s
IG1fZmFpbGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275252</attachid>
            <date>2016-03-30 18:14:52 -0700</date>
            <delta_ts>2016-03-31 10:33:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160330181456.patch</filename>
            <type>text/plain</type>
            <size>36253</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE2LTAzLTMwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVyZ2UgQ0cg
SW1hZ2VTb3VyY2UgYW5kIG5vbiBDRyBJbWFnZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBpbiBvbmUg
ZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
NDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWZ0
ZXIgbW92aW5nIHRoZSBDRyBpbWFnZSBkZWNvZGluZyBjb2RlIHRvIGZyb20gSW1hZ2VTb3VyY2VD
Ry5jcHAgdG8KKyAgICAgICAgSW1hZ2VEZWNvZGVyQ0cuaCBhbmQgLmNwcCwgSW1hZ2VTb3VyY2Ug
Zm9yIENHIGFuZCBDRyBjb2RlIHBhdGhzIGxvb2sKKyAgICAgICAgdmVyeSBzaW1pbGFyLiBBbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgY2FuIGJlIG1vdmVkIHRvIEltYWdlRGVjb2RlckNH
CisgICAgICAgIGNsYXNzZXMuIFNvIHdlIGNhbiBoYXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0
Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0CisgICAgICAgIHJpZCBvZiBJbWFnZVNvdXJjZUNH
LmNwcC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgd29yayBpcyBhIHN0ZXAgdG93YXJkcyB0
aGUgYXN5bmNocm9ub3VzIGltYWdlIGRlY29kaW5nIGZlYXR1cmUuCisgICAgICAgIFRoZSBwdXJw
b3NlIG9mIHRoaXMgbWVyZ2UgaXMgdG8gbWFrZSBlYXN5IHRvIG1vdmUgY2FjaGluZyB0aGUgRnJh
bWVEYXRhCisgICAgICAgIGZyb20gQml0bWFwSW1hZ2UgdG8gSW1hZ2VTb3VyY2UuCisgICAgICAg
IAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4u
Y21ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpJbWFnZVNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjbGVhckZyYW1lQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2Fs
Y3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6Om1heGltdW1TdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpieXRl
c0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRp
b25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjptYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6Omlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSk6CisKIDIwMTYtMDMtMzAgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICAtd2Via2l0LXRleHQtdW5kZXJs
aW5lLXBvc2l0aW9uOiB1bmRlcjsgZG9lcyBub3Qgd29yayBpbiBUb1QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxOTg4NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjIxMyw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRp
b24uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAxOTg4NDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw2IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyRGF0YUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCi0gICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHV2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDE5ODg0OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNyArNDA2LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlU291cmNlQ0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE5ODg0OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk4MSw3ICs0OTgxLDYgQEAKIAkJQjI3NTM1NUEwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJl
Y3RDRy5jcHAgKi87IH07CiAJCUIyNzUzNTVCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVD
Ry5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1
MzUyRDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovOyB9OwogCQlCMjc1MzU1
RTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VD
Ry5jcHAgKi87IH07Ci0JCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNH
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUz
NTMxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1
NjAwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFBvaW50Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVj
dENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
NzUzNTMzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2
MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRT
aXplQ0cuY3BwICovOyB9OwpAQCAtMTI4NjYsNyArMTI4NjUsNiBAQAogCQlCMjc1MzUyQzBCMDUz
ODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZsb2F0UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNpemVDRy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNHLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIElt
YWdlU291cmNlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElt
YWdlU291cmNlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMjBC
MDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW50UG9pbnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyNzUzNTMzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFJlY3RDRy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFNpemVDRy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTc3Nyw3ICsyMTc3NSw2IEBACiAJCQkJQjI3
NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJCTU1NUI4N0VBMUNB
QUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCiAJCQkJNTU1Qjg3RUIxQ0FB
RjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCi0JCQkJQjI3NTM1MzEwQjA1Mzgx
NDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovLAogCQkJCTRCMzQ4MDkyMEVFRjUwRDQw
MEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggKi8sCiAJCQkJNEIzNDgwOTEwRUVGNTBENDAwQUMx
QjQxIC8qIEltYWdlU291cmNlQ0dNYWMubW0gKi8sCiAJCQkJQjI3NTM1MzIwQjA1MzgxNDAwMkNF
NjRGIC8qIEludFBvaW50Q0cuY3BwICovLApAQCAtMjk5ODYsNyArMjk5ODMsNiBAQAogCQkJCTJE
NUE1OTJGMTUyNTI1MjMwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUI1MUEyRjQxMTdEN0Q1REUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0M3MjVFMTk3NDg3NEIwMEFFREQwQyAvKiBJ
bWFnZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2
NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QjM0ODA5MzBFRUY1
MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMx
NkZFMTE3MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCRTk2MUM1NDE4QUQzMzg1MDBEMDdEQzUgLyogSW5iYW5kRGF0YVRleHRUcmFj
ay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHJldmlzaW9uIDE5ODg0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8
YWxwLnRva2VyQGNvbGxhYm9yYS5jby51az4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IFRv
cmNoIE1vYmlsZSwgSW5jCkBAIC0yOSwxOSArMjksMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCi0jaWYgIVVTRShDRykKLQorI2lmIFVTRShDRykK
KyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2Vsc2UKICNpbmNsdWRlICJJbWFnZURlY29k
ZXIuaCIKKyNlbmRpZgogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIEVOQUJMRShJ
TUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6c19tYXhQ
aXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSAxMDI0ICogMTAyNDsKLSNlbmRpZgotCiBJbWFnZVNvdXJj
ZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFn
ZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiAgICAgOiBtX2FscGhhT3B0aW9uKGFscGhhT3B0aW9uKQogICAgICwgbV9nYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKQEAgLTUwLDE0
ICs0OCwyNiBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFsCiAKIElt
YWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogewotICAgIGNsZWFyKHRydWUpOwogfQogCi12b2lk
IEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjbGVhckJlZm9yZUZy
YW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFn
ZVNvdXJjZTo6Y2xlYXJGcmFtZUNhY2hlKHNpemVfdCBjbGVhckJlZm9yZUZyYW1lKQogewotICAg
IGlmICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9kZWNvZGVyKQotICAgICAgICAgICAg
bV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7CisgICAg
aWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisjaWYgVVNFKENHKQorICAgIFVO
VVNFRF9QQVJBTShjbGVhckJlZm9yZUZyYW1lKTsKKyNlbHNlCisgICAgbV9kZWNvZGVyLT5jbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7CisjZW5kaWYKK30KKwordm9pZCBJ
bWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3QgY2xlYXJCZWZv
cmVGcmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAg
ICAvLyBSZWNlbnQgdmVyc2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2Rl
ZCBpbWFnZSBmcmFtZXMgaWYgdGhlIGNsaWVudAorICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxvbmdl
ciBob2xkcyByZWZlcmVuY2VzIHRvIHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBh
d2F5CisgICAgLy8gdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQgdG8g
ZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KKyAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpIHsK
KyAgICAgICAgY2xlYXJGcmFtZUNhY2hlKGNsZWFyQmVmb3JlRnJhbWUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC03NywxMCArODcsNiBAQCB2b2lkIEltYWdlU291cmNlOjplbnN1cmVE
ZWNvZGVySXNDcmVhdGVkCiAgICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBhdmFpbGFi
bGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3aWxsIGJl
CiAgICAgLy8gbWFkZS4KICAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZSgqZGF0
YSwgbV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0jaWYgRU5B
QkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBpZiAobV9kZWNvZGVyICYmIHNf
bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKQotICAgICAgICBtX2RlY29kZXItPnNldE1heE51bVBp
eGVscyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBJbWFn
ZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQpAQCAtOTksMjEgKzEwNSw2IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVm
ZmVyKiAKICAgICAgICAgbV9kZWNvZGVyLT5zZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7
CiB9CiAKLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAotewot
ICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBT
dHJpbmcoKTsKLX0KLQotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdM
ZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotCi1ib29sIElt
YWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxh
YmxlKCkKIHsKICAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmlzU2l6ZUF2
YWlsYWJsZSgpOwpAQCAtMTI5LDE1ICsxMjAsMTQgQEAgSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6
ZVJlc3BlY3RpbmdPcmllbgogICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXpl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QKK3NpemVfdCBJ
bWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgp
KQotICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNv
ZGVyLT5mcmFtZUNvdW50KCkgOiAwOworfQogCi0gICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVy
LT5mcmFtZVNpemVBdEluZGV4KGluZGV4KTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uID0gbV9kZWNvZGVyLT5vcmllbnRhdGlvbigpOwotICAgIAotICAgIHJldHVybiBzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6
ZTsKK2ludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKK3sKKyAgICByZXR1cm4gaW5p
dGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9u
ZTsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkg
Y29uc3QKQEAgLTE0NSw2MiArMTM1LDY5IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNwb3Qo
SW50UG9pbnQmIGgKICAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmhvdFNw
b3QoaG90U3BvdCk7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRl
cm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKK1N0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBpbml0aWFsaXplZCgp
ID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKLWludCBJ
bWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKK3NpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNE
ZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQo
KSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKKyAgICBy
ZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsK
IH0KIAotc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKK1N1YnNhbXBsaW5n
TGV2ZWwgSW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgp
IDogMDsKKyAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09m
RnJhbWVBdEluZGV4KDApKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFZhbHVlcyBjaG9z
ZW4gdG8gYmUgYXBwcm9wcmlhdGUgZm9yIGlPUy4KKyAgICBjb25zdCBpbnQgY01heGltdW1JbWFn
ZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsKKyAgICBjb25zdCBTdWJz
YW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOworCisgICAgU3Vic2FtcGxpbmdM
ZXZlbCBjdXJyZW50TGV2ZWwgPSAwOworICAgIGZvciAoIDsgY3VycmVudExldmVsIDw9IG1heFN1
YnNhbXBsaW5nTGV2ZWw7ICsrY3VycmVudExldmVsKSB7CisgICAgICAgIEludFNpemUgZnJhbWVT
aXplID0gZnJhbWVTaXplQXRJbmRleCgwLCBjdXJyZW50TGV2ZWwpOworICAgICAgICBpZiAoZnJh
bWVTaXplLmFyZWEoKSA8IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGN1cnJlbnRMZXZlbDsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKK1N1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3Vy
Y2U6Om1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKIHsKLSAgICBpZiAoIWluaXRpYWxp
emVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gWmVyby1oZWlnaHQgaW1h
Z2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KLSAg
ICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KLSAgICBpZiAoc2l6ZSgpLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNhbGN1bGF0ZU1h
eGltdW1TdWJzYW1wbGluZ0xldmVsKCk7Cit9CiAKLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBt
X2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwg
YnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKK1N1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2
ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoc2NhbGUsIG1heGltdW1TdWJzYW1wbGluZ0xldmVs
KCkpOworfQogCi0gICAgLy8gUmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMgYSBuYXRpdmUg
aW1hZ2UuICBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKLSAgICAvLyBpcyBhbHJlYWR5IGluIGEg
bmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNyZW1lbnRzIGl0cyByZWZjb3VudC4K
LSAgICByZXR1cm4gYnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7Citib29sIEltYWdlU291cmNl
OjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAorewor
ICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGluZ09m
RnJhbWVBdEluZGV4KGluZGV4KTsKIH0KIAotZmxvYXQgSW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRp
b25BdEluZGV4KHNpemVfdCBpbmRleCkKK0ludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikg
Y29uc3QKIHsKICAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5m
cmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3Rh
dHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
SW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gb3JpZW50YXRp
b25BdEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNI
ZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7Cit9CiAKLSAgICAvLyBNYW55
IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNo
IGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCi0gICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhh
dmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3Bl
Y2lmeQotICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0v
NzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgotICAgIC8vIGZvciBtb3Jl
IGluZm9ybWF0aW9uLgotICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyLT5kdXJhdGlv
bigpIC8gMTAwMC4wZjsKLSAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCi0gICAgICAgIHJldHVy
biAwLjEwMGY7Ci0gICAgcmV0dXJuIGR1cmF0aW9uOwordW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsKSBjb25zdAoreworICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZS5hcmVhKCkg
KiA0OwogfQogCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5k
ZXgoc2l6ZV90KSBjb25zdAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
Pm9yaWVudGF0aW9uKCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIGluaXRpYWxp
emVkKCkgJiYgbV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKIH0KIAog
Ym9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQpAQCAt
MjA4LDE4ICsyMDUsMjQgQEAgYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
cwogICAgIHJldHVybiAhaW5pdGlhbGl6ZWQoKSB8fCBtX2RlY29kZXItPmZyYW1lSGFzQWxwaGFB
dEluZGV4KGluZGV4KTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleChzaXplX3QgaW5kZXgpCitmbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KQoreworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVy
LT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkgOiAwOworfQorCitJbWFnZU9yaWVudGF0aW9u
IEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogewog
ICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOwogCi0gICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9k
ZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIHJldHVybiBidWZmZXIgJiYg
YnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAgIHJldHVy
biBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CiB9Ci0KLXVuc2lnbmVkIElt
YWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwpIGNvbnN0CisgICAgCitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQnl0ZXNB
dEluZGV4KGluZGV4KSA6IDA7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAo
VGV4dFN0cmVhbSYgdHMpIGNvbnN0CkBAIC0yMzMsNSArMjM2LDMgQEAgdm9pZCBJbWFnZVNvdXJj
ZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgYwogfQogICAgIAogfQotCi0jZW5kaWYgLy8gVVNFKENH
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCShyZXZpc2lvbiAxOTg4NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBN
b2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM1LDExICszNSw2IEBACiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgVVNF
KENHKQotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsKLXR5
cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7Ci0jZW5kaWYKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZU9yaWVudGF0aW9uOwpAQCAtMTMzLDcgKzEyOCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OwogCi0g
ICAgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0OworICAg
IHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7CiAKICAg
ICBpbnQgcmVwZXRpdGlvbkNvdW50KCk7CiAKQEAgLTE1MiwxMiArMTQ3LDggQEAgcHVibGljOgog
ICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKIAotI2lmIEVOQUJMRShJ
TUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIG1heFBpeGVs
c1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOyB9
Ci0gICAgc3RhdGljIHZvaWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2lnbmVkIG1h
eFBpeGVscykgeyBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsgfQotI2Vu
ZGlmCi0KIHByaXZhdGU6CisgICAgdm9pZCBjbGVhckZyYW1lQ2FjaGUoc2l6ZV90KTsKICAgICB2
b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKik7CiAgICAgU3Vic2FtcGxp
bmdMZXZlbCBjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0OwogICAgIHZv
aWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Q7CkBAIC0xNzAsMTMgKzE2MSw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2FsbG93U3Vic2FtcGxpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSNpZiAh
VVNFKENHKQogICAgIEFscGhhT3B0aW9uIG1fYWxwaGFPcHRpb247CiAgICAgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjsKLSNlbmRpZgotI2lm
IEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVk
IHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOwotI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCShyZXZpc2lvbiAxOTg4NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMyw2ICszMDMs
NyBAQCBmbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4CiAKIGJvb2wgSW1h
Z2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAog
eworI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9w
ZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0
aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKICAgICBp
ZiAoIXByb3BlcnRpZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyMSw2ICszMjIsOSBA
QCBib29sIEltYWdlRGVjb2Rlcjo6YWxsb3dTdWJzYW1wbGluZ09mRnJhCiAgICAgfQogICAgIAog
ICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAog
Ym9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuaAkocmV2aXNpb24gMTk4ODQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
MTMgKzI5LDE2IEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1ZGUgIkludFNp
emUuaCIKIAordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsK
K3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFnZURlY29k
ZXIoKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3Jl
YXRlKCkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNo
YXJlZEJ1ZmZlciYsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SW1hZ2VEZWNvZGVyPigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCShyZXZpc2lvbiAx
OTg4NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyMTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKLQotI2lmIFVTRShD
RykKLSNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgiCi0KLSNpbmNsdWRlICJJbWFnZURlY29kZXJD
Ry5oIgotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2Uo
SW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCi17Ci0gICAgLy8gRklYTUU6IEFscGhhT3B0aW9uIGFuZCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBhcmUgaWdub3JlZC4KLX0KLQotSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJj
ZSgpCi17Ci0gICAgY2xlYXIodHJ1ZSk7Ci19Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJv
b2wgZGVzdHJveUFsbEZyYW1lcywgc2l6ZV90LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQotewotICAgIC8vIFJlY2VudCB2ZXJzaW9ucyBvZiBJbWFnZUlPIGRpc2Nh
cmQgcHJldmlvdXNseSBkZWNvZGVkIGltYWdlIGZyYW1lcyBpZiB0aGUgY2xpZW50Ci0gICAgLy8g
YXBwbGljYXRpb24gbm8gbG9uZ2VyIGhvbGRzIHJlZmVyZW5jZXMgdG8gdGhlbSwgc28gdGhlcmUn
cyBubyBuZWVkIHRvIHRocm93IGF3YXkKLSAgICAvLyB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUg
ZXhwbGljaXRseSBhc2tlZCB0byBkZXN0cm95IGFsbCBvZiB0aGUgZnJhbWVzLgotICAgIGlmICgh
ZGVzdHJveUFsbEZyYW1lcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kZWNvZGVyID0gbnVs
bHB0cjsKLSAgICAKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRh
UmVjZWl2ZWQpOwotfQotICAgIAotdm9pZCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3Jl
YXRlZChTaGFyZWRCdWZmZXIqKQotewotICAgIGlmIChpbml0aWFsaXplZCgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9kZWNvZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKTsKLX0KLQotdm9p
ZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQotewotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGVu
c3VyZURlY29kZXJJc0NyZWF0ZWQoZGF0YSk7Ci0gICAgCi0gICAgaWYgKCFpbml0aWFsaXplZCgp
KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAotICAgIG1fZGVjb2Rlci0+c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwot
fQotCi1TdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6
IFN0cmluZygpOwotfQotICAgIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2FsY3Vs
YXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAotewotICAgIGlmICghbV9hbGxvd1N1
YnNhbXBsaW5nIHx8ICFhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoMCkpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgLy8gVmFsdWVzIGNob3NlbiB0byBiZSBhcHByb3ByaWF0ZSBmb3Ig
aU9TLgotICAgIGNvbnN0IGludCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nID0g
NSAqIDEwMjQgKiAxMDI0OwotICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgbWF4U3Vic2FtcGxp
bmdMZXZlbCA9IDM7Ci0KLSAgICBTdWJzYW1wbGluZ0xldmVsIGN1cnJlbnRMZXZlbCA9IDA7Ci0g
ICAgZm9yICggOyBjdXJyZW50TGV2ZWwgPD0gbWF4U3Vic2FtcGxpbmdMZXZlbDsgKytjdXJyZW50
TGV2ZWwpIHsKLSAgICAgICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KDAs
IGN1cnJlbnRMZXZlbCk7Ci0gICAgICAgIGlmIChmcmFtZVNpemUuYXJlYSgpIDwgY01heGltdW1J
bWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZykKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIHJldHVybiBjdXJyZW50TGV2ZWw7Ci19Ci0gICAgCi1TdWJzYW1wbGluZ0xldmVsIEltYWdl
U291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0o
SU9TKQotICAgIHJldHVybiBjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIDA7Ci19Ci0KLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1
YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSkgY29uc3QKLXsKLSAgICByZXR1cm4g
SW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoc2NhbGUsIG1heGltdW1TdWJz
YW1wbGluZ0xldmVsKCkpOwotfQotCi1ib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUo
KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxh
YmxlKCk7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJ
bmRleChzaXplX3QgaW5kZXgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYg
bV9kZWNvZGVyLT5hbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoaW5kZXgpOwotfQotCi1J
bnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0g
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0Ci17Ci0gICAgaWYgKCFpbml0aWFs
aXplZCgpKQotICAgICAgICByZXR1cm4geyB9OwotICAgIAotICAgIEludFNpemUgc2l6ZSA9IG1f
ZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdElu
ZGV4KGluZGV4KTsKLSAgICAKLSAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNI
ZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7Ci19Ci0KLUltYWdlT3JpZW50
YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJ
bmRleChpbmRleCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7Ci19Ci0KLUludFNpemUgSW1hZ2VTb3Vy
Y2U6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDApOwot
fQotICAgIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgUmVzcGVjdEltYWdl
T3JpZW50YXRpb24pOwotfQotCi1ib29sIEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50
JiBob3RTcG90KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rl
ci0+aG90U3BvdChob3RTcG90KTsKLX0KLQotc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdAotewotICAgIHJldHVybiBJbWFnZURlY29k
ZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwotfQotICAgIAotaW50IElt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQoKQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgp
ID8gbV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Mb29wT25jZTsKLX0K
LQotc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
aW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKLX0KLQotUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKLXsKLSAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6
ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuIGluaXRp
YWxpemVkKCkgJiYgbV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKLX0K
LQotZmxvYXQgSW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkK
LXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0
SW5kZXgoaW5kZXgpIDogMDsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0
SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVybiAhaW5pdGlhbGl6ZWQoKSB8fCBtX2Rl
Y29kZXItPmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKLX0KLQotdW5zaWduZWQgSW1hZ2VT
b3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsKSBjb25zdAotewotICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVT
aXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAgcmV0dXJuIGZyYW1lU2l6
ZS5hcmVhKCkgKiA0OwotfQotICAgIAotdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFt
JiB0cykgY29uc3QKLXsKLSAgICBpZiAobV9hbGxvd1N1YnNhbXBsaW5nKQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImFsbG93LXN1YnNhbXBsaW5nIiwgbV9hbGxvd1N1YnNhbXBsaW5nKTsKLSAg
ICAKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gb3JpZW50YXRpb25BdEluZGV4
KDApOwotICAgIGlmIChvcmllbnRhdGlvbiAhPSBPcmlnaW5Ub3BMZWZ0KQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoIm9yaWVudGF0aW9uIiwgb3JpZW50YXRpb24pOwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBVU0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDE5ODg0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAw
OSBUb3JjaCBNb2JpbGUsIEluYy4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTI3MCwxMyAr
MjcxLDE2IEBAIHRlbXBsYXRlIDxNYXRjaFR5cGUgdHlwZT4gaW50IGdldFNjYWxlZFYKIAogfQog
Ci1ib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBj
b25zdAorYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4
XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQotICAgICAgICByZXR1cm4g
bV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5oYXNBbHBoYSgpOwotICAgIHJldHVybiB0cnVlOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRl
eF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKK30KKworYm9vbCBJbWFn
ZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIWZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpIHx8IG1fZnJhbWVCdWZmZXJD
YWNoZVtpbmRleF0uaGFzQWxwaGEoKTsKIH0KIAogdW5zaWduZWQgSW1hZ2VEZWNvZGVyOjpmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CkBAIC0yODcsNiArMjkxLDQyIEBAIHVu
c2lnbmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgKICAgICByZXR1cm4gbV9zaXpl
LmFyZWEoKSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpOwogfQogCitmbG9hdCBJbWFn
ZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAg
ICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFn
ZUZyYW1lOjpGcmFtZUVtcHR5KQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIE1hbnkgYW5u
b3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMg
cXVpY2tseSBhcyBwb3NzaWJsZS4KKyAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9y
IGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5
CisgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5
MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+CisgICAgLy8gZm9yIG1vcmUgaW5m
b3JtYXRpb24uCisgICAgY29uc3QgZmxvYXQgZHVyYXRpb24gPSBtX2ZyYW1lQnVmZmVyQ2FjaGVb
aW5kZXhdLmR1cmF0aW9uKCkgLyAxMDAwLjBmOworICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikK
KyAgICAgICAgcmV0dXJuIDAuMTAwZjsKKyAgICByZXR1cm4gZHVyYXRpb247Cit9CisKK05hdGl2
ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAoreworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2Fj
aGUuc2l6ZSgpIDw9IGluZGV4KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFpl
cm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuIElmIHdl
IGhhdmUgYW4KKyAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KKyAgICBp
ZiAoc2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAo
bV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVt
cHR5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFJldHVybiB0aGUgYnVmZmVy
IGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKKyAg
ICAvLyBpcyBhbHJlYWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNy
ZW1lbnRzIGl0cyByZWZjb3VudC4KKyAgICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4
XS5hc05ld05hdGl2ZUltYWdlKCk7Cit9CisKIHZvaWQgSW1hZ2VEZWNvZGVyOjpwcmVwYXJlU2Nh
bGVEYXRhSWZOZWNlc3NhcnkoKQogewogICAgIG1fc2NhbGVkID0gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuaAkocmV2aXNpb24gMTk4ODQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCkBAIC0yMzUsMTUgKzIzNSwxNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2Rlcik7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgSW1hZ2VEZWNv
ZGVyKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6Okdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAg
ICAgICAgICAgOiBtX3NjYWxlZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9wcmVtdWx0aXBseUFs
cGhhKGFscGhhT3B0aW9uID09IEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQpCisgICAg
ICAgICAgICA6IG1fcHJlbXVsdGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6
QWxwaGFQcmVtdWx0aXBsaWVkKQogICAgICAgICAgICAgLCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQ
cm9maWxlKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID09IEltYWdlU291cmNlOjpHYW1tYUFu
ZENvbG9yUHJvZmlsZUlnbm9yZWQpCi0gICAgICAgICAgICAsIG1fc2l6ZUF2YWlsYWJsZShmYWxz
ZSkKLSAgICAgICAgICAgICwgbV9tYXhOdW1QaXhlbHMoLTEpCi0gICAgICAgICAgICAsIG1faXNB
bGxEYXRhUmVjZWl2ZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fZmFpbGVkKGZhbHNlKSB7IH0K
KyAgICAgICAgeworICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkg
eyB9CisgICAgICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpCisgICAgICAgIHsKKyAgICAgICAg
fQogCiAgICAgICAgIC8vIFJldHVybnMgYSBjYWxsZXItb3duZWQgZGVjb2RlciBvZiB0aGUgYXBw
cm9wcmlhdGUgdHlwZS4gIFJldHVybnMgMCBpZgogICAgICAgICAvLyB3ZSBjYW4ndCBzbmlmZiBh
IHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5CkBAIC0yODIs
NyArMjgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBzaXplcy4gIFRoaXMg
ZG9lcyBOT1QgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBHSUYsIHNpbmNlIGRlY29kaW5nIEdJRnMK
ICAgICAgICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxlciBmcmFtZXMgYWdhaW5zdCBwcmV2aW91
cyBmcmFtZXMgdG8gY3JlYXRlIGZ1bGwtCiAgICAgICAgIC8vIHNpemUgZnJhbWVzLgotICAgICAg
ICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QpIGNvbnN0CisgICAgICAg
IHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHNpemUoKTsKICAgICAgICAg
fQpAQCAtMzEwLDE2ICszMDksMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJ
bWFnZURlY29kZXItb3duZWQgcG9pbnRlci4KICAgICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBm
cmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7CiAKKyAgICAgICAgYm9vbCBmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CisKICAgICAgICAgLy8gTWFrZSB0aGUgYmVzdCBl
ZmZvcnQgZ3Vlc3MgdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3RlZCBmcmFtZSBoYXMgYWxwaGEgY2hh
bm5lbC4KLSAgICAgICAgdmlydHVhbCBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkg
Y29uc3Q7CisgICAgICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
IAogICAgICAgICAvLyBOdW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQgZnJhbWUgcmVxdWVz
dGVkLiBSZXR1cm4gMCBpZiBub3QgeWV0IGRlY29kZWQuCi0gICAgICAgIHZpcnR1YWwgdW5zaWdu
ZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgZnJh
bWVCeXRlc0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIGZsb2F0IGZy
YW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIAorICAgICAgICBOYXRp
dmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUo
Ym9vbCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAg
ICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9p
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQogCi0gICAgICAgIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgICAgIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QgeyByZXR1cm4g
bV9vcmllbnRhdGlvbjsgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBhbGxvd1N1YnNhbXBsaW5n
T2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAg
IGVudW0geyBpY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGggPSAxMjggfTsKIApAQCAtMzMwLDYg
KzMzNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gIW1lbWNt
cCgmcHJvZmlsZURhdGFbMTZdLCAiUkdCICIsIDQpOwogICAgICAgICB9CiAKKyAgICAgICAgc3Rh
dGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSB7IHJldHVybiAw
OyB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJuIDA7
IH0KKwogICAgICAgICBzdGF0aWMgYm9vbCBpbnB1dERldmljZUNvbG9yUHJvZmlsZShjb25zdCBj
aGFyKiBwcm9maWxlRGF0YSwgdW5zaWduZWQgcHJvZmlsZUxlbmd0aCkKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49IGlj
Y0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7CkBAIC0zNTQsMTAgKzM2NSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gY29tcG9zaXRpbmcpLgogICAgICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9CiAKLSNpZiBFTkFCTEUoSU1BR0Vf
REVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAgICAgICB2b2lkIHNldE1heE51bVBpeGVscyhpbnQg
bSkgeyBtX21heE51bVBpeGVscyA9IG07IH0KLSNlbmRpZgotCiAgICAgICAgIC8vIElmIHRoZSBp
bWFnZSBoYXMgYSBjdXJzb3IgaG90LXNwb3QsIHN0b3JlcyBpdCBpbiB0aGUgYXJndW1lbnQKICAg
ICAgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBob3RTcG90KEludFBvaW50JikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTM3NCw3ICszODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFZlY3Rv
cjxJbWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7CiAgICAgICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIG1fY29sb3JQcm9maWxlIGFueSBtb3JlLCBmb3IgYW55IHBvcnQ/CiAgICAgICAg
IENvbG9yUHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKLSAgICAgICAgYm9vbCBtX3NjYWxlZDsKKyAg
ICAgICAgYm9vbCBtX3NjYWxlZCB7IGZhbHNlIH07CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2Nh
bGVkQ29sdW1uczsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRSb3dzOwogICAgICAgICBi
b29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKQEAgLTM5MiwxMCArMzk5LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIEludFNpemUgbV9zaXplOwotICAgICAgICBi
b29sIG1fc2l6ZUF2YWlsYWJsZTsKLSAgICAgICAgaW50IG1fbWF4TnVtUGl4ZWxzOwotICAgICAg
ICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7Ci0gICAgICAgIGJvb2wgbV9mYWlsZWQ7CisgICAg
ICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoSU1BR0VfREVD
T0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAgICBpbnQgbV9tYXhOdW1QaXhlbHMgeyAxMDI0ICog
MTAyNCB9OworI2Vsc2UKKyAgICAgICAgaW50IG1fbWF4TnVtUGl4ZWxzIHsgLTEgfTsKKyNlbmRp
ZgorICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OworICAgICAgICBi
b29sIG1fZmFpbGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275300</attachid>
            <date>2016-03-31 10:33:04 -0700</date>
            <delta_ts>2016-03-31 15:57:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160331103308.patch</filename>
            <type>text/plain</type>
            <size>37146</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDE2LTAzLTMwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVyZ2UgQ0cg
SW1hZ2VTb3VyY2UgYW5kIG5vbiBDRyBJbWFnZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBpbiBvbmUg
ZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
NDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWZ0
ZXIgbW92aW5nIHRoZSBDRyBpbWFnZSBkZWNvZGluZyBjb2RlIHRvIGZyb20gSW1hZ2VTb3VyY2VD
Ry5jcHAgdG8KKyAgICAgICAgSW1hZ2VEZWNvZGVyQ0cuaCBhbmQgLmNwcCwgSW1hZ2VTb3VyY2Ug
Zm9yIENHIGFuZCBDRyBjb2RlIHBhdGhzIGxvb2sKKyAgICAgICAgdmVyeSBzaW1pbGFyLiBBbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgY2FuIGJlIG1vdmVkIHRvIEltYWdlRGVjb2Rlcgor
ICAgICAgICBjbGFzc2VzLiBTbyB3ZSBjYW4gaGF2ZSB0aGUgSW1hZ2VTb3VyY2UgYmUgcGxhdGZv
cm0gaW5kZXBlbmRlbnQgYW5kIHdlIGdldAorICAgICAgICByaWQgb2YgSW1hZ2VTb3VyY2VDRy5j
cHAuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIHdvcmsgaXMgYSBzdGVwIHRvd2FyZHMgdGhl
IGFzeW5jaHJvbm91cyBpbWFnZSBkZWNvZGluZyBmZWF0dXJlLgorICAgICAgICBUaGUgcHVycG9z
ZSBvZiB0aGlzIG1lcmdlIGlzIHRvIG1ha2UgaXQgZWFzeSB0byBtb3ZlIGNhY2hpbmcgdGhlIEZy
YW1lRGF0YQorICAgICAgICBmcm9tIEJpdG1hcEltYWdlIHRvIEltYWdlU291cmNlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHBsYW4gYWZ0ZXIgdGhpcyBwYXRjaCBpczoKKyAgICAgICAgICAgIC0t
IEhhdmUgb25lIEltYWdlRGVjb2RlciBoZWFkZXIgZmlsZSBmb3IgYWxsIHBsYXRmb3JtcyBpbnN0
ZWFkIG9mCisgICAgICAgICAgICAgICBoYXZpbmcgaXQgZGVmaW5lZCBpbiB0d28gcGxhY2VzIHJp
Z2h0IG5vdzoKKyAgICAgICAgICAgICAgIGNsYXNzIEltYWdlRGVjb2RlcjogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKyAgICAgICAgICAgICAgIGNsYXNzIEltYWdlRGVj
b2RlcjogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorICAgICAgICAgICAg
LS0gSGF2ZSBvbmUgc3RydWN0dXJlIGNhY2hlZCBvbmx5IG9uY2UgZm9yIEltYWdlRnJhbWUgaW5z
dGVhZCBvZgorICAgICAgICAgICAgICAgaGF2aW5nIGl0IGRlZmluZWQgaW4gdHdvIHBsYWNlcyBy
aWdodCBub3c6CisgICAgICAgICAgICAgICBjbGFzcyBJbWFnZUZyYW1lOiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorICAgICAgICAgICAgICAgc3RydWN0IEZyYW1lRGF0
YTogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorICAgICAgICAgICAgICAgCisgICAg
ICAgIFJpZ2h0IG5vdyBhbmQgZm9yIG5vbiBDRyBjb2RlIHBhdGgsIHRoZSBJbWFnZUZyYW1lIGlz
IGNhY2hlZCB0d2ljZS4gVGhlCisgICAgICAgIGZpcnN0IGNhY2hlIGlzIGluIEltYWdlRGVjb2Rl
cjo6bV9mcmFtZUJ1ZmZlckNhY2hlIGFuZCB0aGUgc2Vjb25kIGNhY2hlCisgICAgICAgIGlzIGlu
IEJpdG1hcEltYWdlOjptX2ZyYW1lcy4gVGhlIHNlY29uZCBjYWNoZSBpcyBqdXN0IGNvcHlpbmcg
ZGF0YSBmcm9tCisgICAgICAgIHRoZSBmaXJzdCBjYWNoZS4KKyAgICAgICAgCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNsZWFyRnJhbWVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29k
ZXJJc0NyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWxjdWxhdGVNYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6bWF4aW11
bVN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNh
bXBsaW5nTGV2ZWxGb3JTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjppc1NpemVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNp
emVSZXNwZWN0aW5nT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmdldEhv
dFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0
ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVwZXRp
dGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om1heFBpeGVsc1Bl
ckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
c2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhh
c0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lQnl0
ZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlv
bkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnByZXBhcmVTY2Fs
ZURhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldElnbm9yZUdh
bW1hQW5kQ29sb3JQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aWdu
b3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKToKKwogMjAxNi0wMy0zMCAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIC13ZWJraXQtdGV4dC11bmRlcmxpbmUtcG9zaXRpb246
IHVuZGVyOyBkb2VzIG5vdCB3b3JrIGluIFRvVApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDE5ODg0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yMjEzLDYgKzIyMTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bnRQb2ludC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFw
cGxlV2luLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVX
aW4uY21ha2UJKHJldmlzaW9uIDE5ODg0OSkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBw
bGVXaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0dXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQkocmV2aXNpb24gMTk4ODQ5KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw3ICs0MDYsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlU291cmNlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01h
Yy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk4ODQ5KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00OTgxLDcgKzQ5ODEsNiBAQAogCQlCMjc1MzU1QTBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLzsg
fTsKIAkJQjI3NTM1NUIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTJEMEIwNTM4MTQw
MDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi87IH07CiAJCUIyNzUzNTVFMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLzsgfTsK
LQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzEwQjA1MzgxNDAw
MkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovOyB9OwogCQlCMjc1MzU2MDBCMDUzODE0MDAy
Q0U2NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAg
Ki87IH07CiAJCUIyNzUzNTYxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzMwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYyMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRTaXplQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi87
IH07CkBAIC0xMjg2Niw3ICsxMjg2NSw2IEBACiAJCUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAv
KiBGbG9hdFJlY3RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RmxvYXRSZWN0Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUyRDBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZsb2F0U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbnRQb2ludENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRQb2ludENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzMw
QjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW50UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIxNzc3LDcgKzIxNzc1LDYgQEAKIAkJCQlCMjc1MzUzMDBCMDUzODE0
MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8sCiAJCQkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1
IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLywKIAkJCQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUg
LyogSW1hZ2VEZWNvZGVyQ0cuaCAqLywKLQkJCQlCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyog
SW1hZ2VTb3VyY2VDRy5jcHAgKi8sCiAJCQkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIElt
YWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VT
b3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9p
bnRDRy5jcHAgKi8sCkBAIC0yOTk4Niw3ICsyOTk4Myw2IEBACiAJCQkJMkQ1QTU5MkYxNTI1MjUy
MzAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUx
QTJGNDExN0Q3RDVERTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzQzcyNUUxOTc0ODc0QjAwQUVERDBDIC8qIEltYWdlU291cmNlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNv
dXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0MSAv
KiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZFMURB
NzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJF
OTYxQzU0MThBRDMzODUwMEQwN0RDNSAvKiBJbmJhbmREYXRhVGV4dFRyYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAkocmV2aXNpb24gMTk4ODQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHAudG9rZXJAY29s
bGFib3JhLmNvLnVrPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJ
bmMKQEAgLTI5LDE5ICsyOSwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklt
YWdlU291cmNlLmgiCiAKLSNpZiAhVVNFKENHKQotCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIklt
YWdlRGVjb2RlckNHLmgiCisjZWxzZQogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorI2VuZGlm
CiAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKLXVuc2lnbmVkIEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29k
ZWRJbWFnZSA9IDEwMjQgKiAxMDI0OwotI2VuZGlmCi0KIEltYWdlU291cmNlOjpJbWFnZVNvdXJj
ZShJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6
IG1fYWxwaGFPcHRpb24oYWxwaGFPcHRpb24pCiAgICAgLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpAQCAtNTAsMTQgKzQ4LDI2IEBAIElt
YWdlU291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWwKIAogSW1hZ2VTb3VyY2U6On5J
bWFnZVNvdXJjZSgpCiB7Ci0gICAgY2xlYXIodHJ1ZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6
OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpjbGVh
ckZyYW1lQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpCiB7Ci0gICAgaWYgKCFkZXN0cm95
QWxsKSB7Ci0gICAgICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgICAgICBtX2RlY29kZXItPmNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKKyAgICBpZiAoIWluaXRpYWxp
emVkKCkpCisgICAgICAgIHJldHVybjsKKyNpZiBVU0UoQ0cpCisgICAgVU5VU0VEX1BBUkFNKGNs
ZWFyQmVmb3JlRnJhbWUpOworI2Vsc2UKKyAgICBtX2RlY29kZXItPmNsZWFyRnJhbWVCdWZmZXJD
YWNoZShjbGVhckJlZm9yZUZyYW1lKTsKKyNlbmRpZgorfQorCit2b2lkIEltYWdlU291cmNlOjpj
bGVhcihib29sIGRlc3Ryb3lBbGxGcmFtZXMsIHNpemVfdCBjbGVhckJlZm9yZUZyYW1lLCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIC8vIFJlY2VudCB2
ZXJzaW9ucyBvZiBJbWFnZUlPIGRpc2NhcmQgcHJldmlvdXNseSBkZWNvZGVkIGltYWdlIGZyYW1l
cyBpZiB0aGUgY2xpZW50CisgICAgLy8gYXBwbGljYXRpb24gbm8gbG9uZ2VyIGhvbGRzIHJlZmVy
ZW5jZXMgdG8gdGhlbSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHRocm93IGF3YXkKKyAgICAvLyB0
aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZCB0byBkZXN0cm95IGFsbCBv
ZiB0aGUgZnJhbWVzLgorICAgIGlmICghZGVzdHJveUFsbEZyYW1lcykgeworICAgICAgICBjbGVh
ckZyYW1lQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTc3LDEwICs4Nyw2IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0
ZWQKICAgICAvLyBJZiBpbnN1ZmZpY2llbnQgYnl0ZXMgYXJlIGF2YWlsYWJsZSB0byBkZXRlcm1p
bmUgdGhlIGltYWdlIHR5cGUsIG5vIGRlY29kZXIgcGx1Z2luIHdpbGwgYmUKICAgICAvLyBtYWRl
LgogICAgIG1fZGVjb2RlciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBtX2FscGhhT3B0
aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSNpZiBFTkFCTEUoSU1BR0VfREVD
T0RFUl9ET1dOX1NBTVBMSU5HKQotICAgIGlmIChtX2RlY29kZXIgJiYgc19tYXhQaXhlbHNQZXJE
ZWNvZGVkSW1hZ2UpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0TWF4TnVtUGl4ZWxzKHNfbWF4UGl4
ZWxzUGVyRGVjb2RlZEltYWdlKTsKLSNlbmRpZgogfQogCiB2b2lkIEltYWdlU291cmNlOjpzZXRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCkBAIC05OSwyMSAr
MTA1LDYgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIAogICAgICAg
ICBtX2RlY29kZXItPnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotU3RyaW5n
IEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
ZGVjb2RlciA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwotfQot
Ci1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUo
ZmxvYXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmFs
bG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCiBib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUoKQogewogICAg
IHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCk7CkBA
IC0xMjksMTUgKzEyMCwxNCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09y
aWVuCiAgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pOwogfQogCi1JbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpm
cmFtZUNvdW50KCkgY29uc3QKIHsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJl
dHVybiB7IH07CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291
bnQoKSA6IDA7Cit9CiAKLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0
SW5kZXgoaW5kZXgpOwotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBtX2RlY29k
ZXItPm9yaWVudGF0aW9uKCk7Ci0gICAgCi0gICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNX
aWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOworaW50IEltYWdl
U291cmNlOjpyZXBldGl0aW9uQ291bnQoKQoreworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8g
bV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Ob25lOwogfQogCiBib29s
IEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdApAQCAtMTQ1
LDYyICsxMzUsNjkgQEAgYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaAog
ICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aG90U3BvdChob3RTcG90KTsK
IH0KIAotc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRp
ZXMoKSBjb25zdAorU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
PmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKIH0KIAotaW50IEltYWdlU291cmNlOjpy
ZXBldGl0aW9uQ291bnQoKQorc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVy
bWluZVByb3BlcnRpZXMoKQogewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVy
LT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Ob25lOworICAgIHJldHVybiBJbWFnZURl
Y29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwogfQogCi1zaXplX3Qg
SW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNv
dXJjZTo6Y2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAogewotICAgIHJl
dHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOworICAgIGlm
ICghbV9hbGxvd1N1YnNhbXBsaW5nIHx8ICFhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgo
MCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gVmFsdWVzIGNob3NlbiB0byBiZSBhcHBy
b3ByaWF0ZSBmb3IgaU9TLgorICAgIGNvbnN0IGludCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1
YnNhbXBsaW5nID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2ZWwg
bWF4U3Vic2FtcGxpbmdMZXZlbCA9IDM7CisKKyAgICBTdWJzYW1wbGluZ0xldmVsIGN1cnJlbnRM
ZXZlbCA9IDA7CisgICAgZm9yICggOyBjdXJyZW50TGV2ZWwgPD0gbWF4U3Vic2FtcGxpbmdMZXZl
bDsgKytjdXJyZW50TGV2ZWwpIHsKKyAgICAgICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNp
emVBdEluZGV4KDAsIGN1cnJlbnRMZXZlbCk7CisgICAgICAgIGlmIChmcmFtZVNpemUuYXJlYSgp
IDwgY01heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZykKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY3VycmVudExldmVsOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsKQorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1
YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNl
IHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiAgSWYgd2UgaGF2ZSBhbgotICAgIC8vIGVtcHR5IGlt
YWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgotICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBs
aW5nTGV2ZWwoKTsKK30KIAotICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJh
bWVCdWZmZXJBdEluZGV4KGluZGV4KTsKLSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwor
U3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZs
b2F0IHNjYWxlKSBjb25zdAoreworICAgIHJldHVybiBJbWFnZURlY29kZXI6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZShzY2FsZSwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSk7Cit9CiAKLSAg
ICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gIEZvciBz
b21lIHBvcnRzLCB0aGUgZGF0YQotICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUgY29udGFp
bmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgotICAgIHJldHVybiBi
dWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKTsKK2Jvb2wgSW1hZ2VTb3VyY2U6OmFsbG93U3Vic2Ft
cGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlu
aXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5hbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgo
aW5kZXgpOwogfQogCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90IGluZGV4KQorSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAogewogICAg
IGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJ
bmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFn
ZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gMDsKKyAgICBJbnRTaXplIHNpemUg
PSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwor
ICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbkF0SW5kZXgoaW5k
ZXgpOworICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6
ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKK30KIAotICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRz
IHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBh
cyBwb3NzaWJsZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1c2Ug
YSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5Ci0gICAgLy8g
YSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24u
Ci0gICAgY29uc3QgZmxvYXQgZHVyYXRpb24gPSBidWZmZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBm
OwotICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAgcmV0dXJuIDAuMTAwZjsKLSAg
ICByZXR1cm4gZHVyYXRpb247Cit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0
Cit7CisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gZnJhbWVTaXplLmFyZWEoKSAqIDQ7CiB9CiAKLUlt
YWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNv
bnN0Citib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+b3JpZW50YXRpb24o
KSA6IEltYWdlT3JpZW50YXRpb24oKTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2Rl
Y29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOwogfQogCiBib29sIEltYWdlU291
cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCkBAIC0yMDgsMTggKzIwNSwy
NCBAQCBib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzCiAgICAgcmV0dXJu
ICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgp
OwogfQogCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBp
bmRleCkKK2Zsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5k
ZXgpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lRHVyYXRp
b25BdEluZGV4KGluZGV4KSA6IDA7Cit9CisKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6
Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKCFpbml0
aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBJbWFnZU9y
aWVudGF0aW9uKCk7CiAKLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1l
QnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+
b3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKIH0KLQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKKyAg
ICAKK05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICBy
ZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgp
IDogMDsKKyAgICBpZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0
cykgY29uc3QKQEAgLTIzMyw1ICsyMzYsMyBAQCB2b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRT
dHJlYW0mIHRzKSBjCiB9CiAgICAgCiB9Ci0KLSNlbmRpZiAvLyBVU0UoQ0cpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHJldmlzaW9u
IDE5ODg0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMzUsMTEgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi10eXBlZGVm
IHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwotdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEltYWdlT3JpZW50YXRpb247CkBAIC0xMzMsNyArMTI4LDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Q7CiAKLSAgICBzaXplX3QgYnl0
ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3Q7CisgICAgc3RhdGljIHNpemVf
dCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKIAogICAgIGludCByZXBldGl0
aW9uQ291bnQoKTsKIApAQCAtMTUyLDEyICsxNDcsOCBAQCBwdWJsaWM6CiAgICAgLy8gZGVjb2Rl
ZCB0aGVuIHJldHVybiAwLgogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IDApIGNvbnN0OwogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKLSAgICBzdGF0aWMgdW5zaWduZWQgbWF4UGl4ZWxzUGVyRGVjb2RlZElt
YWdlKCkgeyByZXR1cm4gc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7IH0KLSAgICBzdGF0aWMg
dm9pZCBzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UodW5zaWduZWQgbWF4UGl4ZWxzKSB7IHNf
bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlID0gbWF4UGl4ZWxzOyB9Ci0jZW5kaWYKLQogcHJpdmF0
ZToKKyAgICB2b2lkIGNsZWFyRnJhbWVDYWNoZShzaXplX3QpOwogICAgIHZvaWQgZW5zdXJlRGVj
b2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqKTsKICAgICBTdWJzYW1wbGluZ0xldmVsIGNhbGN1
bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFRleHRT
dHJlYW0mKSBjb25zdDsKQEAgLTE3MCwxMyArMTYxLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
YWxsb3dTdWJzYW1wbGluZyB7IGZhbHNlIH07CiAjZW5kaWYKIAotI2lmICFVU0UoQ0cpCiAgICAg
QWxwaGFPcHRpb24gbV9hbHBoYU9wdGlvbjsKICAgICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOwotI2VuZGlmCi0jaWYgRU5BQkxFKElNQUdF
X0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBzdGF0aWMgdW5zaWduZWQgc19tYXhQaXhlbHNQ
ZXJEZWNvZGVkSW1hZ2U7Ci0jZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHJldmlz
aW9uIDE5ODg0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAzLDYgKzMwMyw3IEBAIGZsb2F0IElt
YWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgKIAogYm9vbCBJbWFnZURlY29kZXI6OmFs
bG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0CiB7CisjaWYgUExBVEZP
Uk0oSU9TKQogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdl
dCgpLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwogICAgIGlmICghcHJvcGVydGll
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzIxLDYgKzMyMiw5IEBAIGJvb2wgSW1hZ2VE
ZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmEKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRy
dWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEltYWdlRGVj
b2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5oCShyZXZpc2lvbiAxOTg4NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMTYgQEAK
ICNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogCit0eXBl
ZGVmIHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwordHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBJbWFnZURlY29kZXIgewogcHVibGljOgogICAgIEltYWdlRGVjb2RlcigpOwogICAgIAot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoKQorICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwg
SW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZURl
Y29kZXI+KCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAJKHJldmlzaW9uIDE5ODg0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDIxNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUg
IkltYWdlU291cmNlQ0cuaCIKLQotI2luY2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCi0jaW5jbHVk
ZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUltYWdlU291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6
QWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLXsK
LSAgICAvLyBGSVhNRTogQWxwaGFPcHRpb24gYW5kIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGFyZSBpZ25vcmVkLgotfQotCi1JbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKLXsKLSAgICBj
bGVhcih0cnVlKTsKLX0KLQotdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxs
RnJhbWVzLCBzaXplX3QsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
Ci17Ci0gICAgLy8gUmVjZW50IHZlcnNpb25zIG9mIEltYWdlSU8gZGlzY2FyZCBwcmV2aW91c2x5
IGRlY29kZWQgaW1hZ2UgZnJhbWVzIGlmIHRoZSBjbGllbnQKLSAgICAvLyBhcHBsaWNhdGlvbiBu
byBsb25nZXIgaG9sZHMgcmVmZXJlbmNlcyB0byB0aGVtLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8g
dGhyb3cgYXdheQotICAgIC8vIHRoZSBkZWNvZGVyIHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5IGFz
a2VkIHRvIGRlc3Ryb3kgYWxsIG9mIHRoZSBmcmFtZXMuCi0gICAgaWYgKCFkZXN0cm95QWxsRnJh
bWVzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2RlY29kZXIgPSBudWxscHRyOwotICAgIAot
ICAgIGlmIChkYXRhKQotICAgICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci19
Ci0gICAgCi12b2lkIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1
ZmZlciopCi17Ci0gICAgaWYgKGluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X2RlY29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZSgpOwotfQotCi12b2lkIEltYWdlU291cmNl
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi17Ci0g
ICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgZW5zdXJlRGVjb2Rlcklz
Q3JlYXRlZChkYXRhKTsKLSAgICAKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAg
bV9kZWNvZGVyLT5zZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci19Ci0KLVN0cmluZyBJ
bWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAotewotICAgIHJldHVybiBpbml0
aWFsaXplZCgpID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7Ci19
Ci0gICAgCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpjYWxjdWxhdGVNYXhpbXVtU3Vi
c2FtcGxpbmdMZXZlbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2FsbG93U3Vic2FtcGxpbmcgfHwg
IWFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleCgwKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICAvLyBWYWx1ZXMgY2hvc2VuIHRvIGJlIGFwcHJvcHJpYXRlIGZvciBpT1MuCi0gICAgY29u
c3QgaW50IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAyNCAqIDEw
MjQ7Ci0gICAgY29uc3QgU3Vic2FtcGxpbmdMZXZlbCBtYXhTdWJzYW1wbGluZ0xldmVsID0gMzsK
LQotICAgIFN1YnNhbXBsaW5nTGV2ZWwgY3VycmVudExldmVsID0gMDsKLSAgICBmb3IgKCA7IGN1
cnJlbnRMZXZlbCA8PSBtYXhTdWJzYW1wbGluZ0xldmVsOyArK2N1cnJlbnRMZXZlbCkgewotICAg
ICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoMCwgY3VycmVudExldmVs
KTsKLSAgICAgICAgaWYgKGZyYW1lU2l6ZS5hcmVhKCkgPCBjTWF4aW11bUltYWdlQXJlYUJlZm9y
ZVN1YnNhbXBsaW5nKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIGN1
cnJlbnRMZXZlbDsKLX0KLSAgICAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6Om1heGlt
dW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0
dXJuIGNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCk7Ci0jZW5kaWYKLSAgICByZXR1
cm4gMDsKLX0KLQotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZl
bEZvclNjYWxlKGZsb2F0IHNjYWxlKSBjb25zdAotewotICAgIHJldHVybiBJbWFnZURlY29kZXI6
OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShzY2FsZSwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwo
KSk7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCi17Ci0gICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKTsKLX0KLQot
Ym9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCBp
bmRleCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmFs
bG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRleCk7Ci19Ci0KLUludFNpemUgSW1hZ2VT
b3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbikgY29uc3QKLXsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAg
ICAgIHJldHVybiB7IH07Ci0gICAgCi0gICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFt
ZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwot
ICAgIAotICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6
ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKLX0KLQotSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNv
dXJjZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKLXsKLSAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KSA6
IEltYWdlT3JpZW50YXRpb24oKTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7Ci19Ci0gICAgCi1JbnRT
aXplIEltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7
Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5ob3RTcG90KGhv
dFNwb3QpOwotfQotCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5l
UHJvcGVydGllcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNv
ZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7Ci19Ci0gICAgCi1pbnQgSW1hZ2VTb3VyY2U6OnJl
cGV0aXRpb25Db3VudCgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
PnJlcGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbkxvb3BPbmNlOwotfQotCi1zaXplX3QgSW1h
Z2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgp
ID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwotfQotCi1SZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQotewotICAgIHJldHVybiBpbml0aWFsaXpl
ZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkgOiBudWxscHRyOwotfQotCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBt
X2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOwotfQotCi1mbG9hdCBJbWFn
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVy
biBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkg
OiAwOwotfQotCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3Qg
aW5kZXgpCi17Ci0gICAgcmV0dXJuICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVI
YXNBbHBoYUF0SW5kZXgoaW5kZXgpOwotfQotCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVC
eXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwpIGNvbnN0Ci17Ci0gICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICByZXR1cm4gZnJhbWVTaXplLmFyZWEoKSAqIDQ7
Ci19Ci0gICAgCi12b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAot
ewotICAgIGlmIChtX2FsbG93U3Vic2FtcGxpbmcpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
YWxsb3ctc3Vic2FtcGxpbmciLCBtX2FsbG93U3Vic2FtcGxpbmcpOwotICAgIAotICAgIEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbkF0SW5kZXgoMCk7Ci0gICAgaWYg
KG9yaWVudGF0aW9uICE9IE9yaWdpblRvcExlZnQpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
b3JpZW50YXRpb24iLCBvcmllbnRhdGlvbik7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMTk4ODQ5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmls
ZSwgSW5jLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5
LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMjcwLDEzICsyNzEsMTYgQEAgdGVt
cGxhdGUgPE1hdGNoVHlwZSB0eXBlPiBpbnQgZ2V0U2NhbGVkVgogCiB9CiAKLWJvb2wgSW1hZ2VE
ZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIElt
YWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09
IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lQnVmZmVy
Q2FjaGVbaW5kZXhdLmhhc0FscGhhKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9
PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJh
bWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiAhZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkgfHwgbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5o
YXNBbHBoYSgpOwogfQogCiB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKQEAgLTI4Nyw2ICsyOTEsNDIgQEAgdW5zaWduZWQgSW1hZ2VE
ZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleAogICAgIHJldHVybiBtX3NpemUuYXJlYSgpICogc2l6
ZW9mKEltYWdlRnJhbWU6OlBpeGVsRGF0YSk7CiB9CiAKK2Zsb2F0IEltYWdlRGVjb2Rlcjo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIGlmIChtX2ZyYW1l
QnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlm
IChtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1l
RW1wdHkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gTWFueSBhbm5veWluZyBhZHMgc3Bl
Y2lmeSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBv
c3NpYmxlLgorICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94J3MgYmVoYXZpb3IgYW5kIHVzZSBhIGR1
cmF0aW9uIG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0aGF0IHNwZWNpZnkKKyAgICAvLyBhIGR1
cmF0aW9uIG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzc2ODkzMDA+IGFuZCA8aHR0
cDovL3dlYmtpdC5vcmcvYi8zNjA4Mj4KKyAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAg
ICBjb25zdCBmbG9hdCBkdXJhdGlvbiA9IG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uZHVyYXRp
b24oKSAvIDEwMDAuMGY7CisgICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQorICAgICAgICByZXR1
cm4gMC4xMDBmOworICAgIHJldHVybiBkdXJhdGlvbjsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1h
Z2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwpIGNvbnN0Cit7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0g
aW5kZXgpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gWmVyby1oZWlnaHQgaW1h
Z2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBhbgorICAg
IC8vIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgorICAgIGlmIChzaXplKCkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgLy8gUmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMg
YSBuYXRpdmUgaW1hZ2UuIEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQorICAgIC8vIGlzIGFscmVh
ZHkgaW4gYSBuYXRpdmUgY29udGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJl
ZmNvdW50LgorICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmFzTmV3TmF0aXZl
SW1hZ2UoKTsKK30KKwogdm9pZCBJbWFnZURlY29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vz
c2FyeSgpCiB7CiAgICAgbV9zY2FsZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCShyZXZpc2lv
biAxOTg4NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKQEAgLTIzNSwxNSArMjM1LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJbWFnZURlY29kZXIoSW1hZ2VTb3Vy
Y2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgICAgICAgICA6IG1f
c2NhbGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEoYWxwaGFPcHRp
b24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKKyAgICAgICAgICAgIDogbV9w
cmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEltYWdlU291cmNlOjpBbHBoYVByZW11bHRp
cGxpZWQpCiAgICAgICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxl
SWdub3JlZCkKLSAgICAgICAgICAgICwgbV9zaXplQXZhaWxhYmxlKGZhbHNlKQotICAgICAgICAg
ICAgLCBtX21heE51bVBpeGVscygtMSkKLSAgICAgICAgICAgICwgbV9pc0FsbERhdGFSZWNlaXZl
ZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9mYWlsZWQoZmFsc2UpIHsgfQorICAgICAgICB7Cisg
ICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSB7IH0KKyAgICAgICAg
dmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkKKyAgICAgICAgeworICAgICAgICB9CiAKICAgICAgICAg
Ly8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBkZWNvZGVyIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBl
LiAgUmV0dXJucyAwIGlmCiAgICAgICAgIC8vIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5
cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKQEAgLTI4Miw3ICsyODEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHNpemVzLiAgVGhpcyBkb2VzIE5PVCBkaWZm
ZXIgZnJvbSBzaXplKCkgZm9yIEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwogICAgICAgICAvLyBj
b21wb3NpdGVzIGFueSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZyYW1lcyB0byBj
cmVhdGUgZnVsbC0KICAgICAgICAgLy8gc2l6ZSBmcmFtZXMuCi0gICAgICAgIHZpcnR1YWwgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCkgY29uc3QKKyAgICAgICAgdmlydHVhbCBJbnRT
aXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZSgpOwogICAgICAgICB9CkBAIC0zMTAsMTYg
KzMwOSwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2Rlci1v
d25lZCBwb2ludGVyLgogICAgICAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJ
bmRleChzaXplX3QpID0gMDsKIAorICAgICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
c2l6ZV90KSBjb25zdDsKKwogICAgICAgICAvLyBNYWtlIHRoZSBiZXN0IGVmZm9ydCBndWVzcyB0
byBjaGVjayBpZiB0aGUgcmVxdWVzdGVkIGZyYW1lIGhhcyBhbHBoYSBjaGFubmVsLgotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAg
ICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgICAgIC8v
IE51bWJlciBvZiBieXRlcyBpbiB0aGUgZGVjb2RlZCBmcmFtZSByZXF1ZXN0ZWQuIFJldHVybiAw
IGlmIG5vdCB5ZXQgZGVjb2RlZC4KLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QpIGNvbnN0OworICAgICAgICAKKyAgICAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAK
ICAgICAgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsg
bV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBpZ25v
cmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlOyB9CiAKLSAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICAgICAgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9u
OyB9CisgICAgICAgIAorICAgICAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRl
eChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgZW51bSB7IGljY0Nv
bG9yUHJvZmlsZUhlYWRlckxlbmd0aCA9IDEyOCB9OwogCkBAIC0zMzAsNiArMzM3LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0
YVsxNl0sICJSR0IgIiwgNCk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgc2l6ZV90IGJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAg
CisgICAgICAgIHN0YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShmbG9hdCwgU3Vic2FtcGxpbmdMZXZlbCkgeyByZXR1cm4gMDsgfQorCiAgICAgICAgIHN0YXRp
YyBib29sIGlucHV0RGV2aWNlQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1
bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKHByb2ZpbGVMZW5ndGgsIHByb2ZpbGVMZW5ndGggPj0gaWNjQ29sb3JQcm9maWxlSGVhZGVy
TGVuZ3RoKTsKQEAgLTM1NCwxMCArMzY1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBjb21wb3NpdGluZykuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KSB7IH0KIAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJ
TkcpCi0gICAgICAgIHZvaWQgc2V0TWF4TnVtUGl4ZWxzKGludCBtKSB7IG1fbWF4TnVtUGl4ZWxz
ID0gbTsgfQotI2VuZGlmCi0KICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBo
b3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBhcmd1bWVudAogICAgICAgICAvLyBhbmQgcmV0dXJu
cyB0cnVlLiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KICAgICAgICAgdmlydHVhbCBib29sIGhv
dFNwb3QoSW50UG9pbnQmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzc0LDcgKzM4MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVmVjdG9yPEltYWdlRnJhbWUsIDE+IG1f
ZnJhbWVCdWZmZXJDYWNoZTsKICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclBy
b2ZpbGUgYW55IG1vcmUsIGZvciBhbnkgcG9ydD8KICAgICAgICAgQ29sb3JQcm9maWxlIG1fY29s
b3JQcm9maWxlOwotICAgICAgICBib29sIG1fc2NhbGVkOworICAgICAgICBib29sIG1fc2NhbGVk
IHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwogICAgICAg
ICBWZWN0b3I8aW50PiBtX3NjYWxlZFJvd3M7CiAgICAgICAgIGJvb2wgbV9wcmVtdWx0aXBseUFs
cGhhOwpAQCAtMzkyLDEwICszOTksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9
CiAKICAgICAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIGJvb2wgbV9zaXplQXZhaWxhYmxl
OwotICAgICAgICBpbnQgbV9tYXhOdW1QaXhlbHM7Ci0gICAgICAgIGJvb2wgbV9pc0FsbERhdGFS
ZWNlaXZlZDsKLSAgICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAgICAgICAgYm9vbCBtX3NpemVBdmFp
bGFibGUgeyBmYWxzZSB9OworI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcp
CisgICAgICAgIGludCBtX21heE51bVBpeGVscyB7IDEwMjQgKiAxMDI0IH07CisjZWxzZQorICAg
ICAgICBpbnQgbV9tYXhOdW1QaXhlbHMgeyAtMSB9OworI2VuZGlmCisgICAgICAgIGJvb2wgbV9p
c0FsbERhdGFSZWNlaXZlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9mYWlsZWQgeyBmYWxz
ZSB9OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275346</attachid>
            <date>2016-03-31 15:57:47 -0700</date>
            <delta_ts>2016-04-08 22:43:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160331155752.patch</filename>
            <type>text/plain</type>
            <size>40034</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDE2LTAzLTMwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVyZ2UgQ0cg
SW1hZ2VTb3VyY2UgYW5kIG5vbiBDRyBJbWFnZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBpbiBvbmUg
ZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
NDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWZ0
ZXIgbW92aW5nIHRoZSBDRyBpbWFnZSBkZWNvZGluZyBjb2RlIHRvIGZyb20gSW1hZ2VTb3VyY2VD
Ry5jcHAgdG8KKyAgICAgICAgSW1hZ2VEZWNvZGVyQ0cuaCBhbmQgLmNwcCwgSW1hZ2VTb3VyY2Ug
Zm9yIENHIGFuZCBDRyBjb2RlIHBhdGhzIGxvb2sKKyAgICAgICAgdmVyeSBzaW1pbGFyLiBBbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgY2FuIGJlIG1vdmVkIHRvIEltYWdlRGVjb2Rlcgor
ICAgICAgICBjbGFzc2VzLiBTbyB3ZSBjYW4gaGF2ZSB0aGUgSW1hZ2VTb3VyY2UgYmUgcGxhdGZv
cm0gaW5kZXBlbmRlbnQgYW5kIHdlIGdldAorICAgICAgICByaWQgb2YgSW1hZ2VTb3VyY2VDRy5j
cHAuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIHdvcmsgaXMgYSBzdGVwIHRvd2FyZHMgdGhl
IGFzeW5jaHJvbm91cyBpbWFnZSBkZWNvZGluZyBmZWF0dXJlLgorICAgICAgICBUaGUgcHVycG9z
ZSBvZiB0aGlzIG1lcmdlIGlzIHRvIG1ha2UgaXQgZWFzeSB0byBtb3ZlIGNhY2hpbmcgdGhlIEZy
YW1lRGF0YQorICAgICAgICBmcm9tIEJpdG1hcEltYWdlIHRvIEltYWdlU291cmNlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHBsYW4gYWZ0ZXIgdGhpcyBwYXRjaCBpczoKKyAgICAgICAgICAgIC0t
IEhhdmUgb25lIEltYWdlRGVjb2RlciBoZWFkZXIgZmlsZSBmb3IgYWxsIHBsYXRmb3JtcyBpbnN0
ZWFkIG9mCisgICAgICAgICAgICAgICBoYXZpbmcgaXQgZGVmaW5lZCBpbiB0d28gcGxhY2VzIHJp
Z2h0IG5vdzoKKyAgICAgICAgICAgICAgIGNsYXNzIEltYWdlRGVjb2RlcjogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKyAgICAgICAgICAgICAgIGNsYXNzIEltYWdlRGVj
b2RlcjogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorICAgICAgICAgICAg
LS0gSGF2ZSBvbmUgc3RydWN0dXJlIGNhY2hlZCBvbmx5IG9uY2UgZm9yIEltYWdlRnJhbWUgaW5z
dGVhZCBvZgorICAgICAgICAgICAgICAgaGF2aW5nIGl0IGRlZmluZWQgaW4gdHdvIHBsYWNlcyBy
aWdodCBub3c6CisgICAgICAgICAgICAgICBjbGFzcyBJbWFnZUZyYW1lOiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorICAgICAgICAgICAgICAgc3RydWN0IEZyYW1lRGF0
YTogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorICAgICAgICAgICAgICAgCisgICAg
ICAgIFJpZ2h0IG5vdyBhbmQgZm9yIG5vbiBDRyBjb2RlIHBhdGgsIHRoZSBJbWFnZUZyYW1lIGlz
IGNhY2hlZCB0d2ljZS4gVGhlCisgICAgICAgIGZpcnN0IGNhY2hlIGlzIGluIEltYWdlRGVjb2Rl
cjo6bV9mcmFtZUJ1ZmZlckNhY2hlIGFuZCB0aGUgc2Vjb25kIGNhY2hlCisgICAgICAgIGlzIGlu
IEJpdG1hcEltYWdlOjptX2ZyYW1lcy4gVGhlIHNlY29uZCBjYWNoZSBpcyBqdXN0IGNvcHlpbmcg
ZGF0YSBmcm9tCisgICAgICAgIHRoZSBmaXJzdCBjYWNoZS4KKyAgICAgICAgCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNsZWFyRnJhbWVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29k
ZXJJc0NyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWxjdWxhdGVNYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6bWF4aW11
bVN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNh
bXBsaW5nTGV2ZWxGb3JTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjppc1NpemVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNp
emVSZXNwZWN0aW5nT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmdldEhv
dFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0
ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVwZXRp
dGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om1heFBpeGVsc1Bl
ckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
c2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhh
c0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lQnl0
ZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlv
bkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnByZXBhcmVTY2Fs
ZURhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldElnbm9yZUdh
bW1hQW5kQ29sb3JQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aWdu
b3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKToKKwogMjAxNi0wMy0zMSAgQW50b25pbyBHb21lcyAg
PHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIGV2ZW50TWF5U3RhcnREcmFnKCkgZG9l
cyBub3QgY2hlY2sgZm9yIHNoaWZ0S2V5IG9yIGlzT3ZlckxpbmsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxOTg5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMjIxMyw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24u
Y3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UG9pbnQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAxOTg5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw2IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyRGF0YUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCi0gICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZVNvdXJjZUNHV2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDE5ODkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNyArNDA2LDYgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5
ODkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDk4MSw3ICs0OTgxLDYgQEAKIAkJQjI3NTM1NUEwQjA1Mzgx
NDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RD
Ry5jcHAgKi87IH07CiAJCUIyNzUzNTVCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUy
RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovOyB9OwogCQlCMjc1MzU1RTBC
MDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5j
cHAgKi87IH07Ci0JCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMx
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjAw
QjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBv
aW50Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENH
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUz
NTMzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2MjBC
MDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXpl
Q0cuY3BwICovOyB9OwpAQCAtMTI4NjYsNyArMTI4NjUsNiBAQAogCQlCMjc1MzUyQzBCMDUzODE0
MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZsb2F0UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNpemVDRy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNHLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdl
U291cmNlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
U291cmNlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMjBCMDUz
ODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW50UG9pbnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyNzUzNTMzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFJlY3RDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFNpemVDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTc3Nyw3ICsyMTc3NSw2IEBACiAJCQkJQjI3NTM1
MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJCTU1NUI4N0VBMUNBQUYw
QUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCiAJCQkJNTU1Qjg3RUIxQ0FBRjBB
QjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCi0JCQkJQjI3NTM1MzEwQjA1MzgxNDAw
MkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovLAogCQkJCTRCMzQ4MDkyMEVFRjUwRDQwMEFD
MUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggKi8sCiAJCQkJNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQx
IC8qIEltYWdlU291cmNlQ0dNYWMubW0gKi8sCiAJCQkJQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRG
IC8qIEludFBvaW50Q0cuY3BwICovLApAQCAtMjk5ODYsNyArMjk5ODMsNiBAQAogCQkJCTJENUE1
OTJGMTUyNTI1MjMwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUI1MUEyRjQxMTdEN0Q1REUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0M3MjVFMTk3NDg3NEIwMEFFREQwQyAvKiBJbWFn
ZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2NEYg
LyogSW1hZ2VTb3VyY2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QjM0ODA5MzBFRUY1MEQ0
MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZF
MTE3MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCRTk2MUM1NDE4QUQzMzg1MDBEMDdEQzUgLyogSW5iYW5kRGF0YVRleHRUcmFjay5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHJldmlzaW9uIDE5ODkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxw
LnRva2VyQGNvbGxhYm9yYS5jby51az4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IFRvcmNo
IE1vYmlsZSwgSW5jCkBAIC0yOSwxOSArMjksMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCi0jaWYgIVVTRShDRykKLQorI2lmIFVTRShDRykKKyNp
bmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2Vsc2UKICNpbmNsdWRlICJJbWFnZURlY29kZXIu
aCIKKyNlbmRpZgogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIEVOQUJMRShJTUFH
RV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6c19tYXhQaXhl
bHNQZXJEZWNvZGVkSW1hZ2UgPSAxMDI0ICogMTAyNDsKLSNlbmRpZgotCiBJbWFnZVNvdXJjZTo6
SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNv
dXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCiAgICAgOiBtX2FscGhhT3B0aW9uKGFscGhhT3B0aW9uKQogICAgICwgbV9nYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKQEAgLTUwLDE0ICs0
OCwyNiBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFsCiAKIEltYWdl
U291cmNlOjp+SW1hZ2VTb3VyY2UoKQogewotICAgIGNsZWFyKHRydWUpOwogfQogCi12b2lkIElt
YWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjbGVhckJlZm9yZUZyYW1l
LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZVNv
dXJjZTo6Y2xlYXJGcmFtZUNhY2hlKHNpemVfdCBjbGVhckJlZm9yZUZyYW1lKQogewotICAgIGlm
ICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9kZWNvZGVyKQotICAgICAgICAgICAgbV9k
ZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7CisgICAgaWYg
KCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisjaWYgVVNFKENHKQorICAgIFVOVVNF
RF9QQVJBTShjbGVhckJlZm9yZUZyYW1lKTsKKyNlbHNlCisgICAgbV9kZWNvZGVyLT5jbGVhckZy
YW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7CisjZW5kaWYKK30KKwordm9pZCBJbWFn
ZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3QgY2xlYXJCZWZvcmVG
cmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICAv
LyBJbWFnZUlPIGRpc2NhcmRzIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBmcmFtZXMgaWYgdGhl
IGNsaWVudCBhcHBsaWNhdGlvbiBubyBsb25nZXIgaG9sZHMKKyAgICAvLyByZWZlcmVuY2VzIHRv
IHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5IHRoZSBkZWNvZGVyIHVubGVz
cyB3ZSdyZSBleHBsaWNpdGx5IGFza2VkCisgICAgLy8gdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZy
YW1lcy4KKyAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpIHsKKyAgICAgICAgY2xlYXJGcmFtZUNh
Y2hlKGNsZWFyQmVmb3JlRnJhbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03Miwx
NSArODIsNyBAQCB2b2lkIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkCiAgICAg
aWYgKGluaXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICAvLyBNYWtlIHRo
ZSBkZWNvZGVyIGJ5IHNuaWZmaW5nIHRoZSBieXRlcy4KLSAgICAvLyBUaGlzIG1ldGhvZCB3aWxs
IGV4YW1pbmUgdGhlIGRhdGEgYW5kIGluc3RhbnRpYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBhcHBy
b3ByaWF0ZSBkZWNvZGVyIHBsdWdpbi4KLSAgICAvLyBJZiBpbnN1ZmZpY2llbnQgYnl0ZXMgYXJl
IGF2YWlsYWJsZSB0byBkZXRlcm1pbmUgdGhlIGltYWdlIHR5cGUsIG5vIGRlY29kZXIgcGx1Z2lu
IHdpbGwgYmUKLSAgICAvLyBtYWRlLgogICAgIG1fZGVjb2RlciA9IEltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKCpkYXRhLCBtX2FscGhhT3B0aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
LSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAgIGlmIChtX2RlY29k
ZXIgJiYgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0
TWF4TnVtUGl4ZWxzKHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTsKLSNlbmRpZgogfQogCiB2
b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCkBAIC05OCwyMCArMTAwLDM5IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEo
U2hhcmVkQnVmZmVyKiAKICAgICBpZiAobV9kZWNvZGVyKQogICAgICAgICBtX2RlY29kZXItPnNl
dERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KKyAgICAKK1N1YnNhbXBsaW5nTGV2ZWwg
SW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KDApKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICAvLyBWYWx1ZXMgY2hvc2Vu
IHRvIGJlIGFwcHJvcHJpYXRlIGZvciBpT1MuCisgICAgY29uc3QgaW50IGNNYXhpbXVtSW1hZ2VB
cmVhQmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAyNCAqIDEwMjQ7CisgICAgY29uc3QgU3Vic2Ft
cGxpbmdMZXZlbCBtYXhTdWJzYW1wbGluZ0xldmVsID0gMzsKKyAgICAKKyAgICBTdWJzYW1wbGlu
Z0xldmVsIGN1cnJlbnRMZXZlbCA9IDA7CisgICAgZm9yICggOyBjdXJyZW50TGV2ZWwgPD0gbWF4
U3Vic2FtcGxpbmdMZXZlbDsgKytjdXJyZW50TGV2ZWwpIHsKKyAgICAgICAgSW50U2l6ZSBmcmFt
ZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KDAsIGN1cnJlbnRMZXZlbCk7CisgICAgICAgIGlmIChm
cmFtZVNpemUuYXJlYSgpIDwgY01heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZykKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY3VycmVudExldmVsOwor
fQogCi1TdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKK1N1YnNh
bXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6Om1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigp
IDogU3RyaW5nKCk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVs
KCk7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxG
b3JTY2FsZShmbG9hdCkgY29uc3QKK1N1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNh
bXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoc2NhbGUs
IG1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkpOwogfQogCi1ib29sIEltYWdlU291cmNlOjphbGxv
d1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorc2l6ZV90IEltYWdlU291
cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVBy
b3BlcnRpZXMoKTsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKQEAg
LTEyOSw5NyArMTUwLDY5IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3Jp
ZW4KICAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbik7CiB9CiAKLUludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0CitzaXplX3QgSW1hZ2VTb3VyY2U6OmZy
YW1lQ291bnQoKSBjb25zdAogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0
dXJuIHsgfTsKLQotICAgIEludFNpemUgc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRl
eChpbmRleCk7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IG1fZGVjb2Rlci0+
b3JpZW50YXRpb24oKTsKLSAgICAKLSAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50
YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRo
QXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7CisgICAgcmV0dXJuIGlu
aXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLWJvb2wgSW1h
Z2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CitpbnQgSW1hZ2VT
b3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYg
bV9kZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8g
bV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Ob25lOwogfQogCi1zaXpl
X3QgSW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0
CitTdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVF
eHRlbnNpb24oKSA6IFN0cmluZygpOwogfQogCi1pbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25D
b3VudCgpCitib29sIEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBj
b25zdAogewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5yZXBldGl0aW9u
Q291bnQoKSA6IGNBbmltYXRpb25Ob25lOworICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1f
ZGVjb2Rlci0+aG90U3BvdChob3RTcG90KTsKIH0KIAotc2l6ZV90IEltYWdlU291cmNlOjpmcmFt
ZUNvdW50KCkgY29uc3QKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5m
cmFtZUNvdW50KCkgOiAwOworICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+
ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdl
U291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwpCitib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5k
ZXgpCiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJ
bmRleChpbmRleCk7Cit9CiAKLSAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHBy
b2JsZW1zIGZvciBzb21lIHBvcnRzLiAgSWYgd2UgaGF2ZSBhbgotICAgIC8vIGVtcHR5IGltYWdl
IGRpbWVuc2lvbiwganVzdCBiYWlsLgotICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+
ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKLSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0
YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgLy8gUmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMgYSBuYXRpdmUgaW1hZ2Uu
ICBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKLSAgICAvLyBpcyBhbHJlYWR5IGluIGEgbmF0aXZl
IGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNyZW1lbnRzIGl0cyByZWZjb3VudC4KLSAgICBy
ZXR1cm4gYnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7Citib29sIEltYWdlU291cmNlOjphbGxv
d1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJl
dHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KGluZGV4KTsKIH0KIAotZmxvYXQgSW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCBpbmRleCkKK0ludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QK
IHsKICAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgSW1h
Z2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwot
ICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVF
bXB0eSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAvLyBN
YW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZs
YXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCi0gICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBi
ZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQg
c3BlY2lmeQotICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2Js
ZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgotICAgIC8vIGZvciBt
b3JlIGluZm9ybWF0aW9uLgotICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyLT5kdXJh
dGlvbigpIC8gMTAwMC4wZjsKLSAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCi0gICAgICAgIHJl
dHVybiAwLjEwMGY7Ci0gICAgcmV0dXJuIGR1cmF0aW9uOworICAgIEludFNpemUgc2l6ZSA9IG1f
ZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7
CisgICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRy
YW5zcG9zZWRTaXplKCkgOiBzaXplOwogfQogCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNl
OjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdAordW5zaWduZWQgSW1hZ2VTb3VyY2U6
OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluZ0xldmVsKSBjb25zdAogewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVy
LT5vcmllbnRhdGlvbigpIDogSW1hZ2VPcmllbnRhdGlvbigpOworICAgIHJldHVybiBmcmFtZVNp
emVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKS5hcmVhKCkgKiA0OwogfQogCi1ib29s
IEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCitmbG9hdCBJ
bWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJl
dHVybiAhaW5pdGlhbGl6ZWQoKSB8fCBtX2RlY29kZXItPmZyYW1lSGFzQWxwaGFBdEluZGV4KGlu
ZGV4KTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlv
bkF0SW5kZXgoaW5kZXgpIDogMDsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCitJbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpv
cmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogewotICAgIGlmICghaW5pdGlh
bGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSW1hZ2VGcmFtZSogYnVmZmVy
ID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIHJldHVybiBidWZm
ZXIgJiYgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAg
IHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5k
ZXgpIDogSW1hZ2VPcmllbnRhdGlvbigpOwogfQotCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJh
bWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAorICAg
IAorTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJl
dHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCkg
OiAwOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOwogfQogCiB2b2lk
IEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdApAQCAtMjMzLDUgKzIyNiwz
IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGMKIH0KICAgICAKIH0K
LQotI2VuZGlmIC8vIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkocmV2aXNpb24gMTk4OTEwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNSwx
MSArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLXR5cGVkZWYgc3RydWN0IENHSW1hZ2VTb3VyY2UqIENH
SW1hZ2VTb3VyY2VSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVm
OwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VPcmllbnRhdGlv
bjsKQEAgLTEwNyw1NyArMTAyLDQ3IEBAIHB1YmxpYzoKICAgICAvLyB3aG8gc2V0IHxkZXN0cm95
QWxsfCB0byB0cnVlIGlmIHRoZXkgd2lzaCB0byBiZSBhYmxlIHRvIGNvbnRpbnVlIHVzaW5nCiAg
ICAgLy8gdGhlIEltYWdlU291cmNlLiAgVGhpcyB3YXkgaW1wbGVtZW50YXRpb25zIHdoaWNoIGNo
b29zZSB0byBkZXN0cm95IHRoZWlyCiAgICAgLy8gZGVjb2RlcnMgaW4gc29tZSBjYXNlcyBjYW4g
cmVjb25zdHJ1Y3QgdGhlbSBjb3JyZWN0bHkuCi0gICAgdm9pZCBjbGVhcihib29sIGRlc3Ryb3lB
bGwsCi0gICAgICAgICAgICAgICBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSA9IDAsCi0gICAgICAg
ICAgICAgICBTaGFyZWRCdWZmZXIqIGRhdGEgPSBOVUxMLAotICAgICAgICAgICAgICAgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQgPSBmYWxzZSk7CisgICAgdm9pZCBjbGVhcihib29sIGRlc3Ryb3lBbGws
IHNpemVfdCBjbGVhckJlZm9yZUZyYW1lID0gMCwgU2hhcmVkQnVmZmVyKiBkYXRhID0gbnVsbHB0
ciwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQgPSBmYWxzZSk7CiAKICAgICBib29sIGluaXRpYWxpemVk
KCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9CiAKICAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgU3RyaW5nIGZp
bGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CiAKICAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZShmbG9hdCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1N1YnNhbXBsaW5n
T2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKICAgICB2b2lkIHNldEFsbG93U3Vic2FtcGxp
bmcoYm9vbCBhbGxvd1N1YnNhbXBsaW5nKSB7IG1fYWxsb3dTdWJzYW1wbGluZyA9IGFsbG93U3Vi
c2FtcGxpbmc7IH0KICAgICBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1wbGluZ0xldmVs
KCkgY29uc3Q7Ci0KLSAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOworICAgIHN0YXRpYyBzaXpl
X3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7CiAgICAgCisgICAgYm9vbCBp
c1NpemVBdmFpbGFibGUoKTsKICAgICAvLyBBbHdheXMgb3JpZ2luYWwgc2l6ZSwgd2l0aG91dCBz
dWJzYW1wbGluZy4KICAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKICAgICBJbnRTaXplIHNpemVS
ZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdDsKLSAgICAKLSAgICAvLyBTaXplIG9mIG9wdGlv
bmFsbHkgc3Vic2FtcGxlZCBmcmFtZS4KLSAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0g
RG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3Q7Ci0KLSAgICBib29sIGdldEhvdFNw
b3QoSW50UG9pbnQmKSBjb25zdDsKLQotICAgIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWlu
ZVByb3BlcnRpZXMoKSBjb25zdDsKLQotICAgIGludCByZXBldGl0aW9uQ291bnQoKTsKIAogICAg
IHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7CisgICAgaW50IHJlcGV0aXRpb25Db3VudCgpOwor
ICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OworICAgIGJvb2wgZ2V0SG90U3Bv
dChJbnRQb2ludCYpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhp
cyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKLSAgICAvLyBzZWUg
Y29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKLQotICAgIGZsb2F0
IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7Ci0gICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJ
bmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBh
bnkgYWxwaGEuCiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7IC8vIFdo
ZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBpcyBjb21wbGV0ZWx5IGRlY29kZWQuCi0gICAgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJRiBpbWFn
ZSBvcmllbnRhdGlvbgotCisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAv
LyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCisgICAg
Ym9vbCBhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAK
KyAgICAvLyBTaXplIG9mIG9wdGlvbmFsbHkgc3Vic2FtcGxlZCBmcmFtZS4KKyAgICBJbnRTaXpl
IGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCwgUmVzcGVjdElt
YWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3Q7
CisgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQg
ZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0CiAgICAgLy8gZGVjb2RlZCB0aGVuIHJldHVy
biAwLgogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IDApIGNvbnN0OwotCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElO
RykKLSAgICBzdGF0aWMgdW5zaWduZWQgbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKCkgeyByZXR1
cm4gc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRNYXhQ
aXhlbHNQZXJEZWNvZGVkSW1hZ2UodW5zaWduZWQgbWF4UGl4ZWxzKSB7IHNfbWF4UGl4ZWxzUGVy
RGVjb2RlZEltYWdlID0gbWF4UGl4ZWxzOyB9Ci0jZW5kaWYKLQorICAgIAorICAgIGZsb2F0IGZy
YW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJRiBpbWFnZSBvcmllbnRhdGlvbgorICAg
IAorICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVh
cigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CisgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkg
YWJvdmUuCisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CisgICAgCiBwcml2YXRlOgorICAgIHZvaWQgY2xlYXJG
cmFtZUNhY2hlKHNpemVfdCk7CiAgICAgdm9pZCBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJl
ZEJ1ZmZlciopOwogICAgIFN1YnNhbXBsaW5nTGV2ZWwgY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBs
aW5nTGV2ZWwoKSBjb25zdDsKICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0OwpAQCAt
MTcwLDEzICsxNTUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIHsg
ZmFsc2UgfTsKICNlbmRpZgogCi0jaWYgIVVTRShDRykKICAgICBBbHBoYU9wdGlvbiBtX2FscGhh
T3B0aW9uOwogICAgIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIG1fZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb247Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBM
SU5HKQotICAgIHN0YXRpYyB1bnNpZ25lZCBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsKLSNl
bmRpZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkocmV2aXNpb24gMTk4OTEwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDMsNiArMzAzLDcgQEAgZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1
cmF0aW9uQXRJbmRleAogCiBib29sIEltYWdlRGVjb2Rlcjo6YWxsb3dTdWJzYW1wbGluZ09mRnJh
bWVBdEluZGV4KHNpemVfdCkgY29uc3QKIHsKKyNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNv
cHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIuZ2V0KCksIDAsIGltYWdlU291cmNl
T3B0aW9ucygpLmdldCgpKSk7CiAgICAgaWYgKCFwcm9wZXJ0aWVzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0zMjEsNiArMzIyLDkgQEAgYm9vbCBJbWFnZURlY29kZXI6OmFsbG93U3Vic2Ft
cGxpbmdPZkZyYQogICAgIH0KICAgICAKICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhh
QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgJKHJldmlzaW9uIDE5ODkx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwxNiBAQAogI2luY2x1ZGUgIkltYWdlU291
cmNlQ0cuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAKK3R5cGVkZWYgc3RydWN0IENHSW1hZ2VT
b3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSog
Q0ZEYXRhUmVmOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlRGVjb2RlciB7
CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyKCk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZURlY29kZXI+IGNyZWF0ZSgpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBJbWFnZVNvdXJjZTo6QWxwaGFP
cHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlRGVjb2Rlcj4oKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHLmNwcAkocmV2aXNpb24gMTk4OTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjE1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklt
YWdlU291cmNlLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgot
Ci0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9u
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VT
b3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotewotICAgIC8vIEZJWE1FOiBBbHBo
YU9wdGlvbiBhbmQgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gYXJlIGlnbm9yZWQuCi19Ci0K
LUltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQotewotICAgIGNsZWFyKHRydWUpOwotfQotCi12
b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGxGcmFtZXMsIHNpemVfdCwgU2hh
cmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICAvLyBSZWNlbnQg
dmVyc2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBmcmFt
ZXMgaWYgdGhlIGNsaWVudAotICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxvbmdlciBob2xkcyByZWZl
cmVuY2VzIHRvIHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5Ci0gICAgLy8g
dGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQgdG8gZGVzdHJveSBhbGwg
b2YgdGhlIGZyYW1lcy4KLSAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fZGVjb2RlciA9IG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLSAgICAKLXZvaWQgSW1hZ2VT
b3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKikKLXsKLSAgICBpZiAo
aW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZGVjb2RlciA9IEltYWdlRGVj
b2Rlcjo6Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICBpZiAoIWRhdGEpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKGRhdGEpOwotICAg
IAotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBtX2RlY29kZXItPnNldERhdGEo
ZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLQotU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFt
ZUV4dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29k
ZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKLX0KLSAgICAKLVN1YnNhbXBsaW5n
TGV2ZWwgSW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29u
c3QKLXsKLSAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09m
RnJhbWVBdEluZGV4KDApKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFZhbHVlcyBjaG9z
ZW4gdG8gYmUgYXBwcm9wcmlhdGUgZm9yIGlPUy4KLSAgICBjb25zdCBpbnQgY01heGltdW1JbWFn
ZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBjb25zdCBTdWJz
YW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwotCi0gICAgU3Vic2FtcGxpbmdM
ZXZlbCBjdXJyZW50TGV2ZWwgPSAwOwotICAgIGZvciAoIDsgY3VycmVudExldmVsIDw9IG1heFN1
YnNhbXBsaW5nTGV2ZWw7ICsrY3VycmVudExldmVsKSB7Ci0gICAgICAgIEludFNpemUgZnJhbWVT
aXplID0gZnJhbWVTaXplQXRJbmRleCgwLCBjdXJyZW50TGV2ZWwpOwotICAgICAgICBpZiAoZnJh
bWVTaXplLmFyZWEoKSA8IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3VycmVudExldmVsOwotfQotICAg
IAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwo
KSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gY2FsY3VsYXRlTWF4aW11
bVN1YnNhbXBsaW5nTGV2ZWwoKTsKLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1TdWJzYW1w
bGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2Nh
bGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZv
clNjYWxlKHNjYWxlLCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpKTsKLX0KLQotYm9vbCBJbWFn
ZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAm
JiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwotfQotCi1ib29sIEltYWdlU291cmNlOjph
bGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAg
IHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGluZ09mRnJh
bWVBdEluZGV4KGluZGV4KTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBj
b25zdAotewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICAKLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBt
X2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgCi0gICAgcmV0dXJuIHNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYm
IG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkg
OiBzaXplOwotfQotCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0
SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8g
bV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogSW1hZ2VPcmllbnRhdGlvbigp
OwotfQotCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
ZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLX0KLSAgICAKLUludFNpemUgSW1hZ2VTb3VyY2U6OnNp
emVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZVNpemVB
dEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKLX0KLQotYm9vbCBJbWFnZVNv
dXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKLXsKLSAgICByZXR1cm4g
aW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7Ci19Ci0KLXNpemVf
dCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3Bl
cnRpZXMoKTsKLX0KLSAgICAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKLXsK
LSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkg
OiBjQW5pbWF0aW9uTG9vcE9uY2U7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3Vu
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1l
Q291bnQoKSA6IDA7Ci19Ci0KLVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7
Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+ZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleChpbmRleCk7Ci19Ci0KLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBt
X2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KSA6IDA7Ci19Ci0KLWJvb2wgSW1h
Z2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICByZXR1
cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRl
eCk7Ci19Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKLXsKLSAgICBJ
bnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwpOwotICAgIHJldHVybiBmcmFtZVNpemUuYXJlYSgpICogNDsKLX0KLSAgICAKLXZvaWQgSW1h
Z2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fYWxsb3dT
dWJzYW1wbGluZykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbGxvdy1zdWJzYW1wbGluZyIs
IG1fYWxsb3dTdWJzYW1wbGluZyk7Ci0gICAgCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbiA9IG9yaWVudGF0aW9uQXRJbmRleCgwKTsKLSAgICBpZiAob3JpZW50YXRpb24gIT0gT3Jp
Z2luVG9wTGVmdCkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvcmllbnRhdGlvbiIsIG9yaWVu
dGF0aW9uKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3Bw
CShyZXZpc2lvbiAxOTg5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCkBAIC0yNzAsMTMgKzI3MSwxNiBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5
cGU+IGludCBnZXRTY2FsZWRWCiAKIH0KIAotYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlz
Q29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVD
b21wbGV0ZSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uaGFzQWxw
aGEoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1l
Q29tcGxldGU7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFmcmFtZUlzQ29tcGxldGVBdEluZGV4
KGluZGV4KSB8fCBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmhhc0FscGhhKCk7CiB9CiAKIHVu
c2lnbmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25z
dApAQCAtMjg3LDYgKzI5MSw0MiBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNB
dEluZGV4CiAgICAgcmV0dXJuIG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4
ZWxEYXRhKTsKIH0KIAorZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChz
aXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkg
PD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICAvLyBNYW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0
byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCisgICAgLy8gV2Ug
Zm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZv
ciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMu
IFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2
MDgyPgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIGNvbnN0IGZsb2F0IGR1cmF0
aW9uID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5kdXJhdGlvbigpIC8gMTAwMC4wZjsKKyAg
ICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAgICAgIHJldHVybiAwLjEwMGY7CisgICAgcmV0
dXJuIGR1cmF0aW9uOworfQorCitOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK3sK
KyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2Js
ZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuCisgICAgLy8gZW1wdHkgaW1hZ2UgZGlt
ZW5zaW9uLCBqdXN0IGJhaWwuCisgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVz
KCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gRm9y
IHNvbWUgcG9ydHMsIHRoZSBkYXRhCisgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250
YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCisgICAgcmV0dXJu
IG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uYXNOZXdOYXRpdmVJbWFnZSgpOworfQorCiB2b2lk
IEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCkKIHsKICAgICBtX3Nj
YWxlZCA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDE5ODkxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAw
OSBUb3JjaCBNb2JpbGUsIEluYy4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQpAQCAt
MjM1LDE1ICsyMzUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbWFnZURlY29kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CiAgICAgICAgIEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICAgICAgICAgIDogbV9zY2FsZWQoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6
QWxwaGFQcmVtdWx0aXBsaWVkKQorICAgICAgICAgICAgOiBtX3ByZW11bHRpcGx5QWxwaGEoYWxw
aGFPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKICAgICAgICAgICAg
ICwgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biA9PSBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkKQotICAgICAgICAg
ICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbWF4TnVtUGl4ZWxz
KC0xKQotICAgICAgICAgICAgLCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQotICAgICAgICAg
ICAgLCBtX2ZhaWxlZChmYWxzZSkgeyB9CisgICAgICAgIHsKKyAgICAgICAgfQogCi0gICAgICAg
IHZpcnR1YWwgfkltYWdlRGVjb2RlcigpIHsgfQorICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29k
ZXIoKQorICAgICAgICB7CisgICAgICAgIH0KIAogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVy
LW93bmVkIGRlY29kZXIgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBSZXR1cm5zIDAgaWYKICAg
ICAgICAgLy8gd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRl
ZCBkYXRhIChwb3NzaWJseQpAQCAtMjgyLDcgKzI4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gc2l6ZXMuICBUaGlzIGRvZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBmb3Ig
R0lGLCBzaW5jZSBkZWNvZGluZyBHSUZzCiAgICAgICAgIC8vIGNvbXBvc2l0ZXMgYW55IHNtYWxs
ZXIgZnJhbWVzIGFnYWluc3QgcHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQogICAgICAg
ICAvLyBzaXplIGZyYW1lcy4KLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGZyYW1lU2l6ZUF0SW5k
ZXgoc2l6ZV90KSBjb25zdAorICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBzaXplKCk7CiAgICAgICAgIH0KQEAgLTMxMCwxNiArMzA5LDI0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50ZXIuCiAgICAg
ICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgPSAwOwog
CisgICAgICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0OworCiAg
ICAgICAgIC8vIE1ha2UgdGhlIGJlc3QgZWZmb3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRoZSByZXF1
ZXN0ZWQgZnJhbWUgaGFzIGFscGhhIGNoYW5uZWwuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBmcmFt
ZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICBib29sIGZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKICAgICAgICAgLy8gTnVtYmVyIG9mIGJ5dGVzIGlu
IHRoZSBkZWNvZGVkIGZyYW1lIHJlcXVlc3RlZC4gUmV0dXJuIDAgaWYgbm90IHlldCBkZWNvZGVk
LgotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29u
c3Q7CisgICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7Cisg
ICAgICAgIAorICAgICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0
OworICAgICAgICAKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsKIAogICAgICAgICB2b2lkIHNldEln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29s
b3JQcm9maWxlID0gZmxhZzsgfQogICAgICAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJv
ZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KIAot
ICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9v
cmllbnRhdGlvbjsgfQorICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICAgICAgCisgICAg
ICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICBlbnVtIHsgaWNjQ29sb3JQcm9maWxlSGVhZGVyTGVu
Z3RoID0gMTI4IH07CiAKQEAgLTMzMCw2ICszMzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzE2XSwgIlJHQiAiLCA0KTsK
ICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1p
bmVQcm9wZXJ0aWVzKCkgeyByZXR1cm4gMDsgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0LCBTdWJzYW1wbGlu
Z0xldmVsKSB7IHJldHVybiAwOyB9CisKICAgICAgICAgc3RhdGljIGJvb2wgaW5wdXREZXZpY2VD
b2xvclByb2ZpbGUoY29uc3QgY2hhciogcHJvZmlsZURhdGEsIHVuc2lnbmVkIHByb2ZpbGVMZW5n
dGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvZmlsZUxlbmd0aCwg
cHJvZmlsZUxlbmd0aCA+PSBpY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpOwpAQCAtMzU0LDEw
ICszNjUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGNvbXBvc2l0aW5nKS4K
ICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQog
Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICAgICAgdm9pZCBz
ZXRNYXhOdW1QaXhlbHMoaW50IG0pIHsgbV9tYXhOdW1QaXhlbHMgPSBtOyB9Ci0jZW5kaWYKLQog
ICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9yZXMgaXQg
aW4gdGhlIGFyZ3VtZW50CiAgICAgICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSBy
ZXR1cm5zIGZhbHNlLgogICAgICAgICB2aXJ0dWFsIGJvb2wgaG90U3BvdChJbnRQb2ludCYpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zNzQsNyArMzgxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwog
ICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9y
IGFueSBwb3J0PwogICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7Ci0gICAgICAg
IGJvb2wgbV9zY2FsZWQ7CisgICAgICAgIGJvb2wgbV9zY2FsZWQgeyBmYWxzZSB9OwogICAgICAg
ICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2Nh
bGVkUm93czsKICAgICAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CkBAIC0zOTIsMTAgKzM5
OSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICBJbnRTaXpl
IG1fc2l6ZTsKLSAgICAgICAgYm9vbCBtX3NpemVBdmFpbGFibGU7Ci0gICAgICAgIGludCBtX21h
eE51bVBpeGVsczsKLSAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkOwotICAgICAgICBi
b29sIG1fZmFpbGVkOworICAgICAgICBib29sIG1fc2l6ZUF2YWlsYWJsZSB7IGZhbHNlIH07Cisj
aWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICAgICAgaW50IG1fbWF4
TnVtUGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsKKyNlbHNlCisgICAgICAgIGludCBtX21heE51bVBp
eGVscyB7IC0xIH07CisjZW5kaWYKKyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkIHsg
ZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2ZhaWxlZCB7IGZhbHNlIH07CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276080</attachid>
            <date>2016-04-08 22:43:08 -0700</date>
            <delta_ts>2016-04-08 22:55:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160408224315.patch</filename>
            <type>text/plain</type>
            <size>48558</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTI2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNiBAQAorMjAxNi0wNC0wOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdlIENH
IEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4gb25l
IGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
YWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4gQWxs
IHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJbWFn
ZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNhbiBo
YXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0IHJp
ZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0L2lt
YWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5kIGFk
ZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1vdmUgY2xlYXIodHJ1ZSkgY2Fs
bC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFy
RnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxscyBJbWFnZURlY29kZXI6OmNs
ZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNs
ZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hpY2ggd2lsbCBkbyBub3RoaW5n
IGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5zdXJl
RGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvCisgICAgICAgIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJbWFnZURlY29kZXI6OnNldE1h
eE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29uc3Qgc3RhdGljIGludCBDRyBJ
bWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0CisgICAgICAgIGJhc2VkIG9u
IElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVmZmVyJiB0byB0aGUgdW5kZXJs
eWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0dXJucyB0aGUgbWF4aW11bQor
ICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBhbiBpbWFnZS4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxl
KTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1YnNhbXBsaW5nTGV2ZWwgdGFr
aW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgZm9yCisg
ICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKTogUmV0dXJucyB0
aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hpY2ggY2FuIGRldGVybWluZSB0
aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisgICAgICAgIHplcm8uIEZvciBD
RyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNvcnJlY3RlZCBsYXRlci4KKyAg
ICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpm
cmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpm
cmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpm
cmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVE
dXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVudGF0
aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBlcnMgZm9yIHRoZSBJbWFnZURl
Y29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGlzIHRv
IGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisgICAgICAgIAorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6ZHVt
cCgpLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldEFsbG93U3Vic2FtcGxpbmcpOiBD
YWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6c2V0QWxsb3dTdWJzYW1wbGluZygpLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVsc1Bl
ckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIFNldHRpbmcgbWF4UGl4ZWxzUGVyRGVj
b2RlZEltYWdlIHdhcyBtb3ZlZCB0byB0aGUgbm9uIENHIEltYWdlRGVjb2Rlci4KKyAgICAgICAg
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIFNoYXJlZEJ1ZmZl
ciogdG8gU2hhcmVkQnVmZmVyJi4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpz
dWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOiBEZWxldGVkLgorICAgICAgICBUaGUgY29kZSB3YXMg
bW92ZWQgdG8gSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSgpLgorICAgICAg
ICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOiBNYWtlIHRoZSBwcm90b3R5cGUg
b2YgdGhpcyBmdW5jdGlvbgorICAgICAgICBzdWl0YWJsZSBmb3IgQ0cgYW5kIG5vbiBDRyBjYXNl
cy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KTogRW1wdHkgZnVuY3Rpb25zIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOiBBIG1ldyBmdW5j
dGlvbiB0byByZXR1cm4KKyAgICAgICAgd2hldGhlciB0aGUgZnJhbWUgZGVjb2RpbmcgaXMgY29t
cGxldGUgb3Igbm90LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOiBTaW1wbGlmeSB0aGUgbG9naWMuCisgICAgICAgIAorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6IFRoZSBj
b2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJ
bmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KTogVGhlIGNvZGUgd2FzIG1vdmVk
IGZyb20KKyAgICAgICAgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KCkgaW4g
SW1hZ2VTb3VyY2UuY3BwLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6SW1h
Z2VEZWNvZGVyKTogSW5pdGlhbGl6ZSB0aGUgbWVtYmVycyBpbiBjbGFzcy4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6IEZpeCB0aGUgYnJhY2VzIHN0eWxl
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIHRoZSB0
eXBlIG9mIHRoZSBhcmd1bWVudCBmcm9tCisgICAgICAgIFNoYXJlZEJ1ZmZlciogdG8gU2hhcmVk
QnVmZmVyJi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRl
eCk6IEFkZCB0aGUgYXJndW1lbnQgU3Vic2FtcGxpbmdMZXZlbAorICAgICAgICBzbyBpdCBjYW4g
aGF2ZSB0aGUgc2FtZSBwcm90b3R5cGUgYXMgQ0cuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6IFJlbmFtZSBpdCB0byB0aGUgc2FtZSBvZiBDRy4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmFsbG93U3Vic2FtcGxp
bmdPZkZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5dGVz
RGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6IEFkZCB0aGVzZSBmdW5jdGlvbnMKKyAg
ICAgICAgYW5kIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMgc28gd2UgZG8gbm90IGhhdmUgdG8g
YWRkIGRpcmVjdGl2ZSBjb21waWxlZAorICAgICAgICBub24gQ0cgYmxvY2tzIGluIEltYWdlU291
cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Om9yaWVu
dGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0TWF4
TnVtUGl4ZWxzKTogRGVsZXRlZC4KKwogMjAxNi0wNC0wOCAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFhIUnMgYW5kIFdlYiBX
b3JrZXIgc2NyaXB0cyBhcmUgbm90IHNlYXJjaGFibGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxOTkyNjMpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjIxMyw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UG9pbnQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFw
cGxlV2luLmNtYWtlCShyZXZpc2lvbiAxOTkyNjMpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHV2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UJKHJldmlzaW9uIDE5OTI2MykKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNyArNDA2LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5OTI2MykK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNDk4Niw3ICs0OTg2LDYgQEAKIAkJQjI3NTM1NUEwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0UmVjdENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAg
Ki87IH07CiAJCUIyNzUzNTVCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyRDBCMDUz
ODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovOyB9OwogCQlCMjc1MzU1RTBCMDUzODE0
MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi87
IH07Ci0JCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMxMEIwNTM4
MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjAwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cu
Y3BwICovOyB9OwogCQlCMjc1MzU2MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENHLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMzMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2MjBCMDUzODE0
MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3Bw
ICovOyB9OwpAQCAtMTI4NzcsNyArMTI4NzYsNiBAQAogCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2
NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZsb2F0UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1
MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNpemVDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNl
Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlU291cmNl
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMjBCMDUzODE0MDAy
Q0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW50UG9pbnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUz
NTMzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEludFJlY3RDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFNpemVDRy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMTc4NSw3ICsyMTc4Myw2IEBACiAJCQkJQjI3NTM1MzAwQjA1
MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJCTU1NUI4N0VBMUNBQUYwQUIwMDM0
OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCiAJCQkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCi0JCQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRG
IC8qIEltYWdlU291cmNlQ0cuY3BwICovLAogCQkJCTRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAv
KiBJbWFnZVNvdXJjZUNHLmggKi8sCiAJCQkJNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIElt
YWdlU291cmNlQ0dNYWMubW0gKi8sCiAJCQkJQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFBvaW50Q0cuY3BwICovLApAQCAtMzAwMDQsNyArMzAwMDEsNiBAQAogCQkJCTJENUE1OTJGMTUy
NTI1MjMwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUI1MUEyRjQxMTdEN0Q1REUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGM0M3MjVFMTk3NDg3NEIwMEFFREQwQyAvKiBJbWFnZVNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2NEYgLyogSW1h
Z2VTb3VyY2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QjM0ODA5MzBFRUY1MEQ0MDBBQzFC
NDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMTE3MEU2
RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCRTk2MUM1NDE4QUQzMzg1MDBEMDdEQzUgLyogSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAJKHJldmlzaW9uIDE5OTI2MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA3IEFscCBUb2tlciA8YWxwLnRva2VyQGNvbGxhYm9yYS5jby51az4KICAqIENvcHlyaWdodCAo
QykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jCkBAIC0yOSwxOSArMjksMTYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCi0jaWYgIVVTRShDRykK
LQorI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2Vsc2UKICNpbmNs
dWRlICJJbWFnZURlY29kZXIuaCIKKyNlbmRpZgogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi11bnNpZ25lZCBJbWFn
ZVNvdXJjZTo6c19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSAxMDI0ICogMTAyNDsKLSNlbmRp
ZgotCiBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX2FscGhhT3B0aW9uKGFscGhhT3B0aW9uKQog
ICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKQEAgLTUwLDE0ICs0NywyMSBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VT
b3VyY2U6OkFsCiAKIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogewotICAgIGNsZWFyKHRy
dWUpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVf
dCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCBjbGVh
ckJlZm9yZUZyYW1lKQogewotICAgIGlmICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9k
ZWNvZGVyKQotICAgICAgICAgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xl
YXJCZWZvcmVGcmFtZSk7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47
CisgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7
Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1lcywgc2l6
ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCit7CisgICAgLy8gVGhlcmUncyBubyBuZWVkIHRvIHRocm93IGF3YXkgdGhlIGRlY29k
ZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQKKyAgICAvLyB0byBkZXN0cm95IGFsbCBv
ZiB0aGUgZnJhbWVzLgorICAgIGlmICghZGVzdHJveUFsbEZyYW1lcykgeworICAgICAgICBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTY3LDIwICs3MSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRl
c3Ryb3lBbGwsCiAgICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAot
dm9pZCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpCit2b2lkIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIC8vIE1ha2UgdGhlIGRlY29kZXIgYnkgc25pZmZpbmcgdGhlIGJ5dGVzLgot
ICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgZXhhbWluZSB0aGUgZGF0YSBhbmQgaW5zdGFudGlhdGUg
YW4gaW5zdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGRlY29kZXIgcGx1Z2luLgotICAgIC8vIElm
IGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRldGVybWluZSB0aGUgaW1hZ2Ug
dHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQotICAgIC8vIG1hZGUuCi0gICAgbV9kZWNv
ZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOwotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FN
UExJTkcpCi0gICAgaWYgKG1fZGVjb2RlciAmJiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSkK
LSAgICAgICAgbV9kZWNvZGVyLT5zZXRNYXhOdW1QaXhlbHMoc19tYXhQaXhlbHNQZXJEZWNvZGVk
SW1hZ2UpOwotI2VuZGlmCisgICAgbV9kZWNvZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoZGF0
YSwgbV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiB9CiAKIHZv
aWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKQEAgLTg4LDcgKzg0LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFy
ZWRCdWZmZXIqIAogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGVu
c3VyZURlY29kZXJJc0NyZWF0ZWQoZGF0YSk7CisgICAgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZCgq
ZGF0YSk7CiAgICAgCiAgICAgaWYgKCFpbml0aWFsaXplZCgpKSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtOTYsMjIgKzkyLDQ2IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERh
dGEoU2hhcmVkQnVmZmVyKiAKICAgICB9CiAKICAgICBpZiAobV9kZWNvZGVyKQotICAgICAgICBt
X2RlY29kZXItPnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgbV9kZWNv
ZGVyLT5zZXREYXRhKCpkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQotCi1TdHJpbmcgSW1hZ2VT
b3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKKyAgICAKK1N1YnNhbXBsaW5nTGV2ZWwg
SW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpIDog
U3RyaW5nKCk7CisgICAgaWYgKCFtX2FsbG93U3Vic2FtcGxpbmcgfHwgIWFsbG93U3Vic2FtcGxp
bmdPZkZyYW1lQXRJbmRleCgwKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgLy8gRklY
TUU6IHRoaXMgdmFsdWUgd2FzIGNob3NlbiB0byBiZSBhcHByb3ByaWF0ZSBmb3IgaU9TIHNpbmNl
IHRoZSBpbWFnZQorICAgIC8vIHN1YnNhbXBsaW5nIGlzIG9ubHkgZW5hYmxlZCBieSBkZWZhdWx0
IG9uIGlPUy4gQ2hvb3NlIGEgZGlmZmVyZW50IHZhbHVlCisgICAgLy8gaWYgaW1hZ2Ugc3Vic2Ft
cGxpbmcgaXMgZW5hYmxlZCBvbiBvdGhlciBwbGF0Zm9ybS4KKyAgICBjb25zdCBpbnQgY01heGlt
dW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsKKyAgICBjb25z
dCBTdWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOworICAgIAorICAgIGZv
ciAoU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0gMDsgc3Vic2FtcGxpbmdMZXZl
bCA8IG1heFN1YnNhbXBsaW5nTGV2ZWw7ICsrc3Vic2FtcGxpbmdMZXZlbCkgeworICAgICAgICBJ
bnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoMCwgc3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgICAgIGlmIChmcmFtZVNpemUuYXJlYSgpIDwgY01heGltdW1JbWFnZUFyZWFCZWZvcmVT
dWJzYW1wbGluZykKKyAgICAgICAgICAgIHJldHVybiBzdWJzYW1wbGluZ0xldmVsOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gbWF4U3Vic2FtcGxpbmdMZXZlbDsKIH0KIAotU3Vic2FtcGxpbmdM
ZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdAor
U3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZs
b2F0IHNjYWxlKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIGlmIChzY2FsZSA8PSAwIHx8
IHNjYWxlID4gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgU3Vic2FtcGxpbmdMZXZl
bCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCA9IGNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xl
dmVsKCk7CisgICAgaWYgKCFtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1wbGluZyBsZXZlbHM6IDAgPSAxeCwg
MSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KKyAgICBTdWJzYW1wbGluZ0xldmVsIHJl
c3VsdCA9IGNlaWxmKGxvZzJmKDEgLyBzY2FsZSkpOworICAgIHJldHVybiBzdGQ6Om1pbihyZXN1
bHQsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6YWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QKK3NpemVfdCBJbWFnZVNv
dXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKIHsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQ
cm9wZXJ0aWVzKCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCkBA
IC0xMjksOTcgKzE0OSw2OSBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09y
aWVuCiAgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pOwogfQogCi1JbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpm
cmFtZUNvdW50KCkgY29uc3QKIHsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJl
dHVybiB7IH07Ci0KLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5k
ZXgoaW5kZXgpOwotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBtX2RlY29kZXIt
Pm9yaWVudGF0aW9uKCk7Ci0gICAgCi0gICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0
aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOworICAgIHJldHVybiBp
bml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwogfQogCi1ib29sIElt
YWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAoraW50IEltYWdl
U291cmNlOjpyZXBldGl0aW9uQ291bnQoKQogewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYm
IG1fZGVjb2Rlci0+aG90U3BvdChob3RTcG90KTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKIH0KIAotc2l6
ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25z
dAorU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZpbGVuYW1l
RXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKIH0KIAotaW50IEltYWdlU291cmNlOjpyZXBldGl0aW9u
Q291bnQoKQorYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlv
bkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBt
X2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJh
bWVDb3VudCgpIGNvbnN0Citib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+
ZnJhbWVDb3VudCgpIDogMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXIt
PmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsKQorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0
SW5kZXgoaW5kZXgpOworfQogCi0gICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBw
cm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KLSAgICAvLyBlbXB0eSBpbWFn
ZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KLSAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXIt
PmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5z
dGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdl
LiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCi0gICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2
ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCi0gICAg
cmV0dXJuIGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOworYm9vbCBJbWFnZVNvdXJjZTo6YWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleChpbmRleCk7CiB9CiAKLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJ
bmRleChzaXplX3QgaW5kZXgpCitJbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0
CiB7CiAgICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIElt
YWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsK
LSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1l
RW1wdHkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgLy8g
TWFueSBhbm5veWluZyBhZHMgc3BlY2lmeSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBm
bGFzaCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLgotICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94J3Mg
YmVoYXZpb3IgYW5kIHVzZSBhIGR1cmF0aW9uIG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0aGF0
IHNwZWNpZnkKLSAgICAvLyBhIGR1cmF0aW9uIG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9wcm9i
bGVtLzc2ODkzMDA+IGFuZCA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNjA4Mj4KLSAgICAvLyBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4KLSAgICBjb25zdCBmbG9hdCBkdXJhdGlvbiA9IGJ1ZmZlci0+ZHVy
YXRpb24oKSAvIDEwMDAuMGY7Ci0gICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQotICAgICAgICBy
ZXR1cm4gMC4xMDBmOwotICAgIHJldHVybiBkdXJhdGlvbjsKKyAgICBJbnRTaXplIHNpemUgPSBt
X2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAg
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgp
OworICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50
cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKIH0KIAotSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJj
ZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QKK3Vuc2lnbmVkIEltYWdlU291cmNl
OjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rl
ci0+b3JpZW50YXRpb24oKSA6IEltYWdlT3JpZW50YXRpb24oKTsKKyAgICByZXR1cm4gZnJhbWVT
aXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkuYXJlYSgpICogNDsKIH0KIAotYm9v
bCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQorZmxvYXQg
SW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBy
ZXR1cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChp
bmRleCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lRHVyYXRp
b25BdEluZGV4KGluZGV4KSA6IDA7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6
b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBpZiAoIWluaXRp
YWxpemVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEltYWdlRnJhbWUqIGJ1ZmZl
ciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKLSAgICByZXR1cm4gYnVm
ZmVyICYmIGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyAg
ICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGlu
ZGV4KSA6IEltYWdlT3JpZW50YXRpb24oKTsKIH0KLQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKKyAg
ICAKK05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICBy
ZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgp
IDogMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKIH0KIAogdm9p
ZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKQEAgLTIzMyw1ICsyMjUs
MyBAQCB2b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjCiB9CiAgICAgCiB9
Ci0KLSNlbmRpZiAvLyBVU0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHJldmlzaW9uIDE5OTI2MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMTAsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwg
SW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzUsMTEgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi10
eXBlZGVmIHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwotdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEltYWdlT3JpZW50YXRpb247CkBAIC04Myw3ICs3OCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkCiAgICAgfTsKIAotICAgIElt
YWdlU291cmNlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uID0gQWxwaGFQcmVtdWx0aXBsaWVkLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdh
bW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCk7CisgICAgSW1hZ2VTb3VyY2UoQWxwaGFPcHRpb24g
PSBBbHBoYVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFB
bmRDb2xvclByb2ZpbGVBcHBsaWVkKTsKICAgICB+SW1hZ2VTb3VyY2UoKTsKIAogICAgIC8vIFRl
bGxzIHRoZSBJbWFnZVNvdXJjZSB0aGF0IHRoZSBJbWFnZSBubyBsb25nZXIgY2FyZXMgYWJvdXQg
ZGVjb2RlZCBmcmFtZQpAQCAtMTA3LDc2ICsxMDIsNjEgQEAgcHVibGljOgogICAgIC8vIHdobyBz
ZXQgfGRlc3Ryb3lBbGx8IHRvIHRydWUgaWYgdGhleSB3aXNoIHRvIGJlIGFibGUgdG8gY29udGlu
dWUgdXNpbmcKICAgICAvLyB0aGUgSW1hZ2VTb3VyY2UuICBUaGlzIHdheSBpbXBsZW1lbnRhdGlv
bnMgd2hpY2ggY2hvb3NlIHRvIGRlc3Ryb3kgdGhlaXIKICAgICAvLyBkZWNvZGVycyBpbiBzb21l
IGNhc2VzIGNhbiByZWNvbnN0cnVjdCB0aGVtIGNvcnJlY3RseS4KLSAgICB2b2lkIGNsZWFyKGJv
b2wgZGVzdHJveUFsbCwKLSAgICAgICAgICAgICAgIHNpemVfdCBjbGVhckJlZm9yZUZyYW1lID0g
MCwKLSAgICAgICAgICAgICAgIFNoYXJlZEJ1ZmZlciogZGF0YSA9IE5VTEwsCi0gICAgICAgICAg
ICAgICBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKKyAgICB2b2lkIGNsZWFyKGJvb2wg
ZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLCBTaGFyZWRCdWZmZXIqIGRh
dGEgPSBudWxscHRyLCBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKIAogICAgIGJvb2wg
aW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKIAogICAgIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdDsKLSAgICBib29sIGFsbG93
U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAgIHZvaWQgc2V0QWxs
b3dTdWJzYW1wbGluZyhib29sIGFsbG93U3Vic2FtcGxpbmcpIHsgbV9hbGxvd1N1YnNhbXBsaW5n
ID0gYWxsb3dTdWJzYW1wbGluZzsgfQotICAgIFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwoKSBjb25zdDsKLQotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CisgICAg
c3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKICAgICAK
KyAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgIC8vIEFsd2F5cyBvcmlnaW5hbCBzaXpl
LCB3aXRob3V0IHN1YnNhbXBsaW5nLgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgIElu
dFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0OwotICAgIAotICAgIC8vIFNp
emUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNpemUgZnJhbWVTaXpl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdDsKLQotICAgIGJv
b2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OwotCi0gICAgc2l6ZV90IGJ5dGVzRGVjb2Rl
ZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0OwotCi0gICAgaW50IHJlcGV0aXRpb25Db3Vu
dCgpOwogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKKyAgICBpbnQgcmVwZXRpdGlv
bkNvdW50KCk7CisgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CisgICAgYm9v
bCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Q7CiAKLSAgICAvLyBDYWxsZXJzIHNob3VsZCBu
b3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4Owot
ICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOwot
Ci0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKLSAgICBib29sIGZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1
YWxseSB1c2VkIGFueSBhbHBoYS4KICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6
ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGlzIGNvbXBsZXRlbHkgZGVjb2RlZC4K
LSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OyAv
LyBFWElGIGltYWdlIG9yaWVudGF0aW9uCi0KKyAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBh
bHBoYS4KKyAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNv
bnN0OworICAgIAorICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgor
ICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAw
LCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKSBjb25zdDsKKyAgICAKICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpbiB0
aGUgZGVjb2RlZCBmcmFtZS4gSWYgdGhlIGZyYW1lIGlzIG5vdCB5ZXQKICAgICAvLyBkZWNvZGVk
IHRoZW4gcmV0dXJuIDAuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gMCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9E
T1dOX1NBTVBMSU5HKQotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhQaXhlbHNQZXJEZWNvZGVkSW1h
Z2UoKSB7IHJldHVybiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsgfQotICAgIHN0YXRpYyB2
b2lkIHNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSh1bnNpZ25lZCBtYXhQaXhlbHMpIHsgc19t
YXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSBtYXhQaXhlbHM7IH0KLSNlbmRpZgotCisgICAgCisg
ICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKKyAgICBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVu
dGF0aW9uCisgICAgCisgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBj
YWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKKyAgICAvLyBzZWUgY29tbWVudHMg
b24gY2xlYXIoKSBhYm92ZS4KKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAgICAKIHByaXZhdGU6Ci0gICAg
dm9pZCBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgY2xl
YXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CisgICAgdm9pZCBlbnN1cmVEZWNvZGVySXNDcmVh
dGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIFN1YnNhbXBsaW5nTGV2ZWwgY2FsY3VsYXRl
TWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdDsKICAgICB2b2lkIGR1bXAoVGV4dFN0cmVh
bSYpIGNvbnN0OwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IG1fZGVj
b2RlcjsKLSAgICAKKworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIG9mIG1fYWxsb3dTdWJzYW1w
bGluZyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgZGVmYXVsdEltYWdlU3Vic2FtcGxpbmdFbmFibGVk
IGluIFNldHRpbmdzLmNwcAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fYWxsb3dTdWJz
YW1wbGluZyB7IHRydWUgfTsKICNlbHNlCiAgICAgYm9vbCBtX2FsbG93U3Vic2FtcGxpbmcgeyBm
YWxzZSB9OwogI2VuZGlmCiAKLSNpZiAhVVNFKENHKQogICAgIEFscGhhT3B0aW9uIG1fYWxwaGFP
cHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gbV9nYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbjsKLSNlbmRpZgotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJ
TkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOwotI2Vu
ZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCShyZXZpc2lvbiAxOTkyNjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiwxNSArMTIyLDYgQEAgSW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIo
KQogICAgIG1fbmF0aXZlRGVjb2RlciA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3Jl
bWVudGFsKG51bGxwdHIpKTsKIH0KIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZURlY29kZXI6OnN1
YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhp
bXVtU3Vic2FtcGxpbmdMZXZlbCkKLXsKLSAgICAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1wbGlu
ZyBsZXZlbHM6IDAgPSAxeCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KLSAgICBm
bG9hdCBjbGFtcGVkU2NhbGUgPSBzdGQ6Om1heDxmbG9hdD4oMC4xMjUsIHN0ZDo6bWluPGZsb2F0
PigxLCBzY2FsZSkpOwotICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9nMmYo
MSAvIGNsYW1wZWRTY2FsZSkpOwotICAgIEFTU0VSVChyZXN1bHQgPj0wICYmIHJlc3VsdCA8PSAz
KTsKLSAgICByZXR1cm4gc3RkOjptaW4ocmVzdWx0LCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7
Ci19Ci0KIHNpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVy
dGllcygpCiB7CiAgICAgLy8gTWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2MvY2FsbG9jIGNhbGxz
IG9uIE1hYyBPUyAxMC42LjYsIHg4Nl82NC4KQEAgLTM4NiwxMyArMzc3LDEzIEBAIHZvaWQgSW1h
Z2VEZWNvZGVyOjpzZXREYXRhKENGRGF0YVJlZiBkYXQKICAgICBDR0ltYWdlU291cmNlVXBkYXRl
RGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAK
LXZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8v
IE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRs
eSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAg
Ly8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENG
RGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8v
IHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgc2V0RGF0YShkYXRhLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBzZXREYXRhKGRhdGEu
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENy
ZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KICAgICBkYXRh
LT5yZWYoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAkocmV2aXNpb24gMTk5MjYzKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksMTkgKzI5LDIxIEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKIAordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJj
ZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFn
ZURlY29kZXIoKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rl
cj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3Jl
YXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VT
b3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VEZWNvZGVyPigpOwogICAgIH0KICAgICAKICAgICBzdGF0
aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwotICAgIHN0YXRp
YyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwg
U3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgCiAgICAgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUo
KSBjb25zdDsKQEAgLTY0LDcgKzY2LDkgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBzZXREYXRhKENGRGF0YVJlZiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICAKKyAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQogICAgIAogcHJv
dGVjdGVkOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAkocmV2
aXNpb24gMTk5MjYzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VTb3VyY2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjE1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0KLSNp
ZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgotCi0jaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyQ0cuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSW1hZ2VTb3VyY2U6OkltYWdl
U291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQotewotICAgIC8vIEZJWE1FOiBBbHBoYU9wdGlvbiBhbmQgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gYXJlIGlnbm9yZWQuCi19Ci0KLUltYWdlU291cmNlOjp+SW1h
Z2VTb3VyY2UoKQotewotICAgIGNsZWFyKHRydWUpOwotfQotCi12b2lkIEltYWdlU291cmNlOjpj
bGVhcihib29sIGRlc3Ryb3lBbGxGcmFtZXMsIHNpemVfdCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICAvLyBSZWNlbnQgdmVyc2lvbnMgb2YgSW1hZ2VJ
TyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBmcmFtZXMgaWYgdGhlIGNsaWVudAot
ICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxvbmdlciBob2xkcyByZWZlcmVuY2VzIHRvIHRoZW0sIHNv
IHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5Ci0gICAgLy8gdGhlIGRlY29kZXIgdW5sZXNz
IHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQgdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KLSAg
ICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGVjb2Rl
ciA9IG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIHNldERhdGEoZGF0YSwg
YWxsRGF0YVJlY2VpdmVkKTsKLX0KLSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29k
ZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKikKLXsKLSAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fZGVjb2RlciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCk7Ci19
Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKLXsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKGRhdGEpOwotICAgIAotICAgIGlmICghaW5pdGlh
bGl6ZWQoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLSAgICBtX2RlY29kZXItPnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2Vp
dmVkKTsKLX0KLQotU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5z
aW9uKCkgOiBTdHJpbmcoKTsKLX0KLSAgICAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6
OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
YWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KDApKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFZhbHVlcyBjaG9zZW4gdG8gYmUgYXBwcm9wcmlh
dGUgZm9yIGlPUy4KLSAgICBjb25zdCBpbnQgY01heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1w
bGluZyA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBjb25zdCBTdWJzYW1wbGluZ0xldmVsIG1heFN1
YnNhbXBsaW5nTGV2ZWwgPSAzOwotCi0gICAgU3Vic2FtcGxpbmdMZXZlbCBjdXJyZW50TGV2ZWwg
PSAwOwotICAgIGZvciAoIDsgY3VycmVudExldmVsIDw9IG1heFN1YnNhbXBsaW5nTGV2ZWw7ICsr
Y3VycmVudExldmVsKSB7Ci0gICAgICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJ
bmRleCgwLCBjdXJyZW50TGV2ZWwpOwotICAgICAgICBpZiAoZnJhbWVTaXplLmFyZWEoKSA8IGNN
YXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcpCi0gICAgICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gY3VycmVudExldmVsOwotfQotICAgIAotU3Vic2FtcGxpbmdMZXZl
bCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAotewotI2lmIFBM
QVRGT1JNKElPUykKLSAgICByZXR1cm4gY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwo
KTsKLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291
cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKHNjYWxlLCBtYXhp
bXVtU3Vic2FtcGxpbmdMZXZlbCgpKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZh
aWxhYmxlKCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmlzU2l6
ZUF2YWlsYWJsZSgpOwotfQotCi1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXpl
ZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KGluZGV4KTsK
LX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAotewotICAgIGlmICgh
aW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAKLSAgICBJbnRTaXplIHNp
emUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwp
OwotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBtX2RlY29kZXItPm9yaWVudGF0
aW9uQXRJbmRleChpbmRleCk7Ci0gICAgCi0gICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNX
aWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOwotfQotCi1JbWFn
ZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRh
dGlvbkF0SW5kZXgoaW5kZXgpIDogSW1hZ2VPcmllbnRhdGlvbigpOwotfQotCi1JbnRTaXplIElt
YWdlU291cmNlOjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgw
LCAwKTsKLX0KLSAgICAKLUludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50
YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJ
bnRQb2ludCYgaG90U3BvdCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBt
X2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0
ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW1h
Z2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLX0KLSAgICAK
LWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKLXsKLSAgICByZXR1cm4gaW5pdGlh
bGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTG9vcE9u
Y2U7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7Ci19Ci0K
LVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0g
ICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7Ci19Ci0KLWJvb2wgSW1hZ2VT
b3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVy
biBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRl
eCk7Ci19Ci0KLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lRHVy
YXRpb25BdEluZGV4KGluZGV4KSA6IDA7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFz
QWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICByZXR1cm4gIWluaXRpYWxpemVkKCkg
fHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Ci19Ci0KLXVuc2lnbmVk
IEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKLXsKLSAgICBJbnRTaXplIGZyYW1lU2l6ZSA9
IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIHJldHVybiBm
cmFtZVNpemUuYXJlYSgpICogNDsKLX0KLSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4
dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fYWxsb3dTdWJzYW1wbGluZykKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJhbGxvdy1zdWJzYW1wbGluZyIsIG1fYWxsb3dTdWJzYW1wbGlu
Zyk7Ci0gICAgCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9u
QXRJbmRleCgwKTsKLSAgICBpZiAob3JpZW50YXRpb24gIT0gT3JpZ2luVG9wTGVmdCkKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJvcmllbnRhdGlvbiIsIG9yaWVudGF0aW9uKTsKLX0KLQotfQot
Ci0jZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiAxOTkyNjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0y
NzAsMTMgKzI3MSwxNiBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRW
CiAKIH0KIAotYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBp
bmRleCkgY29uc3QKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8
PSBpbmRleCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKLSAgICAgICAg
cmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uaGFzQWxwaGEoKTsKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyQ2Fj
aGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7Cit9CisKK2Jv
b2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFmcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSB8fCBtX2ZyYW1l
QnVmZmVyQ2FjaGVbaW5kZXhdLmhhc0FscGhhKCk7CiB9CiAKIHVuc2lnbmVkIEltYWdlRGVjb2Rl
cjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdApAQCAtMjg3LDYgKzI5MSw0
MiBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4CiAgICAgcmV0dXJu
IG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKIH0KIAorZmxv
YXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
Cit7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkg
PT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBN
YW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZs
YXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCisgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBi
ZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQg
c3BlY2lmeQorICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2Js
ZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgorICAgIC8vIGZvciBt
b3JlIGluZm9ybWF0aW9uLgorICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gbV9mcmFtZUJ1ZmZl
ckNhY2hlW2luZGV4XS5kdXJhdGlvbigpIC8gMTAwMC4wZjsKKyAgICBpZiAoZHVyYXRpb24gPCAw
LjAxMWYpCisgICAgICAgIHJldHVybiAwLjEwMGY7CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQor
CitOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRz
LiBJZiB3ZSBoYXZlIGFuCisgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwu
CisgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBSZXR1cm4gdGhl
IGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gRm9yIHNvbWUgcG9ydHMsIHRoZSBk
YXRhCisgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1
c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCisgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNo
ZVtpbmRleF0uYXNOZXdOYXRpdmVJbWFnZSgpOworfQorCiB2b2lkIEltYWdlRGVjb2Rlcjo6cHJl
cGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCkKIHsKICAgICBtX3NjYWxlZCA9IGZhbHNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgJKHJldmlzaW9uIDE5OTI2MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIElu
Yy4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQpAQCAtMjM1LDMwICsyMzUsMjkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZURl
Y29kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIElt
YWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291
cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKLSAgICAgICAgICAgIDogbV9zY2FsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fcHJlbXVs
dGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVk
KQorICAgICAgICAgICAgOiBtX3ByZW11bHRpcGx5QWxwaGEoYWxwaGFPcHRpb24gPT0gSW1hZ2VT
b3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKICAgICAgICAgICAgICwgbV9pZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZShnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6
R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkKQotICAgICAgICAgICAgLCBtX3NpemVBdmFpbGFi
bGUoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbWF4TnVtUGl4ZWxzKC0xKQotICAgICAgICAgICAg
LCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX2ZhaWxlZChmYWxz
ZSkgeyB9CisgICAgICAgIHsKKyAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgfkltYWdlRGVj
b2RlcigpIHsgfQorICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKQorICAgICAgICB7Cisg
ICAgICAgIH0KIAogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIGRlY29kZXIgb2Yg
dGhlIGFwcHJvcHJpYXRlIHR5cGUuICBSZXR1cm5zIDAgaWYKICAgICAgICAgLy8gd2UgY2FuJ3Qg
c25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQog
ICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxw
aGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAg
ICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCA9IDA7CiAKICAg
ICAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGxEYXRh
UmVjZWl2ZWQ7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9kYXRhID0gZGF0YTsKKyAgICAgICAgICAgIG1fZGF0YSA9ICZkYXRhOwogICAgICAg
ICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKICAgICAgICAgfQog
CkBAIC0yODIsNyArMjgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBzaXpl
cy4gIFRoaXMgZG9lcyBOT1QgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBHSUYsIHNpbmNlIGRlY29k
aW5nIEdJRnMKICAgICAgICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxlciBmcmFtZXMgYWdhaW5z
dCBwcmV2aW91cyBmcmFtZXMgdG8gY3JlYXRlIGZ1bGwtCiAgICAgICAgIC8vIHNpemUgZnJhbWVz
LgotICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QpIGNvbnN0
CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHNpemUoKTsK
ICAgICAgICAgfQpAQCAtMzEwLDE2ICszMDksMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvLyBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlci4KICAgICAgICAgdmlydHVhbCBJbWFn
ZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7CiAKKyAgICAgICAgYm9vbCBm
cmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CisKICAgICAgICAgLy8gTWFrZSB0
aGUgYmVzdCBlZmZvcnQgZ3Vlc3MgdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3RlZCBmcmFtZSBoYXMg
YWxwaGEgY2hhbm5lbC4KLSAgICAgICAgdmlydHVhbCBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCkgY29uc3Q7CisgICAgICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
KSBjb25zdDsKIAogICAgICAgICAvLyBOdW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQgZnJh
bWUgcmVxdWVzdGVkLiBSZXR1cm4gMCBpZiBub3QgeWV0IGRlY29kZWQuCi0gICAgICAgIHZpcnR1
YWwgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgdW5z
aWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgCisgICAgICAg
IGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIAorICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xv
clByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBmbGFn
OyB9CiAgICAgICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQogCi0gICAgICAgIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Cisg
ICAgICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBhbGxvd1N1
YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgICAgIGVudW0geyBpY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGggPSAxMjggfTsKIApA
QCAtMzMwLDYgKzMzNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1
cm4gIW1lbWNtcCgmcHJvZmlsZURhdGFbMTZdLCAiUkdCICIsIDQpOwogICAgICAgICB9CiAKKyAg
ICAgICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSB7
IHJldHVybiAwOyB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJu
IDA7IH0KKwogICAgICAgICBzdGF0aWMgYm9vbCBpbnB1dERldmljZUNvbG9yUHJvZmlsZShjb25z
dCBjaGFyKiBwcm9maWxlRGF0YSwgdW5zaWduZWQgcHJvZmlsZUxlbmd0aCkKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49
IGljY0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7CkBAIC0zNTQsMTAgKzM2NSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gY29tcG9zaXRpbmcpLgogICAgICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9CiAKLSNpZiBFTkFCTEUoSU1B
R0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAgICAgICB2b2lkIHNldE1heE51bVBpeGVscyhp
bnQgbSkgeyBtX21heE51bVBpeGVscyA9IG07IH0KLSNlbmRpZgotCiAgICAgICAgIC8vIElmIHRo
ZSBpbWFnZSBoYXMgYSBjdXJzb3IgaG90LXNwb3QsIHN0b3JlcyBpdCBpbiB0aGUgYXJndW1lbnQK
ICAgICAgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBob3RTcG90KEludFBvaW50JikgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTM3NCw3ICszODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFZl
Y3RvcjxJbWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7CiAgICAgICAgIC8vIEZJWE1F
OiBEbyB3ZSBuZWVkIG1fY29sb3JQcm9maWxlIGFueSBtb3JlLCBmb3IgYW55IHBvcnQ/CiAgICAg
ICAgIENvbG9yUHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKLSAgICAgICAgYm9vbCBtX3NjYWxlZDsK
KyAgICAgICAgYm9vbCBtX3NjYWxlZCB7IGZhbHNlIH07CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1f
c2NhbGVkQ29sdW1uczsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRSb3dzOwogICAgICAg
ICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKQEAgLTM5MiwxMCArMzk5LDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIEludFNpemUgbV9zaXplOwotICAgICAg
ICBib29sIG1fc2l6ZUF2YWlsYWJsZTsKLSAgICAgICAgaW50IG1fbWF4TnVtUGl4ZWxzOwotICAg
ICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7Ci0gICAgICAgIGJvb2wgbV9mYWlsZWQ7Cisg
ICAgICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoSU1BR0Vf
REVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVt
UGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsKKyNlbHNlCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
bV9tYXhOdW1QaXhlbHMgeyAtMSB9OworI2VuZGlmCisgICAgICAgIGJvb2wgbV9pc0FsbERhdGFS
ZWNlaXZlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9mYWlsZWQgeyBmYWxzZSB9OwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTI2MykK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE2LTA0LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgTWVyZ2UgQ0cgSW1hZ2VTb3VyY2UgYW5kIG5vbiBDRyBJbWFnZVNvdXJjZSBp
bXBsZW1lbnRhdGlvbiBpbiBvbmUgZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5o
dG1sOiBBZGRlZC4KKwogMjAxNi0wNC0wOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFhIUnMgYW5kIFdlYiBXb3JrZXIgc2Ny
aXB0cyBhcmUgbm90IHNlYXJjaGFibGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2lt
YWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgZGl2IHsKKyAgICAgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICBtYXJnaW46
IDEwcHg7CisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIH0KKyAg
ICA8L3N0eWxlPgorPGhlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gY3JlYXRl
RGl2KGNvbG9yKSB7CisgICAgICAgIHZhciBkaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIGRpdkVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0g
Y29sb3I7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2RWxlbWVudCk7Cisg
ICAgfQorCisgICAgY3JlYXRlRGl2KCJyZWQiKTsKKyAgICBjcmVhdGVEaXYoImdyZWVuIik7Cisg
ICAgY3JlYXRlRGl2KCJibHVlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgZGl2IHsKKyAgICAgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICBtYXJnaW46
IDEwcHg7CisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIH0KKyAg
ICAgICAgaW1nIHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPGhlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0SW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5jdGlv
biBjcmVhdGVJbWFnZShjb2xvcikgeworICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgIGNhbnZhcy53aWR0aCA9IDEwMjQgKiA1ICsg
MTsKKyAgICAgICAgY2FudmFzLmhlaWdodCA9IDEwMjQgKiAxICsgMTsKKyAgICAgICAgdmFyIGN0
eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICBjdHguZmlsbFN0eWxlID0gY29s
b3I7CisgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWln
aHQpOworCisgICAgICAgIHZhciBpbWdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW1nIik7CisgICAgICAgIGltZ0VsZW1lbnQuc3JjID0gY2FudmFzLnRvRGF0YVVSTCgiaW1hZ2Uv
cG5nIik7CisKKyAgICAgICAgdmFyIGRpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgZGl2RWxlbWVudC5hcHBlbmRDaGlsZChpbWdFbGVtZW50KTsKKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXZFbGVtZW50KTsKKyAgICB9CisgICAg
CisgICAgY3JlYXRlSW1hZ2UoInJlZCIpOworICAgIGNyZWF0ZUltYWdlKCJncmVlbiIpOworICAg
IGNyZWF0ZUltYWdlKCJibHVlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276081</attachid>
            <date>2016-04-08 22:55:48 -0700</date>
            <delta_ts>2016-04-09 01:16:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160408225554.patch</filename>
            <type>text/plain</type>
            <size>48205</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTI2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNiBAQAorMjAxNi0wNC0wOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdlIENH
IEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4gb25l
IGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
YWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4gQWxs
IHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJbWFn
ZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNhbiBo
YXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0IHJp
ZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0L2lt
YWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5kIGFk
ZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1vdmUgY2xlYXIodHJ1ZSkgY2Fs
bC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFy
RnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxscyBJbWFnZURlY29kZXI6OmNs
ZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNs
ZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hpY2ggd2lsbCBkbyBub3RoaW5n
IGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5zdXJl
RGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvCisgICAgICAgIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJbWFnZURlY29kZXI6OnNldE1h
eE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29uc3Qgc3RhdGljIGludCBDRyBJ
bWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0CisgICAgICAgIGJhc2VkIG9u
IElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVmZmVyJiB0byB0aGUgdW5kZXJs
eWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0dXJucyB0aGUgbWF4aW11bQor
ICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBhbiBpbWFnZS4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxl
KTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1YnNhbXBsaW5nTGV2ZWwgdGFr
aW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgZm9yCisg
ICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKTogUmV0dXJucyB0
aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hpY2ggY2FuIGRldGVybWluZSB0
aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisgICAgICAgIHplcm8uIEZvciBD
RyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNvcnJlY3RlZCBsYXRlci4KKyAg
ICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpm
cmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpm
cmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpm
cmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVE
dXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVudGF0
aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBlcnMgZm9yIHRoZSBJbWFnZURl
Y29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGlzIHRv
IGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisgICAgICAgIAorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6ZHVt
cCgpLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldEFsbG93U3Vic2FtcGxpbmcpOiBD
YWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6c2V0QWxsb3dTdWJzYW1wbGluZygpLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVsc1Bl
ckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIFNldHRpbmcgbWF4UGl4ZWxzUGVyRGVj
b2RlZEltYWdlIHdhcyBtb3ZlZCB0byB0aGUgbm9uIENHIEltYWdlRGVjb2Rlci4KKyAgICAgICAg
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIFNoYXJlZEJ1ZmZl
ciogdG8gU2hhcmVkQnVmZmVyJi4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpz
dWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOiBEZWxldGVkLgorICAgICAgICBUaGUgY29kZSB3YXMg
bW92ZWQgdG8gSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSgpLgorICAgICAg
ICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOiBNYWtlIHRoZSBwcm90b3R5cGUg
b2YgdGhpcyBmdW5jdGlvbgorICAgICAgICBzdWl0YWJsZSBmb3IgQ0cgYW5kIG5vbiBDRyBjYXNl
cy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KTogRW1wdHkgZnVuY3Rpb25zIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOiBBIG1ldyBmdW5j
dGlvbiB0byByZXR1cm4KKyAgICAgICAgd2hldGhlciB0aGUgZnJhbWUgZGVjb2RpbmcgaXMgY29t
cGxldGUgb3Igbm90LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOiBTaW1wbGlmeSB0aGUgbG9naWMuCisgICAgICAgIAorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6IFRoZSBj
b2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJ
bmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KTogVGhlIGNvZGUgd2FzIG1vdmVk
IGZyb20KKyAgICAgICAgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KCkgaW4g
SW1hZ2VTb3VyY2UuY3BwLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6SW1h
Z2VEZWNvZGVyKTogSW5pdGlhbGl6ZSB0aGUgbWVtYmVycyBpbiBjbGFzcy4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6IEZpeCB0aGUgYnJhY2VzIHN0eWxl
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIHRoZSB0
eXBlIG9mIHRoZSBhcmd1bWVudCBmcm9tCisgICAgICAgIFNoYXJlZEJ1ZmZlciogdG8gU2hhcmVk
QnVmZmVyJi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRl
eCk6IEFkZCB0aGUgYXJndW1lbnQgU3Vic2FtcGxpbmdMZXZlbAorICAgICAgICBzbyBpdCBjYW4g
aGF2ZSB0aGUgc2FtZSBwcm90b3R5cGUgYXMgQ0cuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6IFJlbmFtZSBpdCB0byB0aGUgc2FtZSBvZiBDRy4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmFsbG93U3Vic2FtcGxp
bmdPZkZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5dGVz
RGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6IEFkZCB0aGVzZSBmdW5jdGlvbnMKKyAg
ICAgICAgYW5kIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMgc28gd2UgZG8gbm90IGhhdmUgdG8g
YWRkIGRpcmVjdGl2ZSBjb21waWxlZAorICAgICAgICBub24gQ0cgYmxvY2tzIGluIEltYWdlU291
cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Om9yaWVu
dGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0TWF4
TnVtUGl4ZWxzKTogRGVsZXRlZC4KKwogMjAxNi0wNC0wOCAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFhIUnMgYW5kIFdlYiBX
b3JrZXIgc2NyaXB0cyBhcmUgbm90IHNlYXJjaGFibGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxOTkyNjMpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjIxMyw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UG9pbnQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFw
cGxlV2luLmNtYWtlCShyZXZpc2lvbiAxOTkyNjMpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHV2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UJKHJldmlzaW9uIDE5OTI2MykKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNyArNDA2LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5OTI2MykK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNDk4Niw3ICs0OTg2LDYgQEAKIAkJQjI3NTM1NUEwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0UmVjdENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAg
Ki87IH07CiAJCUIyNzUzNTVCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyRDBCMDUz
ODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovOyB9OwogCQlCMjc1MzU1RTBCMDUzODE0
MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi87
IH07Ci0JCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMxMEIwNTM4
MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjAwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cu
Y3BwICovOyB9OwogCQlCMjc1MzU2MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENHLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMzMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2MjBCMDUzODE0
MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3Bw
ICovOyB9OwpAQCAtMTI4NzcsNyArMTI4NzYsNiBAQAogCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2
NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZsb2F0UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1
MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNpemVDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNl
Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlU291cmNl
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMjBCMDUzODE0MDAy
Q0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW50UG9pbnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUz
NTMzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEludFJlY3RDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFNpemVDRy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMTc4NSw3ICsyMTc4Myw2IEBACiAJCQkJQjI3NTM1MzAwQjA1
MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJCTU1NUI4N0VBMUNBQUYwQUIwMDM0
OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCiAJCQkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCi0JCQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRG
IC8qIEltYWdlU291cmNlQ0cuY3BwICovLAogCQkJCTRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAv
KiBJbWFnZVNvdXJjZUNHLmggKi8sCiAJCQkJNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIElt
YWdlU291cmNlQ0dNYWMubW0gKi8sCiAJCQkJQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFBvaW50Q0cuY3BwICovLApAQCAtMzAwMDQsNyArMzAwMDEsNiBAQAogCQkJCTJENUE1OTJGMTUy
NTI1MjMwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUI1MUEyRjQxMTdEN0Q1REUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGM0M3MjVFMTk3NDg3NEIwMEFFREQwQyAvKiBJbWFnZVNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2NEYgLyogSW1h
Z2VTb3VyY2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QjM0ODA5MzBFRUY1MEQ0MDBBQzFC
NDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMTE3MEU2
RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCRTk2MUM1NDE4QUQzMzg1MDBEMDdEQzUgLyogSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAJKHJldmlzaW9uIDE5OTI2MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA3IEFscCBUb2tlciA8YWxwLnRva2VyQGNvbGxhYm9yYS5jby51az4KICAqIENvcHlyaWdodCAo
QykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jCkBAIC0yOSwxOSArMjksMTYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCi0jaWYgIVVTRShDRykK
LQorI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2Vsc2UKICNpbmNs
dWRlICJJbWFnZURlY29kZXIuaCIKKyNlbmRpZgogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi11bnNpZ25lZCBJbWFn
ZVNvdXJjZTo6c19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSAxMDI0ICogMTAyNDsKLSNlbmRp
ZgotCiBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX2FscGhhT3B0aW9uKGFscGhhT3B0aW9uKQog
ICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKQEAgLTUwLDE0ICs0NywyMSBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VT
b3VyY2U6OkFsCiAKIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogewotICAgIGNsZWFyKHRy
dWUpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVf
dCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCBjbGVh
ckJlZm9yZUZyYW1lKQogewotICAgIGlmICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9k
ZWNvZGVyKQotICAgICAgICAgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xl
YXJCZWZvcmVGcmFtZSk7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47
CisgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7
Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1lcywgc2l6
ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCit7CisgICAgLy8gVGhlcmUncyBubyBuZWVkIHRvIHRocm93IGF3YXkgdGhlIGRlY29k
ZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQKKyAgICAvLyB0byBkZXN0cm95IGFsbCBv
ZiB0aGUgZnJhbWVzLgorICAgIGlmICghZGVzdHJveUFsbEZyYW1lcykgeworICAgICAgICBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTY3LDIwICs3MSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRl
c3Ryb3lBbGwsCiAgICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAot
dm9pZCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpCit2b2lkIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIC8vIE1ha2UgdGhlIGRlY29kZXIgYnkgc25pZmZpbmcgdGhlIGJ5dGVzLgot
ICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgZXhhbWluZSB0aGUgZGF0YSBhbmQgaW5zdGFudGlhdGUg
YW4gaW5zdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGRlY29kZXIgcGx1Z2luLgotICAgIC8vIElm
IGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRldGVybWluZSB0aGUgaW1hZ2Ug
dHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQotICAgIC8vIG1hZGUuCi0gICAgbV9kZWNv
ZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOwotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FN
UExJTkcpCi0gICAgaWYgKG1fZGVjb2RlciAmJiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSkK
LSAgICAgICAgbV9kZWNvZGVyLT5zZXRNYXhOdW1QaXhlbHMoc19tYXhQaXhlbHNQZXJEZWNvZGVk
SW1hZ2UpOwotI2VuZGlmCisgICAgbV9kZWNvZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoZGF0
YSwgbV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiB9CiAKIHZv
aWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKQEAgLTg4LDcgKzg0LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFy
ZWRCdWZmZXIqIAogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGVu
c3VyZURlY29kZXJJc0NyZWF0ZWQoZGF0YSk7CisgICAgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZCgq
ZGF0YSk7CiAgICAgCiAgICAgaWYgKCFpbml0aWFsaXplZCgpKSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtOTYsMjIgKzkyLDQ2IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERh
dGEoU2hhcmVkQnVmZmVyKiAKICAgICB9CiAKICAgICBpZiAobV9kZWNvZGVyKQotICAgICAgICBt
X2RlY29kZXItPnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgbV9kZWNv
ZGVyLT5zZXREYXRhKCpkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQotCi1TdHJpbmcgSW1hZ2VT
b3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKKyAgICAKK1N1YnNhbXBsaW5nTGV2ZWwg
SW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpIDog
U3RyaW5nKCk7CisgICAgaWYgKCFtX2FsbG93U3Vic2FtcGxpbmcgfHwgIWFsbG93U3Vic2FtcGxp
bmdPZkZyYW1lQXRJbmRleCgwKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgLy8gRklY
TUU6IHRoaXMgdmFsdWUgd2FzIGNob3NlbiB0byBiZSBhcHByb3ByaWF0ZSBmb3IgaU9TIHNpbmNl
IHRoZSBpbWFnZQorICAgIC8vIHN1YnNhbXBsaW5nIGlzIG9ubHkgZW5hYmxlZCBieSBkZWZhdWx0
IG9uIGlPUy4gQ2hvb3NlIGEgZGlmZmVyZW50IHZhbHVlCisgICAgLy8gaWYgaW1hZ2Ugc3Vic2Ft
cGxpbmcgaXMgZW5hYmxlZCBvbiBvdGhlciBwbGF0Zm9ybS4KKyAgICBjb25zdCBpbnQgY01heGlt
dW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsKKyAgICBjb25z
dCBTdWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOworICAgIAorICAgIGZv
ciAoU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0gMDsgc3Vic2FtcGxpbmdMZXZl
bCA8IG1heFN1YnNhbXBsaW5nTGV2ZWw7ICsrc3Vic2FtcGxpbmdMZXZlbCkgeworICAgICAgICBJ
bnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoMCwgc3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgICAgIGlmIChmcmFtZVNpemUuYXJlYSgpIDwgY01heGltdW1JbWFnZUFyZWFCZWZvcmVT
dWJzYW1wbGluZykKKyAgICAgICAgICAgIHJldHVybiBzdWJzYW1wbGluZ0xldmVsOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gbWF4U3Vic2FtcGxpbmdMZXZlbDsKIH0KIAotU3Vic2FtcGxpbmdM
ZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdAor
U3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZs
b2F0IHNjYWxlKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIGlmIChzY2FsZSA8PSAwIHx8
IHNjYWxlID4gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgU3Vic2FtcGxpbmdMZXZl
bCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCA9IGNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xl
dmVsKCk7CisgICAgaWYgKCFtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1wbGluZyBsZXZlbHM6IDAgPSAxeCwg
MSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KKyAgICBTdWJzYW1wbGluZ0xldmVsIHJl
c3VsdCA9IGNlaWxmKGxvZzJmKDEgLyBzY2FsZSkpOworICAgIHJldHVybiBzdGQ6Om1pbihyZXN1
bHQsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6YWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QKK3NpemVfdCBJbWFnZVNv
dXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKIHsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQ
cm9wZXJ0aWVzKCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCkBA
IC0xMjksOTcgKzE0OSw2OSBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09y
aWVuCiAgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pOwogfQogCi1JbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpm
cmFtZUNvdW50KCkgY29uc3QKIHsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJl
dHVybiB7IH07Ci0KLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5k
ZXgoaW5kZXgpOwotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBtX2RlY29kZXIt
Pm9yaWVudGF0aW9uKCk7Ci0gICAgCi0gICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0
aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOworICAgIHJldHVybiBp
bml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwogfQogCi1ib29sIElt
YWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAoraW50IEltYWdl
U291cmNlOjpyZXBldGl0aW9uQ291bnQoKQogewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYm
IG1fZGVjb2Rlci0+aG90U3BvdChob3RTcG90KTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKIH0KIAotc2l6
ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25z
dAorU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZpbGVuYW1l
RXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKIH0KIAotaW50IEltYWdlU291cmNlOjpyZXBldGl0aW9u
Q291bnQoKQorYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlv
bkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBt
X2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJh
bWVDb3VudCgpIGNvbnN0Citib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+
ZnJhbWVDb3VudCgpIDogMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXIt
PmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsKQorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0
SW5kZXgoaW5kZXgpOworfQogCi0gICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBw
cm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KLSAgICAvLyBlbXB0eSBpbWFn
ZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KLSAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXIt
PmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5z
dGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdl
LiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCi0gICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2
ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCi0gICAg
cmV0dXJuIGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOworYm9vbCBJbWFnZVNvdXJjZTo6YWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleChpbmRleCk7CiB9CiAKLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJ
bmRleChzaXplX3QgaW5kZXgpCitJbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0
CiB7CiAgICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIElt
YWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsK
LSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1l
RW1wdHkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgLy8g
TWFueSBhbm5veWluZyBhZHMgc3BlY2lmeSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBm
bGFzaCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLgotICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94J3Mg
YmVoYXZpb3IgYW5kIHVzZSBhIGR1cmF0aW9uIG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0aGF0
IHNwZWNpZnkKLSAgICAvLyBhIGR1cmF0aW9uIG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9wcm9i
bGVtLzc2ODkzMDA+IGFuZCA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNjA4Mj4KLSAgICAvLyBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4KLSAgICBjb25zdCBmbG9hdCBkdXJhdGlvbiA9IGJ1ZmZlci0+ZHVy
YXRpb24oKSAvIDEwMDAuMGY7Ci0gICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQotICAgICAgICBy
ZXR1cm4gMC4xMDBmOwotICAgIHJldHVybiBkdXJhdGlvbjsKKyAgICBJbnRTaXplIHNpemUgPSBt
X2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAg
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgp
OworICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50
cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKIH0KIAotSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJj
ZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QKK3Vuc2lnbmVkIEltYWdlU291cmNl
OjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rl
ci0+b3JpZW50YXRpb24oKSA6IEltYWdlT3JpZW50YXRpb24oKTsKKyAgICByZXR1cm4gZnJhbWVT
aXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkuYXJlYSgpICogNDsKIH0KIAotYm9v
bCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQorZmxvYXQg
SW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBy
ZXR1cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChp
bmRleCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lRHVyYXRp
b25BdEluZGV4KGluZGV4KSA6IDA7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6
b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBpZiAoIWluaXRp
YWxpemVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEltYWdlRnJhbWUqIGJ1ZmZl
ciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKLSAgICByZXR1cm4gYnVm
ZmVyICYmIGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyAg
ICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGlu
ZGV4KSA6IEltYWdlT3JpZW50YXRpb24oKTsKIH0KLQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKKyAg
ICAKK05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICBy
ZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgp
IDogMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKIH0KIAogdm9p
ZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKQEAgLTIzMyw1ICsyMjUs
MyBAQCB2b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjCiB9CiAgICAgCiB9
Ci0KLSNlbmRpZiAvLyBVU0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHJldmlzaW9uIDE5OTI2MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMTAsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwg
SW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzUsMTEgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi10
eXBlZGVmIHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwotdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEltYWdlT3JpZW50YXRpb247CkBAIC04Myw3ICs3OCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkCiAgICAgfTsKIAotICAgIElt
YWdlU291cmNlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uID0gQWxwaGFQcmVtdWx0aXBsaWVkLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdh
bW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCk7CisgICAgSW1hZ2VTb3VyY2UoQWxwaGFPcHRpb24g
PSBBbHBoYVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFB
bmRDb2xvclByb2ZpbGVBcHBsaWVkKTsKICAgICB+SW1hZ2VTb3VyY2UoKTsKIAogICAgIC8vIFRl
bGxzIHRoZSBJbWFnZVNvdXJjZSB0aGF0IHRoZSBJbWFnZSBubyBsb25nZXIgY2FyZXMgYWJvdXQg
ZGVjb2RlZCBmcmFtZQpAQCAtMTA3LDc2ICsxMDIsNjEgQEAgcHVibGljOgogICAgIC8vIHdobyBz
ZXQgfGRlc3Ryb3lBbGx8IHRvIHRydWUgaWYgdGhleSB3aXNoIHRvIGJlIGFibGUgdG8gY29udGlu
dWUgdXNpbmcKICAgICAvLyB0aGUgSW1hZ2VTb3VyY2UuICBUaGlzIHdheSBpbXBsZW1lbnRhdGlv
bnMgd2hpY2ggY2hvb3NlIHRvIGRlc3Ryb3kgdGhlaXIKICAgICAvLyBkZWNvZGVycyBpbiBzb21l
IGNhc2VzIGNhbiByZWNvbnN0cnVjdCB0aGVtIGNvcnJlY3RseS4KLSAgICB2b2lkIGNsZWFyKGJv
b2wgZGVzdHJveUFsbCwKLSAgICAgICAgICAgICAgIHNpemVfdCBjbGVhckJlZm9yZUZyYW1lID0g
MCwKLSAgICAgICAgICAgICAgIFNoYXJlZEJ1ZmZlciogZGF0YSA9IE5VTEwsCi0gICAgICAgICAg
ICAgICBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKKyAgICB2b2lkIGNsZWFyKGJvb2wg
ZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLCBTaGFyZWRCdWZmZXIqIGRh
dGEgPSBudWxscHRyLCBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKIAogICAgIGJvb2wg
aW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKIAogICAgIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdDsKLSAgICBib29sIGFsbG93
U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAgIHZvaWQgc2V0QWxs
b3dTdWJzYW1wbGluZyhib29sIGFsbG93U3Vic2FtcGxpbmcpIHsgbV9hbGxvd1N1YnNhbXBsaW5n
ID0gYWxsb3dTdWJzYW1wbGluZzsgfQotICAgIFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwoKSBjb25zdDsKLQotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CisgICAg
c3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKICAgICAK
KyAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgIC8vIEFsd2F5cyBvcmlnaW5hbCBzaXpl
LCB3aXRob3V0IHN1YnNhbXBsaW5nLgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgIElu
dFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0OwotICAgIAotICAgIC8vIFNp
emUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNpemUgZnJhbWVTaXpl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdDsKLQotICAgIGJv
b2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OwotCi0gICAgc2l6ZV90IGJ5dGVzRGVjb2Rl
ZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0OwotCi0gICAgaW50IHJlcGV0aXRpb25Db3Vu
dCgpOwogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKKyAgICBpbnQgcmVwZXRpdGlv
bkNvdW50KCk7CisgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CisgICAgYm9v
bCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Q7CiAKLSAgICAvLyBDYWxsZXJzIHNob3VsZCBu
b3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4Owot
ICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOwot
Ci0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKLSAgICBib29sIGZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1
YWxseSB1c2VkIGFueSBhbHBoYS4KICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6
ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGlzIGNvbXBsZXRlbHkgZGVjb2RlZC4K
LSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OyAv
LyBFWElGIGltYWdlIG9yaWVudGF0aW9uCi0KKyAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBh
bHBoYS4KKyAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNv
bnN0OworICAgIAorICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgor
ICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAw
LCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKSBjb25zdDsKKyAgICAKICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpbiB0
aGUgZGVjb2RlZCBmcmFtZS4gSWYgdGhlIGZyYW1lIGlzIG5vdCB5ZXQKICAgICAvLyBkZWNvZGVk
IHRoZW4gcmV0dXJuIDAuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gMCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9E
T1dOX1NBTVBMSU5HKQotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhQaXhlbHNQZXJEZWNvZGVkSW1h
Z2UoKSB7IHJldHVybiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsgfQotICAgIHN0YXRpYyB2
b2lkIHNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSh1bnNpZ25lZCBtYXhQaXhlbHMpIHsgc19t
YXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSBtYXhQaXhlbHM7IH0KLSNlbmRpZgotCisgICAgCisg
ICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKKyAgICBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVu
dGF0aW9uCisgICAgCisgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBj
YWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKKyAgICAvLyBzZWUgY29tbWVudHMg
b24gY2xlYXIoKSBhYm92ZS4KKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAgICAKIHByaXZhdGU6Ci0gICAg
dm9pZCBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgY2xl
YXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CisgICAgdm9pZCBlbnN1cmVEZWNvZGVySXNDcmVh
dGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIFN1YnNhbXBsaW5nTGV2ZWwgY2FsY3VsYXRl
TWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdDsKICAgICB2b2lkIGR1bXAoVGV4dFN0cmVh
bSYpIGNvbnN0OwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IG1fZGVj
b2RlcjsKLSAgICAKKworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIG9mIG1fYWxsb3dTdWJzYW1w
bGluZyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgZGVmYXVsdEltYWdlU3Vic2FtcGxpbmdFbmFibGVk
IGluIFNldHRpbmdzLmNwcAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fYWxsb3dTdWJz
YW1wbGluZyB7IHRydWUgfTsKICNlbHNlCiAgICAgYm9vbCBtX2FsbG93U3Vic2FtcGxpbmcgeyBm
YWxzZSB9OwogI2VuZGlmCiAKLSNpZiAhVVNFKENHKQogICAgIEFscGhhT3B0aW9uIG1fYWxwaGFP
cHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gbV9nYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbjsKLSNlbmRpZgotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJ
TkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOwotI2Vu
ZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCShyZXZpc2lvbiAxOTkyNjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiwxNSArMTIyLDYgQEAgSW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIo
KQogICAgIG1fbmF0aXZlRGVjb2RlciA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3Jl
bWVudGFsKG51bGxwdHIpKTsKIH0KIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZURlY29kZXI6OnN1
YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhp
bXVtU3Vic2FtcGxpbmdMZXZlbCkKLXsKLSAgICAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1wbGlu
ZyBsZXZlbHM6IDAgPSAxeCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KLSAgICBm
bG9hdCBjbGFtcGVkU2NhbGUgPSBzdGQ6Om1heDxmbG9hdD4oMC4xMjUsIHN0ZDo6bWluPGZsb2F0
PigxLCBzY2FsZSkpOwotICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9nMmYo
MSAvIGNsYW1wZWRTY2FsZSkpOwotICAgIEFTU0VSVChyZXN1bHQgPj0wICYmIHJlc3VsdCA8PSAz
KTsKLSAgICByZXR1cm4gc3RkOjptaW4ocmVzdWx0LCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7
Ci19Ci0KIHNpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVy
dGllcygpCiB7CiAgICAgLy8gTWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2MvY2FsbG9jIGNhbGxz
IG9uIE1hYyBPUyAxMC42LjYsIHg4Nl82NC4KQEAgLTM4NiwxMyArMzc3LDEzIEBAIHZvaWQgSW1h
Z2VEZWNvZGVyOjpzZXREYXRhKENGRGF0YVJlZiBkYXQKICAgICBDR0ltYWdlU291cmNlVXBkYXRl
RGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAK
LXZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8v
IE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRs
eSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAg
Ly8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENG
RGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8v
IHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgc2V0RGF0YShkYXRhLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBzZXREYXRhKGRhdGEu
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENy
ZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KICAgICBkYXRh
LT5yZWYoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAkocmV2aXNpb24gMTk5MjYzKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksMTkgKzI5LDIxIEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKIAordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJj
ZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFn
ZURlY29kZXIoKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rl
cj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3Jl
YXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VT
b3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VEZWNvZGVyPigpOwogICAgIH0KICAgICAKICAgICBzdGF0
aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwotICAgIHN0YXRp
YyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwg
U3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgCiAgICAgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUo
KSBjb25zdDsKQEAgLTY0LDcgKzY2LDkgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBzZXREYXRhKENGRGF0YVJlZiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICAKKyAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQogICAgIAogcHJv
dGVjdGVkOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAkocmV2
aXNpb24gMTk5MjYzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VTb3VyY2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjE1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0KLSNp
ZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgotCi0jaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyQ0cuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSW1hZ2VTb3VyY2U6OkltYWdl
U291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQotewotICAgIC8vIEZJWE1FOiBBbHBoYU9wdGlvbiBhbmQgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gYXJlIGlnbm9yZWQuCi19Ci0KLUltYWdlU291cmNlOjp+SW1h
Z2VTb3VyY2UoKQotewotICAgIGNsZWFyKHRydWUpOwotfQotCi12b2lkIEltYWdlU291cmNlOjpj
bGVhcihib29sIGRlc3Ryb3lBbGxGcmFtZXMsIHNpemVfdCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICAvLyBSZWNlbnQgdmVyc2lvbnMgb2YgSW1hZ2VJ
TyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBmcmFtZXMgaWYgdGhlIGNsaWVudAot
ICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxvbmdlciBob2xkcyByZWZlcmVuY2VzIHRvIHRoZW0sIHNv
IHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5Ci0gICAgLy8gdGhlIGRlY29kZXIgdW5sZXNz
IHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQgdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KLSAg
ICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGVjb2Rl
ciA9IG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIHNldERhdGEoZGF0YSwg
YWxsRGF0YVJlY2VpdmVkKTsKLX0KLSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29k
ZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKikKLXsKLSAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fZGVjb2RlciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCk7Ci19
Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKLXsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKGRhdGEpOwotICAgIAotICAgIGlmICghaW5pdGlh
bGl6ZWQoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLSAgICBtX2RlY29kZXItPnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2Vp
dmVkKTsKLX0KLQotU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5z
aW9uKCkgOiBTdHJpbmcoKTsKLX0KLSAgICAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6
OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
YWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KDApKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFZhbHVlcyBjaG9zZW4gdG8gYmUgYXBwcm9wcmlh
dGUgZm9yIGlPUy4KLSAgICBjb25zdCBpbnQgY01heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1w
bGluZyA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBjb25zdCBTdWJzYW1wbGluZ0xldmVsIG1heFN1
YnNhbXBsaW5nTGV2ZWwgPSAzOwotCi0gICAgU3Vic2FtcGxpbmdMZXZlbCBjdXJyZW50TGV2ZWwg
PSAwOwotICAgIGZvciAoIDsgY3VycmVudExldmVsIDw9IG1heFN1YnNhbXBsaW5nTGV2ZWw7ICsr
Y3VycmVudExldmVsKSB7Ci0gICAgICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJ
bmRleCgwLCBjdXJyZW50TGV2ZWwpOwotICAgICAgICBpZiAoZnJhbWVTaXplLmFyZWEoKSA8IGNN
YXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcpCi0gICAgICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gY3VycmVudExldmVsOwotfQotICAgIAotU3Vic2FtcGxpbmdMZXZl
bCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAotewotI2lmIFBM
QVRGT1JNKElPUykKLSAgICByZXR1cm4gY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwo
KTsKLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291
cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKHNjYWxlLCBtYXhp
bXVtU3Vic2FtcGxpbmdMZXZlbCgpKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZh
aWxhYmxlKCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmlzU2l6
ZUF2YWlsYWJsZSgpOwotfQotCi1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXpl
ZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KGluZGV4KTsK
LX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAotewotICAgIGlmICgh
aW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAKLSAgICBJbnRTaXplIHNp
emUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwp
OwotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBtX2RlY29kZXItPm9yaWVudGF0
aW9uQXRJbmRleChpbmRleCk7Ci0gICAgCi0gICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNX
aWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOwotfQotCi1JbWFn
ZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRh
dGlvbkF0SW5kZXgoaW5kZXgpIDogSW1hZ2VPcmllbnRhdGlvbigpOwotfQotCi1JbnRTaXplIElt
YWdlU291cmNlOjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgw
LCAwKTsKLX0KLSAgICAKLUludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50
YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJ
bnRQb2ludCYgaG90U3BvdCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBt
X2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0
ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW1h
Z2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLX0KLSAgICAK
LWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKLXsKLSAgICByZXR1cm4gaW5pdGlh
bGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTG9vcE9u
Y2U7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7Ci19Ci0K
LVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0g
ICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7Ci19Ci0KLWJvb2wgSW1hZ2VT
b3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVy
biBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRl
eCk7Ci19Ci0KLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lRHVy
YXRpb25BdEluZGV4KGluZGV4KSA6IDA7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFz
QWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICByZXR1cm4gIWluaXRpYWxpemVkKCkg
fHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Ci19Ci0KLXVuc2lnbmVk
IEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKLXsKLSAgICBJbnRTaXplIGZyYW1lU2l6ZSA9
IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIHJldHVybiBm
cmFtZVNpemUuYXJlYSgpICogNDsKLX0KLSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4
dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fYWxsb3dTdWJzYW1wbGluZykKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJhbGxvdy1zdWJzYW1wbGluZyIsIG1fYWxsb3dTdWJzYW1wbGlu
Zyk7Ci0gICAgCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9u
QXRJbmRleCgwKTsKLSAgICBpZiAob3JpZW50YXRpb24gIT0gT3JpZ2luVG9wTGVmdCkKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJvcmllbnRhdGlvbiIsIG9yaWVudGF0aW9uKTsKLX0KLQotfQot
Ci0jZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiAxOTkyNjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0y
NzAsMTMgKzI3MSwxNiBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRW
CiAKIH0KIAotYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBp
bmRleCkgY29uc3QKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8
PSBpbmRleCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKLSAgICAgICAg
cmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uaGFzQWxwaGEoKTsKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyQ2Fj
aGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7Cit9CisKK2Jv
b2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFmcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSB8fCBtX2ZyYW1l
QnVmZmVyQ2FjaGVbaW5kZXhdLmhhc0FscGhhKCk7CiB9CiAKIHVuc2lnbmVkIEltYWdlRGVjb2Rl
cjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdApAQCAtMjg3LDYgKzI5MSw0
MiBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4CiAgICAgcmV0dXJu
IG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKIH0KIAorZmxv
YXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
Cit7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkg
PT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBN
YW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZs
YXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCisgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBi
ZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQg
c3BlY2lmeQorICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2Js
ZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgorICAgIC8vIGZvciBt
b3JlIGluZm9ybWF0aW9uLgorICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gbV9mcmFtZUJ1ZmZl
ckNhY2hlW2luZGV4XS5kdXJhdGlvbigpIC8gMTAwMC4wZjsKKyAgICBpZiAoZHVyYXRpb24gPCAw
LjAxMWYpCisgICAgICAgIHJldHVybiAwLjEwMGY7CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQor
CitOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRz
LiBJZiB3ZSBoYXZlIGFuCisgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwu
CisgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBSZXR1cm4gdGhl
IGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gRm9yIHNvbWUgcG9ydHMsIHRoZSBk
YXRhCisgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1
c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCisgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNo
ZVtpbmRleF0uYXNOZXdOYXRpdmVJbWFnZSgpOworfQorCiB2b2lkIEltYWdlRGVjb2Rlcjo6cHJl
cGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCkKIHsKICAgICBtX3NjYWxlZCA9IGZhbHNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgJKHJldmlzaW9uIDE5OTI2MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIElu
Yy4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQpAQCAtMjM1LDE1ICsyMzUsMTQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZURl
Y29kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIElt
YWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291
cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKLSAgICAgICAgICAgIDogbV9zY2FsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fcHJlbXVs
dGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVk
KQorICAgICAgICAgICAgOiBtX3ByZW11bHRpcGx5QWxwaGEoYWxwaGFPcHRpb24gPT0gSW1hZ2VT
b3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKICAgICAgICAgICAgICwgbV9pZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZShnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6
R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkKQotICAgICAgICAgICAgLCBtX3NpemVBdmFpbGFi
bGUoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbWF4TnVtUGl4ZWxzKC0xKQotICAgICAgICAgICAg
LCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX2ZhaWxlZChmYWxz
ZSkgeyB9CisgICAgICAgIHsKKyAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgfkltYWdlRGVj
b2RlcigpIHsgfQorICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKQorICAgICAgICB7Cisg
ICAgICAgIH0KIAogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIGRlY29kZXIgb2Yg
dGhlIGFwcHJvcHJpYXRlIHR5cGUuICBSZXR1cm5zIDAgaWYKICAgICAgICAgLy8gd2UgY2FuJ3Qg
c25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQpA
QCAtMjU0LDExICsyNTMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wg
aXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKG1fZmFpbGVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fZGF0
YSA9IGRhdGE7CisgICAgICAgICAgICBtX2RhdGEgPSAmZGF0YTsKICAgICAgICAgICAgIG1faXNB
bGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAgICAgICAgIH0KIApAQCAtMjgyLDcg
KzI4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gc2l6ZXMuICBUaGlzIGRv
ZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBmb3IgR0lGLCBzaW5jZSBkZWNvZGluZyBHSUZzCiAg
ICAgICAgIC8vIGNvbXBvc2l0ZXMgYW55IHNtYWxsZXIgZnJhbWVzIGFnYWluc3QgcHJldmlvdXMg
ZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQogICAgICAgICAvLyBzaXplIGZyYW1lcy4KLSAgICAgICAg
dmlydHVhbCBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorICAgICAgICB2
aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwp
IGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBzaXplKCk7CiAgICAgICAgIH0K
QEAgLTMxMCwxNiArMzA5LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSW1h
Z2VEZWNvZGVyLW93bmVkIHBvaW50ZXIuCiAgICAgICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJh
bWVCdWZmZXJBdEluZGV4KHNpemVfdCkgPSAwOwogCisgICAgICAgIGJvb2wgZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleChzaXplX3QpIGNvbnN0OworCiAgICAgICAgIC8vIE1ha2UgdGhlIGJlc3QgZWZm
b3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0ZWQgZnJhbWUgaGFzIGFscGhhIGNoYW5u
ZWwuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNv
bnN0OworICAgICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAK
ICAgICAgICAgLy8gTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lIHJlcXVlc3Rl
ZC4gUmV0dXJuIDAgaWYgbm90IHlldCBkZWNvZGVkLgotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVk
IGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIGZyYW1l
Qnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIAorICAgICAgICBmbG9hdCBmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICAKKyAgICAgICAgTmF0aXZl
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
KSBjb25zdDsKIAogICAgICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJv
b2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgICAg
ICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdu
b3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KIAotICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgICAgICBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZW50YXRpb247IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09m
RnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICBl
bnVtIHsgaWNjQ29sb3JQcm9maWxlSGVhZGVyTGVuZ3RoID0gMTI4IH07CiAKQEAgLTMzMCw2ICsz
MzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuICFtZW1jbXAo
JnByb2ZpbGVEYXRhWzE2XSwgIlJHQiAiLCA0KTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRp
YyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgeyByZXR1cm4gMDsg
fQorICAgICAgICAKKyAgICAgICAgc3RhdGljIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbEZvclNjYWxlKGZsb2F0LCBTdWJzYW1wbGluZ0xldmVsKSB7IHJldHVybiAwOyB9CisKICAg
ICAgICAgc3RhdGljIGJvb2wgaW5wdXREZXZpY2VDb2xvclByb2ZpbGUoY29uc3QgY2hhciogcHJv
ZmlsZURhdGEsIHVuc2lnbmVkIHByb2ZpbGVMZW5ndGgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVF9VTlVTRUQocHJvZmlsZUxlbmd0aCwgcHJvZmlsZUxlbmd0aCA+PSBpY2NDb2xvclBy
b2ZpbGVIZWFkZXJMZW5ndGgpOwpAQCAtMzU0LDEwICszNjUsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIGNvbXBvc2l0aW5nKS4KICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFy
RnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKLSAgICAgICAgdm9pZCBzZXRNYXhOdW1QaXhlbHMoaW50IG0pIHsgbV9t
YXhOdW1QaXhlbHMgPSBtOyB9Ci0jZW5kaWYKLQogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFz
IGEgY3Vyc29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFyZ3VtZW50CiAgICAgICAgIC8v
IGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgogICAgICAgICB2aXJ0
dWFsIGJvb2wgaG90U3BvdChJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0z
NzQsNyArMzgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWZWN0b3I8SW1hZ2VG
cmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwogICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVl
ZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBwb3J0PwogICAgICAgICBDb2xvclBy
b2ZpbGUgbV9jb2xvclByb2ZpbGU7Ci0gICAgICAgIGJvb2wgbV9zY2FsZWQ7CisgICAgICAgIGJv
b2wgbV9zY2FsZWQgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVt
bnM7CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKICAgICAgICAgYm9vbCBtX3By
ZW11bHRpcGx5QWxwaGE7CkBAIC0zOTIsMTAgKzM5OSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIH0KIAogICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICAgICAgYm9vbCBtX3Np
emVBdmFpbGFibGU7Ci0gICAgICAgIGludCBtX21heE51bVBpeGVsczsKLSAgICAgICAgYm9vbCBt
X2lzQWxsRGF0YVJlY2VpdmVkOwotICAgICAgICBib29sIG1fZmFpbGVkOworICAgICAgICBib29s
IG1fc2l6ZUF2YWlsYWJsZSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9X
Tl9TQU1QTElORykKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IDEw
MjQgKiAxMDI0IH07CisjZWxzZQorICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4
ZWxzIHsgLTEgfTsKKyNlbmRpZgorICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBm
YWxzZSB9OworICAgICAgICBib29sIG1fZmFpbGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTkyNjMpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNC0w
OCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAg
IE1lcmdlIENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRp
b24gaW4gb25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbDogQWRkZWQu
CisKIDIwMTYtMDQtMDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBYSFJzIGFuZCBXZWIgV29ya2VyIHNjcmlwdHMgYXJlIG5v
dCBzZWFyY2hhYmxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1w
bGluZy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L2ltYWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy1leHBlY3RlZC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c3R5bGU+CisgICAgICAgIGRpdiB7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7Cisg
ICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgbWFyZ2luOiAxMHB4OworICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICB9CisgICAgPC9zdHlsZT4K
KzxoZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGNyZWF0ZURpdihjb2xvcikg
eworICAgICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICBkaXZFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yOworICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdkVsZW1lbnQpOworICAgIH0KKworICAg
IGNyZWF0ZURpdigicmVkIik7CisgICAgY3JlYXRlRGl2KCJncmVlbiIpOworICAgIGNyZWF0ZURp
digiYmx1ZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c3R5bGU+CisgICAgICAgIGRpdiB7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7Cisg
ICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgbWFyZ2luOiAxMHB4OworICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICB9CisgICAgICAgIGltZyB7
CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgICAgICB9CisgICAgPC9zdHlsZT4KKzxoZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNl
dEltYWdlU3Vic2FtcGxpbmdFbmFibGVkKHRydWUpOworCisgICAgZnVuY3Rpb24gY3JlYXRlSW1h
Z2UoY29sb3IpIHsKKyAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpOworICAgICAgICBjYW52YXMud2lkdGggPSAxMDI0ICogNSArIDE7CisgICAgICAg
IGNhbnZhcy5oZWlnaHQgPSAxMDI0ICogMSArIDE7CisgICAgICAgIHZhciBjdHggPSBjYW52YXMu
Z2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9yOworICAgICAg
ICBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAg
ICAgICB2YXIgaW1nRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAg
ICAgICBpbWdFbGVtZW50LnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoImltYWdlL3BuZyIpOworCisg
ICAgICAgIHZhciBkaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgICAgIGRpdkVsZW1lbnQuYXBwZW5kQ2hpbGQoaW1nRWxlbWVudCk7CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2RWxlbWVudCk7CisgICAgfQorICAgIAorICAgIGNyZWF0
ZUltYWdlKCJyZWQiKTsKKyAgICBjcmVhdGVJbWFnZSgiZ3JlZW4iKTsKKyAgICBjcmVhdGVJbWFn
ZSgiYmx1ZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276082</attachid>
            <date>2016-04-09 01:16:14 -0700</date>
            <delta_ts>2016-04-09 02:55:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160409011619.patch</filename>
            <type>text/plain</type>
            <size>63262</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU2OTUzMGIwM2QzMzM1
YWY1YjNlYzU0MDQ3OTU3MWY1N2NhMzNmOS4uYTM0MTNiZWIzZmFkNWJjZmQ1MDY4ZWEzYjQ1NTFk
MTVkNWY5ODE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MCBAQAorMjAxNi0wNC0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltYWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4g
QWxsIHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJ
bWFnZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNh
biBoYXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0
IHJpZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0
L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
TWFjLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5k
IGFkZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAg
IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1vdmUgY2xlYXIodHJ1ZSkg
Y2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNs
ZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxscyBJbWFnZURlY29kZXI6
OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hpY2ggd2lsbCBkbyBub3Ro
aW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5z
dXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvCisgICAgICAgIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJbWFnZURlY29kZXI6OnNl
dE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29uc3Qgc3RhdGljIGludCBD
RyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0CisgICAgICAgIGJhc2Vk
IG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAgCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVmZmVyJiB0byB0aGUgdW5k
ZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0dXJucyB0aGUgbWF4aW11
bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBhbiBpbWFnZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNj
YWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1YnNhbXBsaW5nTGV2ZWwg
dGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgZm9y
CisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKTogUmV0dXJu
cyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hpY2ggY2FuIGRldGVybWlu
ZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisgICAgICAgIHplcm8uIEZv
ciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNvcnJlY3RlZCBsYXRlci4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVu
dGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBlcnMgZm9yIHRoZSBJbWFn
ZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGlz
IHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisgICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6
ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldEFsbG93U3Vic2FtcGxpbmcp
OiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6c2V0QWxsb3dTdWJzYW1wbGluZygpLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptYXhQaXhlbHNQZXJEZWNvZGVkSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVs
c1BlckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIFNldHRpbmcgbWF4UGl4ZWxzUGVy
RGVjb2RlZEltYWdlIHdhcyBtb3ZlZCB0byB0aGUgbm9uIENHIEltYWdlRGVjb2Rlci4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIFNoYXJlZEJ1
ZmZlciogdG8gU2hhcmVkQnVmZmVyJi4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOiBEZWxldGVkLgorICAgICAgICBUaGUgY29kZSB3
YXMgbW92ZWQgdG8gSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSgpLgorICAg
ICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOiBNYWtlIHRoZSBwcm90b3R5
cGUgb2YgdGhpcyBmdW5jdGlvbgorICAgICAgICBzdWl0YWJsZSBmb3IgQ0cgYW5kIG5vbiBDRyBj
YXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKTogRW1wdHkgZnVuY3Rpb25zIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgIAorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOiBBIG1ldyBm
dW5jdGlvbiB0byByZXR1cm4KKyAgICAgICAgd2hldGhlciB0aGUgZnJhbWUgZGVjb2RpbmcgaXMg
Y29tcGxldGUgb3Igbm90LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOiBTaW1wbGlmeSB0aGUgbG9naWMuCisgICAgICAgIAor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6IFRo
ZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KTogVGhlIGNvZGUgd2FzIG1v
dmVkIGZyb20KKyAgICAgICAgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KCkg
aW4gSW1hZ2VTb3VyY2UuY3BwLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
SW1hZ2VEZWNvZGVyKTogSW5pdGlhbGl6ZSB0aGUgbWVtYmVycyBpbiBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6IEZpeCB0aGUgYnJhY2VzIHN0
eWxlLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIHRo
ZSB0eXBlIG9mIHRoZSBhcmd1bWVudCBmcm9tCisgICAgICAgIFNoYXJlZEJ1ZmZlciogdG8gU2hh
cmVkQnVmZmVyJi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJ
bmRleCk6IEFkZCB0aGUgYXJndW1lbnQgU3Vic2FtcGxpbmdMZXZlbAorICAgICAgICBzbyBpdCBj
YW4gaGF2ZSB0aGUgc2FtZSBwcm90b3R5cGUgYXMgQ0cuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6IFJlbmFtZSBpdCB0byB0aGUgc2FtZSBvZiBD
Ry4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmFsbG93U3Vic2Ft
cGxpbmdPZkZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6IEFkZCB0aGVzZSBmdW5jdGlvbnMK
KyAgICAgICAgYW5kIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMgc28gd2UgZG8gbm90IGhhdmUg
dG8gYWRkIGRpcmVjdGl2ZSBjb21waWxlZAorICAgICAgICBub24gQ0cgYmxvY2tzIGluIEltYWdl
U291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Om9y
aWVudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
TWF4TnVtUGl4ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
TVBJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNv
ZGVyOjpwcm9jZXNzRmlsZUhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFk
ZXI6OnJlYWRVaW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnJlYWRV
aW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnJlYWRDdXJyZW50UGl4ZWwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZJ
bWFnZVJlYWRlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29k
ZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRh
Rm9yUE5HRGVjb2RlckF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVy
Ojpwcm9jZXNzRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6
cHJvY2Vzc0RpcmVjdG9yeUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNv
ZGVyOjpyZWFkRGlyZWN0b3J5RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNv
ZGVyOjppbWFnZVR5cGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIFVzZSByZWZlcmVuY2UgU2hhcmVkQnVm
ZmVyIGluc3RlYWQgb2YgcG9pbnRlciBTaGFyZWRCdWZmZXIuCisKIDIwMTYtMDQtMDkgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBmdW5jdGlv
bmFsIDpob3N0KCkgcHNldWRvIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGY1YzY2MzVj
YzExZDNmY2YzNGZiNmZkMzM5NTJhNTcwYWY5NjhkM2MuLmRiMTg2NzI1YjkzMDY4M2RlY2Y4ZWE2
NTlmZWM0YmI3Mzc0M2IzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjEzLDYgKzIyMTMs
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9JbnRSZWN0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCBjNjcyY2M3MDdmYTg3ODVi
YTUyNzQ0MmU5MDRiMWNmYWRiMjUxNWFjLi4wOWM4MDk0ZTc3YzRiZjMyYWNmNDdhYTkzZTlkYmFl
OTk2Mjk3ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTcyLDcg
KzcyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW50UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGI3MmYyZTE1YzhiNTJlYWUxYTNlNmQ2YTRlYTZh
ZDEyYjEyYTI4ZTguLmFlYTM1NzEwNTkwOWI3YzdlZTIwNTUyNzU5ZWFjOTlmNDU2ZDVhMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC00MDYsNyArNDA2LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NWY2Mjg2YjYzNDlkMmY5NDc1
OWUyYTNiNGUwMzcwMmUyOTdiMDBjLi4yNTg5YzM1MWVhNTk3NTk5ZWU4YTA3MDExZTYwZmIzYTc1
YTIyM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC00OTg2LDcgKzQ5ODYsNiBAQAogCQlCMjc1MzU1QTBCMDUzODE0MDAyQ0U2
NEYgLyogRmxvYXRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAq
LzsgfTsKIAkJQjI3NTM1NUIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTJEMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi87IH07CiAJCUIyNzUzNTVFMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLzsg
fTsKLQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzEwQjA1Mzgx
NDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovOyB9OwogCQlCMjc1MzU2MDBCMDUzODE0
MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5j
cHAgKi87IH07CiAJCUIyNzUzNTYxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzMwQjA1
MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYyMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAg
Ki87IH07CkBAIC0xMjg3Nyw3ICsxMjg3Niw2IEBACiAJCUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0
RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmxvYXRSZWN0Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUy
RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VD
Ry5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VD
Ry5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMyMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnRQb2ludENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1
MzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW50UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzg1LDcgKzIxNzgzLDYgQEAKIAkJCQlCMjc1MzUzMDBCMDUz
ODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8sCiAJCQkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLywKIAkJCQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0
MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAqLywKLQkJCQlCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYg
LyogSW1hZ2VTb3VyY2VDRy5jcHAgKi8sCiAJCQkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8q
IEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1h
Z2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50
UG9pbnRDRy5jcHAgKi8sCkBAIC0zMDAwNCw3ICszMDAwMSw2IEBACiAJCQkJMkQ1QTU5MkYxNTI1
MjUyMzAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjUxQTJGNDExN0Q3RDVERTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzQzcyNUUxOTc0ODc0QjAwQUVERDBDIC8qIEltYWdlU291cmNl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFn
ZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0
MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZF
MURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJFOTYxQzU0MThBRDMzODUwMEQwN0RDNSAvKiBJbmJhbmREYXRhVGV4dFRyYWNrLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwCmluZGV4IDBkMTAwOTYxZmYyNzYxNTM2OTk1MGZjYmJmZTFlYzVlYzgzMTg0ZmYu
LmM4YWE5NTAzMmYzNjJiZmQyZmMxODY3N2RhYmZjMzY4YmRiODQ3ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTQsIDIw
MTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
NyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28udWs+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYwpAQCAtMjksMTkgKzI5LDE2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKIAotI2lmICFVU0UoQ0cpCi0K
KyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKKyNlbHNlCiAjaW5jbHVk
ZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKIAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24u
aCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotdW5zaWduZWQgSW1hZ2VT
b3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlID0gMTAyNCAqIDEwMjQ7Ci0jZW5kaWYK
LQogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9hbHBoYU9wdGlvbihhbHBoYU9wdGlvbikKICAg
ICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24oZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCkBAIC01MCwxNCArNDcsMjEgQEAgSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291
cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW0KIAogSW1hZ2VT
b3VyY2U6On5JbWFnZVNvdXJjZSgpCiB7Ci0gICAgY2xlYXIodHJ1ZSk7CiB9CiAKLXZvaWQgSW1h
Z2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUs
IFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291
cmNlOjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpCit7Cisg
ICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9kZWNvZGVyLT5j
bGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7Cit9CisKK3ZvaWQgSW1hZ2VT
b3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1lcywgc2l6ZV90IGNsZWFyQmVmb3JlRnJh
bWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgaWYg
KCFkZXN0cm95QWxsKSB7Ci0gICAgICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgICAgICBtX2Rl
Y29kZXItPmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKKyAgICAvLyBU
aGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheSB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhw
bGljaXRseSBhc2tlZAorICAgIC8vIHRvIGRlc3Ryb3kgYWxsIG9mIHRoZSBmcmFtZXMuCisgICAg
aWYgKCFkZXN0cm95QWxsRnJhbWVzKSB7CisgICAgICAgIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShj
bGVhckJlZm9yZUZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjcsMjAgKzcx
LDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNs
ZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlcioKICAgICAgICAgc2V0RGF0YShkYXRhLCBhbGxE
YXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVh
dGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJ
c0NyZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChpbml0aWFsaXpl
ZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgLy8gTWFrZSB0aGUgZGVjb2RlciBieSBz
bmlmZmluZyB0aGUgYnl0ZXMuCi0gICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBleGFtaW5lIHRoZSBk
YXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgZGVjb2Rl
ciBwbHVnaW4uCi0gICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBhdmFpbGFibGUgdG8g
ZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3aWxsIGJlCi0gICAg
Ly8gbWFkZS4KLSAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZSgqZGF0YSwgbV9h
bHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0jaWYgRU5BQkxFKElN
QUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBpZiAobV9kZWNvZGVyICYmIHNfbWF4UGl4
ZWxzUGVyRGVjb2RlZEltYWdlKQotICAgICAgICBtX2RlY29kZXItPnNldE1heE51bVBpeGVscyhz
X21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7Ci0jZW5kaWYKKyAgICBtX2RlY29kZXIgPSBJbWFn
ZURlY29kZXI6OmNyZWF0ZShkYXRhLCBtX2FscGhhT3B0aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAtODgsNyArODQsNyBAQCB2b2lkIEltYWdl
U291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZW5zdXJlRGVjb2Rl
cklzQ3JlYXRlZChkYXRhKTsKKyAgICBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKCpkYXRhKTsKICAg
ICAKICAgICBpZiAoIWluaXRpYWxpemVkKCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC05NiwyMiArOTIsNDYgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAogICAgIGlmIChtX2Rl
Y29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQp
OworICAgICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9
Ci0KLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAorICAgIAor
U3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5n
TGV2ZWwoKSBjb25zdAogewotICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZpbGVu
YW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKKyAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8
fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KDApKQorICAgICAgICByZXR1cm4gMDsK
KyAgICAKKyAgICAvLyBGSVhNRTogdGhpcyB2YWx1ZSB3YXMgY2hvc2VuIHRvIGJlIGFwcHJvcHJp
YXRlIGZvciBpT1Mgc2luY2UgdGhlIGltYWdlCisgICAgLy8gc3Vic2FtcGxpbmcgaXMgb25seSBl
bmFibGVkIGJ5IGRlZmF1bHQgb24gaU9TLiBDaG9vc2UgYSBkaWZmZXJlbnQgdmFsdWUKKyAgICAv
LyBpZiBpbWFnZSBzdWJzYW1wbGluZyBpcyBlbmFibGVkIG9uIG90aGVyIHBsYXRmb3JtLgorICAg
IGNvbnN0IGludCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nID0gNSAqIDEwMjQg
KiAxMDI0OworICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgbWF4U3Vic2FtcGxpbmdMZXZlbCA9
IDM7CisgICAgCisgICAgZm9yIChTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSAw
OyBzdWJzYW1wbGluZ0xldmVsIDwgbWF4U3Vic2FtcGxpbmdMZXZlbDsgKytzdWJzYW1wbGluZ0xl
dmVsKSB7CisgICAgICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleCgwLCBz
dWJzYW1wbGluZ0xldmVsKTsKKyAgICAgICAgaWYgKGZyYW1lU2l6ZS5hcmVhKCkgPCBjTWF4aW11
bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQorICAgICAgICAgICAgcmV0dXJuIHN1YnNhbXBs
aW5nTGV2ZWw7CisgICAgfQorICAgIAorICAgIHJldHVybiBtYXhTdWJzYW1wbGluZ0xldmVsOwog
fQogCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2Nh
bGUoZmxvYXQpIGNvbnN0CitTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAg
aWYgKHNjYWxlIDw9IDAgfHwgc2NhbGUgPiAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAg
ICBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsID0gY2FsY3VsYXRlTWF4
aW11bVN1YnNhbXBsaW5nTGV2ZWwoKTsKKyAgICBpZiAoIW1heGltdW1TdWJzYW1wbGluZ0xldmVs
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRoZXJlIGFyZSBmb3VyIHN1YnNhbXBsaW5n
IGxldmVsczogMCA9IDF4LCAxID0gMC41eCwgMiA9IDAuMjV4LCAzID0gMC4xMjV4LgorICAgIFN1
YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9nMmYoMSAvIHNjYWxlKSk7CisgICAgcmV0
dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1ib29s
IEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25z
dAorc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMo
KQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0Rl
Y29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6aXNT
aXplQXZhaWxhYmxlKCkKQEAgLTEyOSw5NyArMTQ5LDY5IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6
OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAogICAgIHJldHVybiBmcmFtZVNpemVB
dEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAotSW50U2l6ZSBJbWFn
ZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWws
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bikgY29uc3QKK3NpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiB7Ci0gICAg
aWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgSW50U2l6ZSBz
aXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4KTsKLSAgICBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRhdGlvbigpOwotICAgIAotICAg
IHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bv
c2VkU2l6ZSgpIDogc2l6ZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+
ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQ
b2ludCYgaG90U3BvdCkgY29uc3QKK2ludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkK
IHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmhvdFNwb3QoaG90U3Bv
dCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3Vu
dCgpIDogY0FuaW1hdGlvbk5vbmU7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNv
ZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKK1N0cmluZyBJbWFnZVNvdXJjZTo6Zmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBpbml0
aWFsaXplZCgpID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9
CiAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKK2Jvb2wgSW1hZ2VTb3VyY2U6
OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluaXRp
YWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7
CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5ob3RTcG90KGhvdFNwb3Qp
OwogfQogCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAorYm9vbCBJbWFn
ZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CisgICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGlu
ZGV4KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKK2Jvb2wgSW1hZ2VTb3VyY2U6
OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWluaXRpYWxp
emVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gWmVyby1oZWlnaHQgaW1h
Z2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KLSAg
ICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KLSAgICBpZiAoc2l6ZSgpLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZm
ZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZm
ZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVy
LT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Cit9CiAKLSAgICAvLyBSZXR1cm4gdGhlIGJ1
ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gIEZvciBzb21lIHBvcnRzLCB0aGUgZGF0
YQotICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUgY29udGFpbmVyLCBhbmQgdGhpcyBqdXN0
IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgotICAgIHJldHVybiBidWZmZXItPmFzTmV3TmF0aXZl
SW1hZ2UoKTsKK2Jvb2wgSW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRl
eChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9k
ZWNvZGVyLT5hbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoaW5kZXgpOwogfQogCi1mbG9h
dCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW50U2l6
ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAogewogICAgIGlmICghaW5pdGlhbGl6ZWQo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29k
ZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVy
LT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkg
YSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBhcyBwb3NzaWJs
ZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlv
biBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5Ci0gICAgLy8gYSBkdXJhdGlv
biBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93
ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgY29u
c3QgZmxvYXQgZHVyYXRpb24gPSBidWZmZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBmOwotICAgIGlm
IChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAgcmV0dXJuIDAuMTAwZjsKLSAgICByZXR1cm4g
ZHVyYXRpb247CisgICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4
KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uID0gb3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gJiYgb3JpZW50YXRp
b24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7CiB9
CiAKLUltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXpl
X3QpIGNvbnN0Cit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uKCkgOiBJbWFnZU9y
aWVudGF0aW9uKCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBs
aW5nTGV2ZWwpLmFyZWEoKSAqIDQ7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCBpbmRleCkKK2Zsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuICFpbml0aWFsaXplZCgpIHx8IG1f
ZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAgIHJldHVybiBpbml0aWFs
aXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkgOiAwOwogfQog
Ci1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkK
K0ltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVy
QXRJbmRleChpbmRleCk7Ci0gICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1cygpID09
IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBt
X2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7
CiB9Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CisgICAgCitOYXRpdmVJbWFnZVB0ciBJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2Rl
Y29kZXItPmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KSA6IDA7CisgICAgcmV0dXJuIGluaXRpYWxp
emVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0
cmVhbSYgdHMpIGNvbnN0CkBAIC0yMzMsNSArMjI1LDMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZHVt
cChUZXh0U3RyZWFtJiB0cykgY29uc3QKIH0KICAgICAKIH0KLQotI2VuZGlmIC8vIFVTRShDRykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4
IGNkOWIzOWRhYTFjODVlMTgwZjJjNjQxNWEwZWQyM2YzZTRkNzc3YTQuLjUwNzJhMjFjYTk3ZWQ1
NTNkZmZmYzFlMGY5YjkxYzk1ODE3NWVkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCwgMjAx
MiwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC0zNSwxMSArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLXR5cGVkZWYgc3RydWN0IENHSW1hZ2VTb3Vy
Y2UqIENHSW1hZ2VTb3VyY2VSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZE
YXRhUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VPcmll
bnRhdGlvbjsKQEAgLTgzLDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICBHYW1tYUFuZENvbG9y
UHJvZmlsZUlnbm9yZWQKICAgICB9OwogCi0gICAgSW1hZ2VTb3VyY2UoQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24gPSBBbHBoYVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVk
KTsKKyAgICBJbWFnZVNvdXJjZShBbHBoYU9wdGlvbiA9IEFscGhhUHJlbXVsdGlwbGllZCwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpOwog
ICAgIH5JbWFnZVNvdXJjZSgpOwogCiAgICAgLy8gVGVsbHMgdGhlIEltYWdlU291cmNlIHRoYXQg
dGhlIEltYWdlIG5vIGxvbmdlciBjYXJlcyBhYm91dCBkZWNvZGVkIGZyYW1lCkBAIC0xMDcsNzYg
KzEwMiw2MSBAQCBwdWJsaWM6CiAgICAgLy8gd2hvIHNldCB8ZGVzdHJveUFsbHwgdG8gdHJ1ZSBp
ZiB0aGV5IHdpc2ggdG8gYmUgYWJsZSB0byBjb250aW51ZSB1c2luZwogICAgIC8vIHRoZSBJbWFn
ZVNvdXJjZS4gIFRoaXMgd2F5IGltcGxlbWVudGF0aW9ucyB3aGljaCBjaG9vc2UgdG8gZGVzdHJv
eSB0aGVpcgogICAgIC8vIGRlY29kZXJzIGluIHNvbWUgY2FzZXMgY2FuIHJlY29uc3RydWN0IHRo
ZW0gY29ycmVjdGx5LgotICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxsLAotICAgICAgICAg
ICAgICAgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLAotICAgICAgICAgICAgICAgU2hhcmVk
QnVmZmVyKiBkYXRhID0gTlVMTCwKLSAgICAgICAgICAgICAgIGJvb2wgYWxsRGF0YVJlY2VpdmVk
ID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxsLCBzaXplX3QgY2xlYXJC
ZWZvcmVGcmFtZSA9IDAsIFNoYXJlZEJ1ZmZlciogZGF0YSA9IG51bGxwdHIsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkID0gZmFsc2UpOwogCiAgICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0OwogCiAgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2Nh
bGUoZmxvYXQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4
KHNpemVfdCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbGxvd1N1YnNhbXBsaW5nKGJvb2wgYWxsb3dT
dWJzYW1wbGluZykgeyBtX2FsbG93U3Vic2FtcGxpbmcgPSBhbGxvd1N1YnNhbXBsaW5nOyB9Ci0g
ICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0OwotCi0g
ICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2Rl
ZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwogICAgIAorICAgIGJvb2wgaXNTaXplQXZhaWxhYmxl
KCk7CiAgICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhvdXQgc3Vic2FtcGxpbmcuCiAg
ICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVu
dGF0aW9uKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBs
ZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdElt
YWdlT3JpZW50YXRpb24pIGNvbnN0OwotCi0gICAgYm9vbCBnZXRIb3RTcG90KEludFBvaW50Jikg
Y29uc3Q7Ci0KLSAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkg
Y29uc3Q7Ci0KLSAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCk7CiAKICAgICBzaXplX3QgZnJhbWVD
b3VudCgpIGNvbnN0OworICAgIGludCByZXBldGl0aW9uQ291bnQoKTsKKyAgICBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICBib29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBj
b25zdDsKIAotICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGlu
ZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7Ci0gICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNs
ZWFyKCkgYWJvdmUuCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7Ci0KLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9u
QXRJbmRleChzaXplX3QpOwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsg
Ly8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgogICAg
IGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0
aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVkLgotICAgIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24K
LQorICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBu
b3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgorICAgIGJvb2wgYWxsb3dTdWJz
YW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgCisgICAgLy8gU2l6ZSBv
ZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCisgICAgSW50U2l6ZSBmcmFtZVNpemVBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
RW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OworICAgIAogICAgIC8v
IFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUg
ZnJhbWUgaXMgbm90IHlldAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25z
dDsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGlj
IHVuc2lnbmVkIG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxz
UGVyRGVjb2RlZEltYWdlOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2Rl
ZEltYWdlKHVuc2lnbmVkIG1heFBpeGVscykgeyBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9
IG1heFBpeGVsczsgfQotI2VuZGlmCi0KKyAgICAKKyAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJ
bmRleChzaXplX3QpOworICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNp
emVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KKyAgICAKKyAgICAvLyBDYWxs
ZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGln
aGVyIGluZGV4OworICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgorICAgIE5h
dGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IDApOworICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0
ZWQoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
KTsKKyAgICB2b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7
CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgp
IGNvbnN0OwogICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Q7CiAgICAgCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgIAorCisgICAgLy8gVGhl
IGRlZmF1bHQgdmFsdWUgb2YgbV9hbGxvd1N1YnNhbXBsaW5nIHNob3VsZCBiZSB0aGUgc2FtZSBh
cyBkZWZhdWx0SW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQgaW4gU2V0dGluZ3MuY3BwCiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIHsgdHJ1ZSB9OwogI2Vsc2UK
ICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyB7IGZhbHNlIH07CiAjZW5kaWYKIAotI2lmICFV
U0UoQ0cpCiAgICAgQWxwaGFPcHRpb24gbV9hbHBoYU9wdGlvbjsKICAgICBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOwotI2VuZGlmCi0jaWYg
RU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBzdGF0aWMgdW5zaWduZWQg
c19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7Ci0jZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApp
bmRleCA3ZmJkMzQxYjk4OGRjMjVkNmQxZjExZDhlYTM2N2EzNjlkMGRkYjQ1Li41OTBmNjFjYzU5
NzdkNjZmZTRhOTVhM2M4ZTBjZTFkMDU0ZGIxNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0xMjIsMTUg
KzEyMiw2IEBAIEltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKCkKICAgICBtX25hdGl2ZURlY29k
ZXIgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbmNyZW1lbnRhbChudWxscHRyKSk7CiB9
CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2Nh
bGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwp
Ci17Ci0gICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEg
PSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCi0gICAgZmxvYXQgY2xhbXBlZFNjYWxlID0g
c3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBzdGQ6Om1pbjxmbG9hdD4oMSwgc2NhbGUpKTsKLSAgICBT
dWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9IGNlaWxmKGxvZzJmKDEgLyBjbGFtcGVkU2NhbGUpKTsK
LSAgICBBU1NFUlQocmVzdWx0ID49MCAmJiByZXN1bHQgPD0gMyk7Ci0gICAgcmV0dXJuIHN0ZDo6
bWluKHJlc3VsdCwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwotfQotCiBzaXplX3QgSW1hZ2VE
ZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewogICAgIC8vIE1l
YXN1cmVkIGJ5IHRyYWNpbmcgbWFsbG9jL2NhbGxvYyBjYWxscyBvbiBNYWMgT1MgMTAuNi42LCB4
ODZfNjQuCkBAIC0zODYsMjEgKzM3NywyMSBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShD
RkRhdGFSZWYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgQ0dJbWFnZVNvdXJjZVVw
ZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwog
fQogCi12b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2Vj
cmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgog
ICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lk
ZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAg
ICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIHNldERhdGEoZGF0
YS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgc2V0RGF0YShk
YXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAv
LyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAg
ZGF0YS0+cmVmKCk7CisgICAgZGF0YS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVz
QXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJl
Y2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2Nr
IGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwg
d2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50
ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJD
YWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hh
cmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0
YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChkYXRhLCBkYXRh
LT5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVj
dCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VT
b3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlk
ZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDhjNmE5
ZTIyNzgwNDNmYTVhYzcyMTI2MTdmMWUwOTMxNDcxZmQ0YjQuLjNlYTUyYTEyZTY5NGRlN2ViMTgz
NzA3NzczNWI1Njc0OTQ2Mjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMjksMTkgKzI5LDIxIEBACiAjaW5j
bHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKIAordHlwZWRlZiBz
dHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFnZURlY29kZXIoKTsKICAgICAKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKCkKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYs
IEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VE
ZWNvZGVyPigpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRv
RGV0ZXJtaW5lUHJvcGVydGllcygpOwotICAgIHN0YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBjb25zdDsKQEAgLTY0LDcgKzY2LDkg
QEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBzZXREYXRhKENG
RGF0YVJlZiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRC
dWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAKKyAgICB2b2lkIGNsZWFyRnJhbWVC
dWZmZXJDYWNoZShzaXplX3QpIHsgfQogICAgIAogcHJvdGVjdGVkOgogICAgIG11dGFibGUgSW50
U2l6ZSBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0cuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWQ0
ZTE1YzlmZmU3OTBjMmU2ODUyNDZmZThmODVlYjU2MTYwODNhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlU291cmNl
LmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgotCi0jaW5jbHVk
ZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSW1hZ2VTb3Vy
Y2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6Okdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotewotICAgIC8vIEZJWE1FOiBBbHBoYU9wdGlvbiBh
bmQgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gYXJlIGlnbm9yZWQuCi19Ci0KLUltYWdlU291
cmNlOjp+SW1hZ2VTb3VyY2UoKQotewotICAgIGNsZWFyKHRydWUpOwotfQotCi12b2lkIEltYWdl
U291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGxGcmFtZXMsIHNpemVfdCwgU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICAvLyBSZWNlbnQgdmVyc2lvbnMg
b2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBmcmFtZXMgaWYgdGhl
IGNsaWVudAotICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxvbmdlciBob2xkcyByZWZlcmVuY2VzIHRv
IHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5Ci0gICAgLy8gdGhlIGRlY29k
ZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQgdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZy
YW1lcy4KLSAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fZGVjb2RlciA9IG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIHNldERh
dGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmVu
c3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKikKLXsKLSAgICBpZiAoaW5pdGlhbGl6
ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZGVjb2RlciA9IEltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKCk7Ci19Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKGRhdGEpOwotICAgIAotICAgIGlm
ICghaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBtX2RlY29kZXItPnNldERhdGEoZGF0YSwgYWxs
RGF0YVJlY2VpdmVkKTsKLX0KLQotU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZpbGVu
YW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKLX0KLSAgICAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1h
Z2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdElu
ZGV4KDApKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFZhbHVlcyBjaG9zZW4gdG8gYmUg
YXBwcm9wcmlhdGUgZm9yIGlPUy4KLSAgICBjb25zdCBpbnQgY01heGltdW1JbWFnZUFyZWFCZWZv
cmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBjb25zdCBTdWJzYW1wbGluZ0xl
dmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwotCi0gICAgU3Vic2FtcGxpbmdMZXZlbCBjdXJy
ZW50TGV2ZWwgPSAwOwotICAgIGZvciAoIDsgY3VycmVudExldmVsIDw9IG1heFN1YnNhbXBsaW5n
TGV2ZWw7ICsrY3VycmVudExldmVsKSB7Ci0gICAgICAgIEludFNpemUgZnJhbWVTaXplID0gZnJh
bWVTaXplQXRJbmRleCgwLCBjdXJyZW50TGV2ZWwpOwotICAgICAgICBpZiAoZnJhbWVTaXplLmFy
ZWEoKSA8IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3VycmVudExldmVsOwotfQotICAgIAotU3Vic2Ft
cGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAot
ewotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBs
aW5nTGV2ZWwoKTsKLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1TdWJzYW1wbGluZ0xldmVs
IEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKHNj
YWxlLCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6
aXNTaXplQXZhaWxhYmxlKCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29k
ZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwotfQotCi1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNh
bXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBp
bml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4
KGluZGV4KTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAotewot
ICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAKLSAgICBJ
bnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBs
aW5nTGV2ZWwpOwotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBtX2RlY29kZXIt
Pm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgCi0gICAgcmV0dXJuIHNob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYmIG9yaWVudGF0
aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOwot
fQotCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6
ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVy
LT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogSW1hZ2VPcmllbnRhdGlvbigpOwotfQotCi1J
bnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWVTaXpl
QXRJbmRleCgwLCAwKTsKLX0KLSAgICAKLUludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0
aW5nT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAs
IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0
SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6
ZWQoKSAmJiBtX2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7Ci19Ci0KLXNpemVfdCBJbWFnZVNv
dXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsK
LX0KLSAgICAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKLXsKLSAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0
aW9uTG9vcE9uY2U7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6
IDA7Ci19Ci0KLVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7Ci19Ci0KLWJv
b2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQotewot
ICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleChpbmRleCk7Ci19Ci0KLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
PmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KSA6IDA7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6
OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICByZXR1cm4gIWluaXRp
YWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Ci19Ci0K
LXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKLXsKLSAgICBJbnRTaXplIGZy
YW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAg
IHJldHVybiBmcmFtZVNpemUuYXJlYSgpICogNDsKLX0KLSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6
OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fYWxsb3dTdWJzYW1wbGlu
ZykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbGxvdy1zdWJzYW1wbGluZyIsIG1fYWxsb3dT
dWJzYW1wbGluZyk7Ci0gICAgCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IG9y
aWVudGF0aW9uQXRJbmRleCgwKTsKLSAgICBpZiAob3JpZW50YXRpb24gIT0gT3JpZ2luVG9wTGVm
dCkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvcmllbnRhdGlvbiIsIG9yaWVudGF0aW9uKTsK
LX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNmZlMjkwZTIy
NjE4ZmJkNzZjNzVjODQ0OTI0NDcyZTMxOTdmZmY4Ny4uY2YxMTc1ZDQ5MzY4ZDQ5NjE5NmMwNDcw
MjM5NTAzYjZiMzc5ODgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC0yNzAsMTMgKzI3MSwxNiBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+
IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBpbgog
CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5k
ZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXpl
X3QgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0g
aW5kZXgpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGVb
aW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCi0gICAgICAgIHJl
dHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmhhc0FscGhhKCk7Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hl
W2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworfQorCitib29s
IEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAor
eworICAgIHJldHVybiAhZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkgfHwgbV9mcmFtZUJ1
ZmZlckNhY2hlW2luZGV4XS5oYXNBbHBoYSgpOwogfQogCiB1bnNpZ25lZCBJbWFnZURlY29kZXI6
OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKQEAgLTI4Nyw2ICsyOTEsNDIg
QEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4
ZWxEYXRhKTsKIH0KIAorZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChz
aXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkg
PD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICAvLyBNYW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0
byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCisgICAgLy8gV2Ug
Zm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZv
ciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMu
IFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2
MDgyPgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIGNvbnN0IGZsb2F0IGR1cmF0
aW9uID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5kdXJhdGlvbigpIC8gMTAwMC4wZjsKKyAg
ICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAgICAgIHJldHVybiAwLjEwMGY7CisgICAgcmV0
dXJuIGR1cmF0aW9uOworfQorCitOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK3sK
KyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2Js
ZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuCisgICAgLy8gZW1wdHkgaW1hZ2UgZGlt
ZW5zaW9uLCBqdXN0IGJhaWwuCisgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVz
KCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gRm9y
IHNvbWUgcG9ydHMsIHRoZSBkYXRhCisgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250
YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCisgICAgcmV0dXJu
IG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uYXNOZXdOYXRpdmVJbWFnZSgpOworfQorCiB2b2lk
IEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCkKIHsKICAgICBtX3Nj
YWxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCA1MzQ3YTQ3YjcyM2NkNWYwM2I2MmQzYjM1MmNm
OTQ1MTQ3ZGEwZWFhLi41NjZlY2IwNWVjOTQ1MjJlMDViYmQ4Nzk3ZjZkNzU5Y2NkZWZmNGVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAx
NiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
QEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTIzNSwxNSArMjM1LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1h
Z2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAg
ICBJbWFnZURlY29kZXIoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFn
ZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCi0gICAgICAgICAgICA6IG1fc2NhbGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3By
ZW11bHRpcGx5QWxwaGEoYWxwaGFPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlw
bGllZCkKKyAgICAgICAgICAgIDogbV9wcmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IElt
YWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICAsIG1faWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gSW1hZ2VTb3Vy
Y2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlSWdub3JlZCkKLSAgICAgICAgICAgICwgbV9zaXplQXZh
aWxhYmxlKGZhbHNlKQotICAgICAgICAgICAgLCBtX21heE51bVBpeGVscygtMSkKLSAgICAgICAg
ICAgICwgbV9pc0FsbERhdGFSZWNlaXZlZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9mYWlsZWQo
ZmFsc2UpIHsgfQorICAgICAgICB7CisgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5JbWFn
ZURlY29kZXIoKSB7IH0KKyAgICAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkKKyAgICAgICAg
eworICAgICAgICB9CiAKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBkZWNvZGVy
IG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLiAgUmV0dXJucyAwIGlmCiAgICAgICAgIC8vIHdlIGNh
bid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2li
bHkKQEAgLTI1NCw3ICsyNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9v
bCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAobV9mYWlsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjgyLDcgKzI4MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gc2l6ZXMuICBUaGlzIGRvZXMgTk9U
IGRpZmZlciBmcm9tIHNpemUoKSBmb3IgR0lGLCBzaW5jZSBkZWNvZGluZyBHSUZzCiAgICAgICAg
IC8vIGNvbXBvc2l0ZXMgYW55IHNtYWxsZXIgZnJhbWVzIGFnYWluc3QgcHJldmlvdXMgZnJhbWVz
IHRvIGNyZWF0ZSBmdWxsLQogICAgICAgICAvLyBzaXplIGZyYW1lcy4KLSAgICAgICAgdmlydHVh
bCBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorICAgICAgICB2aXJ0dWFs
IEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBzaXplKCk7CiAgICAgICAgIH0KQEAgLTMx
MCwxNiArMzA5LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSW1hZ2VEZWNv
ZGVyLW93bmVkIHBvaW50ZXIuCiAgICAgICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZm
ZXJBdEluZGV4KHNpemVfdCkgPSAwOwogCisgICAgICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleChzaXplX3QpIGNvbnN0OworCiAgICAgICAgIC8vIE1ha2UgdGhlIGJlc3QgZWZmb3J0IGd1
ZXNzIHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0ZWQgZnJhbWUgaGFzIGFscGhhIGNoYW5uZWwuCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0Owor
ICAgICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKICAgICAg
ICAgLy8gTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lIHJlcXVlc3RlZC4gUmV0
dXJuIDAgaWYgbm90IHlldCBkZWNvZGVkLgotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGZyYW1l
Qnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIAorICAgICAgICBmbG9hdCBmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICAKKyAgICAgICAgTmF0aXZlSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25z
dDsKIAogICAgICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxh
ZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgICAgICBib29s
IGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGU7IH0KIAotICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgICAgICBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50
YXRpb247IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KHNpemVfdCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICBlbnVtIHsg
aWNjQ29sb3JQcm9maWxlSGVhZGVyTGVuZ3RoID0gMTI4IH07CiAKQEAgLTMzMCw2ICszMzcsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2Zp
bGVEYXRhWzE2XSwgIlJHQiAiLCA0KTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyBzaXpl
X3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgeyByZXR1cm4gMDsgfQorICAg
ICAgICAKKyAgICAgICAgc3RhdGljIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZv
clNjYWxlKGZsb2F0LCBTdWJzYW1wbGluZ0xldmVsKSB7IHJldHVybiAwOyB9CisKICAgICAgICAg
c3RhdGljIGJvb2wgaW5wdXREZXZpY2VDb2xvclByb2ZpbGUoY29uc3QgY2hhciogcHJvZmlsZURh
dGEsIHVuc2lnbmVkIHByb2ZpbGVMZW5ndGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQocHJvZmlsZUxlbmd0aCwgcHJvZmlsZUxlbmd0aCA+PSBpY2NDb2xvclByb2ZpbGVI
ZWFkZXJMZW5ndGgpOwpAQCAtMzU0LDEwICszNjUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIGNvbXBvc2l0aW5nKS4KICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVC
dWZmZXJDYWNoZShzaXplX3QpIHsgfQogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKLSAgICAgICAgdm9pZCBzZXRNYXhOdW1QaXhlbHMoaW50IG0pIHsgbV9tYXhOdW1Q
aXhlbHMgPSBtOyB9Ci0jZW5kaWYKLQogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vy
c29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFyZ3VtZW50CiAgICAgICAgIC8vIGFuZCBy
ZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgogICAgICAgICB2aXJ0dWFsIGJv
b2wgaG90U3BvdChJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zNzAsMTEg
KzM3NywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBsb3dlckJvdW5kU2Nh
bGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDApOwogICAgICAgICBpbnQgc2NhbGVk
WShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDApOwogCi0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsgLy8gVGhlIGVuY29kZWQgZGF0YS4KKyAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgogICAgICAgICBWZWN0b3I8SW1h
Z2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwogICAgICAgICAvLyBGSVhNRTogRG8gd2Ug
bmVlZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBwb3J0PwogICAgICAgICBDb2xv
clByb2ZpbGUgbV9jb2xvclByb2ZpbGU7Ci0gICAgICAgIGJvb2wgbV9zY2FsZWQ7CisgICAgICAg
IGJvb2wgbV9zY2FsZWQgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENv
bHVtbnM7CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKICAgICAgICAgYm9vbCBt
X3ByZW11bHRpcGx5QWxwaGE7CkBAIC0zOTIsMTAgKzM5OSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIH0KIAogICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICAgICAgYm9vbCBt
X3NpemVBdmFpbGFibGU7Ci0gICAgICAgIGludCBtX21heE51bVBpeGVsczsKLSAgICAgICAgYm9v
bCBtX2lzQWxsRGF0YVJlY2VpdmVkOwotICAgICAgICBib29sIG1fZmFpbGVkOworICAgICAgICBi
b29sIG1fc2l6ZUF2YWlsYWJsZSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7
IDEwMjQgKiAxMDI0IH07CisjZWxzZQorICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVt
UGl4ZWxzIHsgLTEgfTsKKyNlbmRpZgorICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQg
eyBmYWxzZSB9OworICAgICAgICBib29sIG1fZmFpbGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDNk
NzZiYzJhOTc0ZGVhZjczMThkNTcwYjFlZWMzMTYyNjA5OTgwNjUuLjQ5YzBhMWRiZjk2MTZkNGNk
NzEzYzRiNTBhYWU0NDk5ZmM5YzMwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEltYWdlU291
cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29k
ZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3Zv
aWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0x
MjcsNyArMTI3LDcgQEAgYm9vbCBCTVBJbWFnZURlY29kZXI6OnByb2Nlc3NGaWxlSGVhZGVyKHNp
emVfdCogaW1nRGF0YU9mZnNldCkKICAgICBBU1NFUlQoIW1fZGVjb2RlZE9mZnNldCk7CiAgICAg
aWYgKG1fZGF0YS0+c2l6ZSgpIDwgc2l6ZU9mRmlsZUhlYWRlcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGNvbnN0IHVpbnQxNl90IGZpbGVUeXBlID0gKG1fZGF0YS0+ZGF0YSgpWzBdIDw8
IDgpIHwgc3RhdGljX2Nhc3Q8dWludDhfdD4obV9kYXRhLT5kYXRhKClbMV0pOworICAgIGNvbnN0
IHVpbnQxNl90IGZpbGVUeXBlID0gKG1fZGF0YS5kYXRhKClbMF0gPDwgOCkgfCBzdGF0aWNfY2Fz
dDx1aW50OF90PihtX2RhdGEuZGF0YSgpWzFdKTsKICAgICAqaW1nRGF0YU9mZnNldCA9IHJlYWRV
aW50MzIoMTApOwogICAgIG1fZGVjb2RlZE9mZnNldCA9IHNpemVPZkZpbGVIZWFkZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZURlY29kZXIuaAppbmRleCAxYzg4MmUxMzk5NTJlNDc0ODMyYmNiYzIyMDUwYTYw
ZmI0ZmZiYjk3Li5iMmM0Nzg5NTYxOWJlY2FmMjVkMTBhMzBjMmU4M2FlMzU1ODg3NmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICAvLyBJbWFnZURlY29kZXIKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiAiYm1wIjsgfQotICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKICAgICAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgICAgICB2
aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpOwogICAg
ICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuICBCZSBjYXJl
ZnVsIHRvIGF2b2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCmluZGV4IGI1Y2I5NmUzZjkyOTkyZGQ3
NjJlNTM3NGI1ZDU1Y2NkNzg1M2NjYzEuLmNiMmEyMjdmMzczOGNlYzVkMjQ0YTk2MzE5OTM1Mjhm
YzM0NDhkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCkBAIC00MywyMCArNDMsMjAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgLy8gUmVhZCBhIHZhbHVlIGZy
b20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAg
ICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVp
bnQxNihTaGFyZWRCdWZmZXIqIGRhdGEsIGludCBvZmZzZXQpCisgICAgICAgIHN0YXRpYyBpbmxp
bmUgdWludDE2X3QgcmVhZFVpbnQxNihTaGFyZWRCdWZmZXImIGRhdGEsIGludCBvZmZzZXQpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHVpbnQxNl90IHJlc3VsdDsKLSAgICAgICAgICAgIG1lbWNw
eSgmcmVzdWx0LCAmZGF0YS0+ZGF0YSgpW29mZnNldF0sIDIpOworICAgICAgICAgICAgbWVtY3B5
KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCAyKTsKICAgICAgICAgI2lmIENQVShCSUdf
RU5ESUFOKQogICAgICAgICAgICAgcmVzdWx0ID0gKChyZXN1bHQgJiAweGZmKSA8PCA4KSB8ICgo
cmVzdWx0ICYgMHhmZjAwKSA+PiA4KTsKICAgICAgICAgI2VuZGlmCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCBy
ZWFkVWludDMyKFNoYXJlZEJ1ZmZlciogZGF0YSwgaW50IG9mZnNldCkKKyAgICAgICAgc3RhdGlj
IGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgaW50IG9mZnNl
dCkKICAgICAgICAgewogICAgICAgICAgICAgdWludDMyX3QgcmVzdWx0OwotICAgICAgICAgICAg
bWVtY3B5KCZyZXN1bHQsICZkYXRhLT5kYXRhKClbb2Zmc2V0XSwgNCk7CisgICAgICAgICAgICBt
ZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29mZnNldF0sIDQpOwogICAgICAgICAjaWYgQ1BV
KEJJR19FTkRJQU4pCiAgICAgICAgICAgICByZXN1bHQgPSAoKHJlc3VsdCAmIDB4ZmYpIDw8IDI0
KSB8ICgocmVzdWx0ICYgMHhmZjAwKSA8PCA4KSB8ICgocmVzdWx0ICYgMHhmZjAwMDApID4+IDgp
IHwgKChyZXN1bHQgJiAweGZmMDAwMDAwKSA+PiAyNCk7CiAgICAgICAgICNlbmRpZgpAQCAtNzAs
NyArNzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEJNUEltYWdlUmVhZGVyKElt
YWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90
IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2spOwogCiAgICAgICAgIHZvaWQgc2V0QnVm
ZmVyKEltYWdlRnJhbWUqIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IGJ1ZmZlcjsgfQotICAgICAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKSB7IG1fZGF0YSA9IGRhdGE7IH0KKyAgICAg
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CiAK
ICAgICAgICAgLy8gRG9lcyB0aGUgYWN0dWFsIGRlY29kaW5nLiAgSWYgfG9ubHlTaXplfCBpcyB0
cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgICAgIC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vz
c2FyeSB0byBnZXQgdGhlIGltYWdlIHNpemUuICBSZXR1cm5zCkBAIC0yMDUsNyArMjA1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgIC8vIG9mIHRoZSByZXR1cm4gdmFs
dWUgaGVyZSBpbiBsaXR0bGUtZW5kaWFuIG1vZGUsIHRoZSBjYWxsZXIKICAgICAgICAgICAgICAg
ICAvLyB3b24ndCByZWFkIGl0LgogICAgICAgICAgICAgICAgIHVpbnQzMl90IHBpeGVsOwotICAg
ICAgICAgICAgICAgIG1lbWNweSgmcGl4ZWwsICZtX2RhdGEtPmRhdGEoKVttX2RlY29kZWRPZmZz
ZXQgKyBvZmZzZXRdLCAzKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoJnBpeGVsLCAmbV9kYXRh
LmRhdGEoKVttX2RlY29kZWRPZmZzZXQgKyBvZmZzZXRdLCAzKTsKICAgICAgICAgI2lmIENQVShC
SUdfRU5ESUFOKQogICAgICAgICAgICAgICAgIHBpeGVsID0gKChwaXhlbCAmIDB4ZmYwMCkgPDwg
OCkgfCAoKHBpeGVsICYgMHhmZjAwMDApID4+IDgpIHwgKChwaXhlbCAmIDB4ZmYwMDAwMDApID4+
IDI0KTsKICAgICAgICAgI2VuZGlmCkBAIC0yNzgsNyArMjc4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBJbWFnZUZyYW1lKiBtX2J1ZmZlcjsKIAogICAgICAgICAvLyBUaGUgZmls
ZSB0byBkZWNvZGUuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiAgICAgICAgIC8vIEFuIGluZGV4IGludG8g
fG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAg
ICAgICAgc2l6ZV90IG1fZGVjb2RlZE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAK
aW5kZXggY2Q1NmU2N2ViOTE4YjE2OTNjNGVjY2Y3NDBhZjgwYzg1OTM2YTc5OC4uZDkyNzAxYWJm
YTM2MjI0NDM0OTY4MmZmMGE2ZTlmOWZlYmUwNDVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVy
KCkKIHsKIH0KIAotdm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZh
aWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggNDA2
MTA4OTUzOTVkOWIxMmNjNjlkMTkxY2MzMDUyMjA5Y2MwNjg3Mi4uYzRjNDlhYzM0ZThjODJjYTI5
MDM4YWNlZGMwMzlmNTkwZjM4MWJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDIs
NyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVy
CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1
cm4gImdpZiI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXpl
KHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwogICAgICAgICB2aXJ0dWFsIHNpemVf
dCBmcmFtZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IGZiODc4ZWQwOGUyOGQ0
MDJlZWYzNzBkY2EzOTJjZjlmMjZlZDA0NjkuLjBjMTBmZTBmMDNiNWE4ZTUwYTQzOTZmMTk0ZGE0
MTJmYzU5YTE0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yNDYsNyArMjQ2LDcgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoUGFzc1JlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQorICAgIHZvaWQgc2V0
RGF0YShTaGFyZWRCdWZmZXImIGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQogICAgIC8vIEZJWE1F
OiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAt
MzIwLDcgKzMyMCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZG
cmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJh
bWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRl
ZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNTZhYzkyMWNkMDg0Njgy
M2I4MTExOGVhNmYzYWRmMjExZGE3YTA4NS4uNzEzMTAzM2ZiODBhMjM3ODJhZTE5OGYxMWI1MTkw
N2NiNjE5MjRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTU1LDcgKzU1LDcg
QEAgSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkKIHsKIH0KIAotdm9pZCBJQ09J
bWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQ
TkdEZWNvZGVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgLy8gQ29weSBvdXQgUE5HIGRhdGEg
dG8gYSBzZXBhcmF0ZSB2ZWN0b3IgYW5kIHNlbmQgdG8gdGhlIFBORyBkZWNvZGVyLgogICAgIC8v
IEZJWE1FOiBTYXZlIHRoaXMgY29weSBieSBtYWtpbmcgdGhlIFBORyBkZWNvZGVyIGFibGUgdG8g
dGFrZSBhbgogICAgIC8vIG9wdGlvbmFsIG9mZnNldC4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBwbmdEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCZtX2RhdGEtPmRhdGEoKVtkaXJFbnRyeS5t
X2ltYWdlT2Zmc2V0XSwgbV9kYXRhLT5zaXplKCkgLSBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0KSk7
CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9k
YXRhLmRhdGEoKVtkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0XSwgbV9kYXRhLnNpemUoKSAtIGRpckVu
dHJ5Lm1faW1hZ2VPZmZzZXQpKTsKICAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YShw
bmdEYXRhLmdldCgpLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIApAQCAtMjM3LDcgKzIzNyw3
IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpwcm9jZXNzRGlyZWN0b3J5KCkKIHsKICAgICAvLyBS
ZWFkIGRpcmVjdG9yeS4KICAgICBBU1NFUlQoIW1fZGVjb2RlZE9mZnNldCk7Ci0gICAgaWYgKG1f
ZGF0YS0+c2l6ZSgpIDwgc2l6ZU9mRGlyZWN0b3J5KQorICAgIGlmIChtX2RhdGEuc2l6ZSgpIDwg
c2l6ZU9mRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY29uc3QgdWludDE2
X3QgZmlsZVR5cGUgPSByZWFkVWludDE2KDIpOwogICAgIGNvbnN0IHVpbnQxNl90IGlkQ291bnQg
PSByZWFkVWludDE2KDQpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVy
Ojpwcm9jZXNzRGlyZWN0b3J5RW50cmllcygpCiB7CiAgICAgLy8gUmVhZCBkaXJlY3RvcnkgZW50
cmllcy4KICAgICBBU1NFUlQobV9kZWNvZGVkT2Zmc2V0ID09IHNpemVPZkRpcmVjdG9yeSk7Ci0g
ICAgaWYgKChtX2RlY29kZWRPZmZzZXQgPiBtX2RhdGEtPnNpemUoKSkgfHwgKChtX2RhdGEtPnNp
emUoKSAtIG1fZGVjb2RlZE9mZnNldCkgPCAobV9kaXJFbnRyaWVzLnNpemUoKSAqIHNpemVPZkRp
ckVudHJ5KSkpCisgICAgaWYgKChtX2RlY29kZWRPZmZzZXQgPiBtX2RhdGEuc2l6ZSgpKSB8fCAo
KG1fZGF0YS5zaXplKCkgLSBtX2RlY29kZWRPZmZzZXQpIDwgKG1fZGlyRW50cmllcy5zaXplKCkg
KiBzaXplT2ZEaXJFbnRyeSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZm9yIChJY29u
RGlyZWN0b3J5RW50cmllczo6aXRlcmF0b3IgaShtX2RpckVudHJpZXMuYmVnaW4oKSk7IGkgIT0g
bV9kaXJFbnRyaWVzLmVuZCgpOyArK2kpCiAgICAgICAgICppID0gcmVhZERpcmVjdG9yeUVudHJ5
KCk7ICAvLyBVcGRhdGVzIG1fZGVjb2RlZE9mZnNldC4KQEAgLTI5MCwxMCArMjkwLDEwIEBAIElD
T0ltYWdlRGVjb2Rlcjo6SWNvbkRpcmVjdG9yeUVudHJ5IElDT0ltYWdlRGVjb2Rlcjo6cmVhZERp
cmVjdG9yeUVudHJ5KCkKICAgICAvLyB0eXBlIG9mIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHZhbHVl
cy4gIFN0b3JpbmcgdGhlbSBpbiBpbnRzIChpbnN0ZWFkIG9mCiAgICAgLy8gbWF0Y2hpbmcgdWlu
dDhfdHMpIGlzIHNvIHdlIGNhbiByZWNvcmQgZGltZW5zaW9ucyBvZiBzaXplIDI1NiAod2hpY2gg
aXMKICAgICAvLyB3aGF0IGEgemVybyBieXRlIHJlYWxseSBtZWFucykuCi0gICAgaW50IHdpZHRo
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4obV9kYXRhLT5kYXRhKClbbV9kZWNvZGVkT2Zmc2V0XSk7
CisgICAgaW50IHdpZHRoID0gc3RhdGljX2Nhc3Q8dWludDhfdD4obV9kYXRhLmRhdGEoKVttX2Rl
Y29kZWRPZmZzZXRdKTsKICAgICBpZiAoIXdpZHRoKQogICAgICAgICB3aWR0aCA9IDI1NjsKLSAg
ICBpbnQgaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4obV9kYXRhLT5kYXRhKClbbV9kZWNv
ZGVkT2Zmc2V0ICsgMV0pOworICAgIGludCBoZWlnaHQgPSBzdGF0aWNfY2FzdDx1aW50OF90Piht
X2RhdGEuZGF0YSgpW21fZGVjb2RlZE9mZnNldCArIDFdKTsKICAgICBpZiAoIWhlaWdodCkKICAg
ICAgICAgaGVpZ2h0ID0gMjU2OwogICAgIEljb25EaXJlY3RvcnlFbnRyeSBlbnRyeTsKQEAgLTMx
Miw3ICszMTIsNyBAQCBJQ09JbWFnZURlY29kZXI6Okljb25EaXJlY3RvcnlFbnRyeSBJQ09JbWFn
ZURlY29kZXI6OnJlYWREaXJlY3RvcnlFbnRyeSgpCiAgICAgLy8gdGhpcyBpc24ndCBxdWl0ZSB3
aGF0IHRoZSBiaXRtYXAgaW5mbyBoZWFkZXIgc2F5cyBsYXRlciwgYXMgd2Ugb25seSB1c2UKICAg
ICAvLyB0aGlzIHZhbHVlIHRvIGRldGVybWluZSB3aGljaCBpY29uIGVudHJ5IGlzIGJlc3QuCiAg
ICAgaWYgKCFlbnRyeS5tX2JpdENvdW50KSB7Ci0gICAgICAgIGludCBjb2xvckNvdW50ID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4obV9kYXRhLT5kYXRhKClbbV9kZWNvZGVkT2Zmc2V0ICsgMl0pOwor
ICAgICAgICBpbnQgY29sb3JDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1fZGF0YS5kYXRh
KClbbV9kZWNvZGVkT2Zmc2V0ICsgMl0pOwogICAgICAgICBpZiAoIWNvbG9yQ291bnQpCiAgICAg
ICAgICAgICBjb2xvckNvdW50ID0gMjU2OyAgLy8gVmFndWUgaW4gdGhlIHNwZWMsIG5lZWRlZCBi
eSByZWFsLXdvcmxkIGljb25zLgogICAgICAgICBmb3IgKC0tY29sb3JDb3VudDsgY29sb3JDb3Vu
dDsgY29sb3JDb3VudCA+Pj0gMSkKQEAgLTMyOSw5ICszMjksOSBAQCBJQ09JbWFnZURlY29kZXI6
OkltYWdlVHlwZSBJQ09JbWFnZURlY29kZXI6OmltYWdlVHlwZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogICAgIC8vIG51bWJlci4KICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihp
bmRleCA8IG1fZGlyRW50cmllcy5zaXplKCkpOwogICAgIGNvbnN0IHVpbnQzMl90IGltYWdlT2Zm
c2V0ID0gbV9kaXJFbnRyaWVzW2luZGV4XS5tX2ltYWdlT2Zmc2V0OwotICAgIGlmICgoaW1hZ2VP
ZmZzZXQgPiBtX2RhdGEtPnNpemUoKSkgfHwgKChtX2RhdGEtPnNpemUoKSAtIGltYWdlT2Zmc2V0
KSA8IDQpKQorICAgIGlmICgoaW1hZ2VPZmZzZXQgPiBtX2RhdGEuc2l6ZSgpKSB8fCAoKG1fZGF0
YS5zaXplKCkgLSBpbWFnZU9mZnNldCkgPCA0KSkKICAgICAgICAgcmV0dXJuIFVua25vd247Ci0g
ICAgcmV0dXJuIHN0cm5jbXAoJm1fZGF0YS0+ZGF0YSgpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQTkci
LCA0KSA/IEJNUCA6IFBORzsKKyAgICByZXR1cm4gc3RybmNtcCgmbV9kYXRhLmRhdGEoKVtpbWFn
ZU9mZnNldF0sICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuaAppbmRleCAxNDk0Nzk3YTliZjMxYzNlNjRiODFkYjZjZTMzM2Q5MTI3ZmI4OWQ4
Li4wMTA0ZDQ0MmE0YmUyZDQ0OTRiZWJkZmRlZWM3N2ZlOTk0YzFmMmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICAvLyBJbWFnZURlY29kZXIKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdCB7IHJldHVybiAiaWNvIjsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0
RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAg
ICAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgICAgICB2aXJ0dWFsIElu
dFNpemUgc2l6ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJ
bmRleChzaXplX3QpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI5NmI4MzQ3OTVlOWI2OGYyZDE1NzM0MzcxNzcw
ODMyNzMxYzBmODUuLmM1OGRlNzI1NGI5YjE3Y2I1ZDUzMTg2YjFjOWRkMGJmMTVjYWE0MzMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdlIENHIEltYWdlU291cmNlIGFuZCBu
b24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4gb25lIGZpbGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Ut
c3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMv
aW1hZ2Utc3Vic2FtcGxpbmcuaHRtbDogQWRkZWQuCisKIDIwMTYtMDQtMDkgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBmdW5jdGlvbmFsIDpo
b3N0KCkgcHNldWRvIGNsYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9p
bWFnZS1zdWJzYW1wbGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
aW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDMxM2JlYjhkYjc5
NDE5NWE2YmVjMjJkZjBiODExYzdiMjMwOTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDI2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAg
ICAgICBkaXYgeworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICAgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAgICAgIGRpc3BsYXk6
IGlubGluZS1ibG9jazsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8aGVhZD4KKzxib2R5Pgor
PHNjcmlwdD4KKyAgICBmdW5jdGlvbiBjcmVhdGVEaXYoY29sb3IpIHsKKyAgICAgICAgdmFyIGRp
dkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZGl2RWxl
bWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKKyAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChkaXZFbGVtZW50KTsKKyAgICB9CisKKyAgICBjcmVhdGVEaXYoInJlZCIp
OworICAgIGNyZWF0ZURpdigiZ3JlZW4iKTsKKyAgICBjcmVhdGVEaXYoImJsdWUiKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdl
LXN1YnNhbXBsaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI4YWUzYmU5ZGY1MzAxZGIyYTE4ZDgyOTM0
ZTczYmE1ZDk4OTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgZGl2IHsKKyAgICAgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICBt
YXJnaW46IDEwcHg7CisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
IH0KKyAgICAgICAgaW1nIHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPGhlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQodHJ1ZSk7CisKKyAgICBm
dW5jdGlvbiBjcmVhdGVJbWFnZShjb2xvcikgeworICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgIGNhbnZhcy53aWR0aCA9IDEwMjQg
KiAzOworICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMTAyNCAqIDM7CisgICAgICAgIHZhciBjdHgg
PSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9y
OworICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0
KTsKKworICAgICAgICB2YXIgaW1nRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlt
ZyIpOworICAgICAgICBpbWdFbGVtZW50LnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoImltYWdlL3Bu
ZyIpOworCisgICAgICAgIHZhciBkaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIGRpdkVsZW1lbnQuYXBwZW5kQ2hpbGQoaW1nRWxlbWVudCk7CisgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2RWxlbWVudCk7CisgICAgfQorICAgIAor
ICAgIGNyZWF0ZUltYWdlKCJyZWQiKTsKKyAgICBjcmVhdGVJbWFnZSgiZ3JlZW4iKTsKKyAgICBj
cmVhdGVJbWFnZSgiYmx1ZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276083</attachid>
            <date>2016-04-09 02:55:11 -0700</date>
            <delta_ts>2016-04-09 03:59:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160409025516.patch</filename>
            <type>text/plain</type>
            <size>56582</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU2OTUzMGIwM2QzMzM1
YWY1YjNlYzU0MDQ3OTU3MWY1N2NhMzNmOS4uNTdjMzcxNDYyYTkyNDkzM2ZmYzhlNTJiZDIyNDBj
NTgxOTQxMDcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxNi0wNC0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltYWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4g
QWxsIHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJ
bWFnZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNh
biBoYXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0
IHJpZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0
L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
TWFjLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5k
IGFkZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAg
IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1vdmUgY2xlYXIodHJ1ZSkg
Y2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNs
ZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxscyBJbWFnZURlY29kZXI6
OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hpY2ggd2lsbCBkbyBub3Ro
aW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5z
dXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvCisgICAgICAgIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJbWFnZURlY29kZXI6OnNl
dE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29uc3Qgc3RhdGljIGludCBD
RyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0CisgICAgICAgIGJhc2Vk
IG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAgCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVmZmVyJiB0byB0aGUgdW5k
ZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0dXJucyB0aGUgbWF4aW11
bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBhbiBpbWFnZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNj
YWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1YnNhbXBsaW5nTGV2ZWwg
dGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgZm9y
CisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKTogUmV0dXJu
cyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hpY2ggY2FuIGRldGVybWlu
ZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisgICAgICAgIHplcm8uIEZv
ciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNvcnJlY3RlZCBsYXRlci4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVu
dGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBlcnMgZm9yIHRoZSBJbWFn
ZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGlz
IHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisgICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6
ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldEFsbG93U3Vic2FtcGxpbmcp
OiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6c2V0QWxsb3dTdWJzYW1wbGluZygpLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptYXhQaXhlbHNQZXJEZWNvZGVkSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVs
c1BlckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIFNldHRpbmcgbWF4UGl4ZWxzUGVy
RGVjb2RlZEltYWdlIHdhcyBtb3ZlZCB0byB0aGUgbm9uIENHIEltYWdlRGVjb2Rlci4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIFNoYXJlZEJ1
ZmZlciogdG8gU2hhcmVkQnVmZmVyJi4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOiBEZWxldGVkLgorICAgICAgICBUaGUgY29kZSB3
YXMgbW92ZWQgdG8gSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSgpLgorICAg
ICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOiBNYWtlIHRoZSBwcm90b3R5
cGUgb2YgdGhpcyBmdW5jdGlvbgorICAgICAgICBzdWl0YWJsZSBmb3IgQ0cgYW5kIG5vbiBDRyBj
YXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKTogRW1wdHkgZnVuY3Rpb25zIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgIAorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOiBBIG1ldyBm
dW5jdGlvbiB0byByZXR1cm4KKyAgICAgICAgd2hldGhlciB0aGUgZnJhbWUgZGVjb2RpbmcgaXMg
Y29tcGxldGUgb3Igbm90LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOiBTaW1wbGlmeSB0aGUgbG9naWMuCisgICAgICAgIAor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6IFRo
ZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KTogVGhlIGNvZGUgd2FzIG1v
dmVkIGZyb20KKyAgICAgICAgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KCkg
aW4gSW1hZ2VTb3VyY2UuY3BwLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
SW1hZ2VEZWNvZGVyKTogSW5pdGlhbGl6ZSB0aGUgbWVtYmVycyBpbiBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6IEZpeCB0aGUgYnJhY2VzIHN0
eWxlLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIHRo
ZSB0eXBlIG9mIHRoZSBhcmd1bWVudCBmcm9tCisgICAgICAgIFNoYXJlZEJ1ZmZlciogdG8gU2hh
cmVkQnVmZmVyJi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJ
bmRleCk6IEFkZCB0aGUgYXJndW1lbnQgU3Vic2FtcGxpbmdMZXZlbAorICAgICAgICBzbyBpdCBj
YW4gaGF2ZSB0aGUgc2FtZSBwcm90b3R5cGUgYXMgQ0cuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6IFJlbmFtZSBpdCB0byB0aGUgc2FtZSBvZiBD
Ry4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmFsbG93U3Vic2Ft
cGxpbmdPZkZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6IEFkZCB0aGVzZSBmdW5jdGlvbnMK
KyAgICAgICAgYW5kIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMgc28gd2UgZG8gbm90IGhhdmUg
dG8gYWRkIGRpcmVjdGl2ZSBjb21waWxlZAorICAgICAgICBub24gQ0cgYmxvY2tzIGluIEltYWdl
U291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Om9y
aWVudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
TWF4TnVtUGl4ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
TVBJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAg
IFVzZSByZWZlcmVuY2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgcG9pbnRlciBTaGFyZWRCdWZm
ZXIuCisKIDIwMTYtMDQtMDkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBmdW5jdGlvbmFsIDpob3N0KCkgcHNldWRvIGNsYXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGY1YzY2MzVjYzExZDNmY2YzNGZiNmZkMzM5NTJhNTcwYWY5NjhkM2Mu
LmRiMTg2NzI1YjkzMDY4M2RlY2Y4ZWE2NTlmZWM0YmI3Mzc0M2IzMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0yMjEzLDYgKzIyMTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bnRQb2ludC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFr
ZQppbmRleCBjNjcyY2M3MDdmYTg3ODViYTUyNzQ0MmU5MDRiMWNmYWRiMjUxNWFjLi4wOWM4MDk0
ZTc3YzRiZjMyYWNmNDdhYTkzZTlkYmFlOTk2Mjk3ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QXBwbGVXaW4uY21ha2UKQEAgLTcyLDcgKzcyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGI3MmYy
ZTE1YzhiNTJlYWUxYTNlNmQ2YTRlYTZhZDEyYjEyYTI4ZTguLmFlYTM1NzEwNTkwOWI3YzdlZTIw
NTUyNzU5ZWFjOTlmNDU2ZDVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC00MDYs
NyArNDA2LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
LSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2NWY2Mjg2YjYzNDlkMmY5NDc1OWUyYTNiNGUwMzcwMmUyOTdiMDBjLi4yNTg5YzM1MWVh
NTk3NTk5ZWU4YTA3MDExZTYwZmIzYTc1YTIyM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTg2LDcgKzQ5ODYsNiBAQAog
CQlCMjc1MzU1QTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkMwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NUIwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi87
IH07CiAJCUIyNzUzNTVFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMwMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbWFnZUNHLmNwcCAqLzsgfTsKLQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8q
IEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICov
OyB9OwogCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMjBCMDUzODE0
MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYxMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI3NTM1MzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi87
IH07CiAJCUIyNzUzNTYyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzQwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi87IH07CkBAIC0xMjg3Nyw3ICsxMjg3Niw2IEBACiAJ
CUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRSZWN0Q0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjc1MzUyRDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0U2l6ZUNHLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRG
IC8qIEltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElt
YWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjc1MzUzMTBCMDUzODE0
MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRQb2ludENHLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UmVjdENHLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFNpemVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzg1LDcgKzIxNzgz
LDYgQEAKIAkJCQlCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8sCiAJ
CQkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLywKIAkJ
CQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAqLywKLQkJCQlC
Mjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi8sCiAJCQkJNEIz
NDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5
MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUz
MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0zMDAwNCw3ICszMDAw
MSw2IEBACiAJCQkJMkQ1QTU5MkYxNTI1MjUyMzAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUxQTJGNDExN0Q3RDVERTAwNzI1MTdBIC8qIEltYWdl
UXVhbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQzcyNUUxOTc0ODc0
QjAwQUVERDBDIC8qIEltYWdlU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUzNTVG
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFOTYxQzU0MThBRDMzODUwMEQwN0RDNSAvKiBJbmJh
bmREYXRhVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDBkMTAwOTYxZmYyNzYxNTM2
OTk1MGZjYmJmZTFlYzVlYzgzMTg0ZmYuLmM4YWE5NTAzMmYzNjJiZmQyZmMxODY3N2RhYmZjMzY4
YmRiODQ3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MTAsIDIwMTEsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEu
Y28udWs+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYwpAQCAt
MjksMTkgKzI5LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2UuaCIKIAotI2lmICFVU0UoQ0cpCi0KKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVyQ0cuaCIKKyNlbHNlCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKIAogI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NB
TVBMSU5HKQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdl
ID0gMTAyNCAqIDEwMjQ7Ci0jZW5kaWYKLQogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdl
U291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9hbHBo
YU9wdGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24o
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCkBAIC01MCwxNCArNDcsMjEgQEAgSW1hZ2VTb3Vy
Y2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1h
Z2VTb3VyY2U6OkdhbW0KIAogSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiB7Ci0gICAgY2xl
YXIodHJ1ZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwg
c2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
IGNsZWFyQmVmb3JlRnJhbWUpCit7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVG
cmFtZSk7Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1l
cywgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7Ci0gICAgaWYgKCFkZXN0cm95QWxsKSB7Ci0gICAgICAgIGlmIChtX2Rl
Y29kZXIpCi0gICAgICAgICAgICBtX2RlY29kZXItPmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVh
ckJlZm9yZUZyYW1lKTsKKyAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheSB0aGUg
ZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZAorICAgIC8vIHRvIGRlc3Ryb3kg
YWxsIG9mIHRoZSBmcmFtZXMuCisgICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKSB7CisgICAgICAg
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNjcsMjAgKzcxLDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJv
b2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlcioKICAg
ICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlU291
cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1h
Z2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIGlmIChpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
Ly8gTWFrZSB0aGUgZGVjb2RlciBieSBzbmlmZmluZyB0aGUgYnl0ZXMuCi0gICAgLy8gVGhpcyBt
ZXRob2Qgd2lsbCBleGFtaW5lIHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBv
ZiB0aGUgYXBwcm9wcmlhdGUgZGVjb2RlciBwbHVnaW4uCi0gICAgLy8gSWYgaW5zdWZmaWNpZW50
IGJ5dGVzIGFyZSBhdmFpbGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNv
ZGVyIHBsdWdpbiB3aWxsIGJlCi0gICAgLy8gbWFkZS4KLSAgICBtX2RlY29kZXIgPSBJbWFnZURl
Y29kZXI6OmNyZWF0ZSgqZGF0YSwgbV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBp
ZiAobV9kZWNvZGVyICYmIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKQotICAgICAgICBtX2Rl
Y29kZXItPnNldE1heE51bVBpeGVscyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7Ci0jZW5k
aWYKKyAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBtX2FscGhhT3B0
aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJj
ZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAt
ODgsNyArODQsNyBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChkYXRhKTsKKyAgICBlbnN1cmVEZWNv
ZGVySXNDcmVhdGVkKCpkYXRhKTsKICAgICAKICAgICBpZiAoIWluaXRpYWxpemVkKCkpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05NiwyMiArOTIsNDYgQEAgdm9pZCBJbWFn
ZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIH0KIAogICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0
YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICBtX2RlY29kZXItPnNldERhdGEoKmRh
dGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9Ci0KLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdAorICAgIAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2Fs
Y3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAogewotICAgIHJldHVybiBtX2Rl
Y29kZXIgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKKyAgICBp
ZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4
KDApKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhpcyB2YWx1ZSB3
YXMgY2hvc2VuIHRvIGJlIGFwcHJvcHJpYXRlIGZvciBpT1Mgc2luY2UgdGhlIGltYWdlCisgICAg
Ly8gc3Vic2FtcGxpbmcgaXMgb25seSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gaU9TLiBDaG9vc2Ug
YSBkaWZmZXJlbnQgdmFsdWUKKyAgICAvLyBpZiBpbWFnZSBzdWJzYW1wbGluZyBpcyBlbmFibGVk
IG9uIG90aGVyIHBsYXRmb3JtLgorICAgIGNvbnN0IGludCBjTWF4aW11bUltYWdlQXJlYUJlZm9y
ZVN1YnNhbXBsaW5nID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2
ZWwgbWF4U3Vic2FtcGxpbmdMZXZlbCA9IDM7CisgICAgCisgICAgZm9yIChTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSAwOyBzdWJzYW1wbGluZ0xldmVsIDwgbWF4U3Vic2FtcGxp
bmdMZXZlbDsgKytzdWJzYW1wbGluZ0xldmVsKSB7CisgICAgICAgIEludFNpemUgZnJhbWVTaXpl
ID0gZnJhbWVTaXplQXRJbmRleCgwLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAgICAgaWYgKGZy
YW1lU2l6ZS5hcmVhKCkgPCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQorICAg
ICAgICAgICAgcmV0dXJuIHN1YnNhbXBsaW5nTGV2ZWw7CisgICAgfQorICAgIAorICAgIHJldHVy
biBtYXhTdWJzYW1wbGluZ0xldmVsOwogfQogCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNl
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0CitTdWJzYW1wbGluZ0xldmVs
IEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKHNjYWxlIDw9IDAgfHwgc2NhbGUgPiAxKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1w
bGluZ0xldmVsID0gY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKTsKKyAgICBpZiAo
IW1heGltdW1TdWJzYW1wbGluZ0xldmVsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRo
ZXJlIGFyZSBmb3VyIHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAxID0gMC41eCwgMiA9IDAu
MjV4LCAzID0gMC4xMjV4LgorICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9n
MmYoMSAvIHNjYWxlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwpOwogfQogCi1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKIH0K
IAogYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKQEAgLTEyOSw5NyArMTQ5LDY5
IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25z
dAogICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKTsKIH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QKK3NpemVfdCBJbWFnZVNvdXJjZTo6ZnJh
bWVDb3VudCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1
cm4geyB9OwotCi0gICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4
KGluZGV4KTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5v
cmllbnRhdGlvbigpOwotICAgIAotICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhB
c0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKKyAgICByZXR1cm4gaW5p
dGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotYm9vbCBJbWFn
ZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK2ludCBJbWFnZVNv
dXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBt
X2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBt
X2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CiB9CiAKLXNpemVf
dCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QK
K1N0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4
dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNv
dW50KCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25D
b3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9k
ZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOwogfQogCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1l
Q291bnQoKSBjb25zdAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZy
YW1lQ291bnQoKSA6IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5m
cmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBw
b3J0cy4gIElmIHdlIGhhdmUgYW4KLSAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3Qg
YmFpbC4KLSAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRl
eChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZy
YW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gIWlu
aXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Cit9
CiAKLSAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4g
IEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQotICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUg
Y29udGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgotICAgIHJl
dHVybiBidWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKTsKK2Jvb2wgSW1hZ2VTb3VyY2U6OmFsbG93
U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5hbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0
SW5kZXgoaW5kZXgpOwogfQogCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KQorSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdElt
YWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAog
ewogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBJbWFn
ZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0g
ICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVt
cHR5KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8vIE1h
bnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxh
c2ggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJl
aGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBz
cGVjaWZ5Ci0gICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxl
bS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1v
cmUgaW5mb3JtYXRpb24uCi0gICAgY29uc3QgZmxvYXQgZHVyYXRpb24gPSBidWZmZXItPmR1cmF0
aW9uKCkgLyAxMDAwLjBmOwotICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAgcmV0
dXJuIDAuMTAwZjsKLSAgICByZXR1cm4gZHVyYXRpb247CisgICAgSW50U2l6ZSBzaXplID0gbV9k
ZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gb3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsK
KyAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdl
T3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJh
bnNwb3NlZFNpemUoKSA6IHNpemU7CiB9CiAKLUltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6
Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0Cit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
Pm9yaWVudGF0aW9uKCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIGZyYW1lU2l6
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpLmFyZWEoKSAqIDQ7CiB9CiAKLWJvb2wg
SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKK2Zsb2F0IElt
YWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0
dXJuICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5k
ZXgpOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9u
QXRJbmRleChpbmRleCkgOiAwOwogfQogCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KHNpemVfdCBpbmRleCkKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9y
aWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFs
aXplZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIg
PSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgcmV0dXJuIGJ1ZmZl
ciAmJiBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRl
eCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CiB9Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CisgICAg
CitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KSA6
IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQg
SW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CkBAIC0yMzMsNSArMjI1LDMg
QEAgdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIH0KICAgICAK
IH0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGNkOWIzOWRhYTFjODVlMTgwZjJjNjQxNWEwZWQyM2Yz
ZTRkNzc3YTQuLjUwNzJhMjFjYTk3ZWQ1NTNkZmZmYzFlMGY5YjkxYzk1ODE3NWVkYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCwgMjAxMCwgMjAxMiwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNSwxMSArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLXR5
cGVkZWYgc3RydWN0IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7Ci10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKQEAgLTgzLDcgKzc4LDcgQEAgcHVibGlj
OgogICAgICAgICBHYW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQKICAgICB9OwogCi0gICAgSW1h
Z2VTb3VyY2UoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24gPSBBbHBoYVByZW11bHRpcGxpZWQsIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2Ft
bWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKTsKKyAgICBJbWFnZVNvdXJjZShBbHBoYU9wdGlvbiA9
IEFscGhhUHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFu
ZENvbG9yUHJvZmlsZUFwcGxpZWQpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCiAgICAgLy8gVGVs
bHMgdGhlIEltYWdlU291cmNlIHRoYXQgdGhlIEltYWdlIG5vIGxvbmdlciBjYXJlcyBhYm91dCBk
ZWNvZGVkIGZyYW1lCkBAIC0xMDcsNzYgKzEwMiw2MSBAQCBwdWJsaWM6CiAgICAgLy8gd2hvIHNl
dCB8ZGVzdHJveUFsbHwgdG8gdHJ1ZSBpZiB0aGV5IHdpc2ggdG8gYmUgYWJsZSB0byBjb250aW51
ZSB1c2luZwogICAgIC8vIHRoZSBJbWFnZVNvdXJjZS4gIFRoaXMgd2F5IGltcGxlbWVudGF0aW9u
cyB3aGljaCBjaG9vc2UgdG8gZGVzdHJveSB0aGVpcgogICAgIC8vIGRlY29kZXJzIGluIHNvbWUg
Y2FzZXMgY2FuIHJlY29uc3RydWN0IHRoZW0gY29ycmVjdGx5LgotICAgIHZvaWQgY2xlYXIoYm9v
bCBkZXN0cm95QWxsLAotICAgICAgICAgICAgICAgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAw
LAotICAgICAgICAgICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gTlVMTCwKLSAgICAgICAgICAg
ICAgIGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXIoYm9vbCBk
ZXN0cm95QWxsLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSA9IDAsIFNoYXJlZEJ1ZmZlciogZGF0
YSA9IG51bGxwdHIsIGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOwogCiAgICAgYm9vbCBp
bml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogCiAgICAgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAg
IFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwogCiAgICAgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dT
dWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbGxv
d1N1YnNhbXBsaW5nKGJvb2wgYWxsb3dTdWJzYW1wbGluZykgeyBtX2FsbG93U3Vic2FtcGxpbmcg
PSBhbGxvd1N1YnNhbXBsaW5nOyB9Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2Ft
cGxpbmdMZXZlbCgpIGNvbnN0OwotCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICBz
dGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwogICAgIAor
ICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUs
IHdpdGhvdXQgc3Vic2FtcGxpbmcuCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgSW50
U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gU2l6
ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwotCi0gICAgYm9v
bCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Q7Ci0KLSAgICBzaXplX3QgYnl0ZXNEZWNvZGVk
VG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3Q7Ci0KLSAgICBpbnQgcmVwZXRpdGlvbkNvdW50
KCk7CiAKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OworICAgIGludCByZXBldGl0aW9u
Q291bnQoKTsKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICBib29s
IGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKIAotICAgIC8vIENhbGxlcnMgc2hvdWxkIG5v
dCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7Ci0g
ICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgTmF0aXZlSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7Ci0K
LSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwotICAgIGJvb2wgZnJhbWVI
YXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVh
bGx5IHVzZWQgYW55IGFscGhhLgogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXpl
X3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVkLgot
ICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8v
IEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KLQorICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFs
cGhhLgorICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29u
c3Q7CisgICAgCisgICAgLy8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCisg
ICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAs
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRp
b24pIGNvbnN0OworICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRo
ZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUgaXMgbm90IHlldAogICAgIC8vIGRlY29kZWQg
dGhlbiByZXR1cm4gMC4KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIG1heFBpeGVsc1BlckRlY29kZWRJbWFn
ZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOyB9Ci0gICAgc3RhdGljIHZv
aWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2lnbmVkIG1heFBpeGVscykgeyBzX21h
eFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsgfQotI2VuZGlmCi0KKyAgICAKKyAg
ICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOworICAgIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50
YXRpb24KKyAgICAKKyAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNh
bGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OworICAgIC8vIHNlZSBjb21tZW50cyBv
biBjbGVhcigpIGFib3ZlLgorICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIAogcHJpdmF0ZToKLSAgICB2
b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KTsKKyAgICB2b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBjYWxjdWxhdGVN
YXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0OwogICAgIHZvaWQgZHVtcChUZXh0U3RyZWFt
JikgY29uc3Q7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gbV9kZWNv
ZGVyOwotICAgIAorCisgICAgLy8gVGhlIGRlZmF1bHQgdmFsdWUgb2YgbV9hbGxvd1N1YnNhbXBs
aW5nIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBkZWZhdWx0SW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQg
aW4gU2V0dGluZ3MuY3BwCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9hbGxvd1N1YnNh
bXBsaW5nIHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyB7IGZh
bHNlIH07CiAjZW5kaWYKIAotI2lmICFVU0UoQ0cpCiAgICAgQWxwaGFPcHRpb24gbV9hbHBoYU9w
dGlvbjsKICAgICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uOwotI2VuZGlmCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElO
RykKLSAgICBzdGF0aWMgdW5zaWduZWQgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7Ci0jZW5k
aWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA3ZmJkMzQxYjk4OGRjMjVkNmQxZjExZDhlYTM2
N2EzNjlkMGRkYjQ1Li41OTBmNjFjYzU5NzdkNjZmZTRhOTVhM2M4ZTBjZTFkMDU0ZGIxNjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCkBAIC0xMjIsMTUgKzEyMiw2IEBAIEltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNv
ZGVyKCkKICAgICBtX25hdGl2ZURlY29kZXIgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJ
bmNyZW1lbnRhbChudWxscHRyKSk7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2ZWwg
bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2Ft
cGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCi0g
ICAgZmxvYXQgY2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBzdGQ6Om1pbjxm
bG9hdD4oMSwgc2NhbGUpKTsKLSAgICBTdWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9IGNlaWxmKGxv
ZzJmKDEgLyBjbGFtcGVkU2NhbGUpKTsKLSAgICBBU1NFUlQocmVzdWx0ID49MCAmJiByZXN1bHQg
PD0gMyk7Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNhbXBsaW5nTGV2
ZWwpOwotfQotCiBzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVBy
b3BlcnRpZXMoKQogewogICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcgbWFsbG9jL2NhbGxvYyBj
YWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCkBAIC0zODYsMjEgKzM3NywyMSBAQCB2b2lk
IEltYWdlRGVjb2Rlcjo6c2V0RGF0YShDRkRhdGFSZWYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBk
YXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29k
ZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhl
IFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hh
cmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmls
aXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1
cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVk
QnVmZmVyLgotICAgIHNldERhdGEoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFS
ZWNlaXZlZCk7CisgICAgc2V0RGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRh
UmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFw
IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS0+cmVmKCk7CisgICAgZGF0YS5yZWYoKTsKICAg
ICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0
aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBu
b3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFu
dGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZv
ciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJE
aXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZURpcmVjdChkYXRhLCBkYXRhLT5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwor
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNh
bGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVE
ZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oCmluZGV4IDhjNmE5ZTIyNzgwNDNmYTVhYzcyMTI2MTdmMWUwOTMxNDcxZmQ0
YjQuLjNlYTUyYTEyZTY5NGRlN2ViMTgzNzA3NzczNWI1Njc0OTQ2Mjk5NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApA
QCAtMjksMTkgKzI5LDIxIEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKIAordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJj
ZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFn
ZURlY29kZXIoKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rl
cj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3Jl
YXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VT
b3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VEZWNvZGVyPigpOwogICAgIH0KICAgICAKICAgICBzdGF0
aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwotICAgIHN0YXRp
YyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwg
U3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgCiAgICAgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUo
KSBjb25zdDsKQEAgLTY0LDcgKzY2LDkgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBzZXREYXRhKENGRGF0YVJlZiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICAKKyAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQogICAgIAogcHJv
dGVjdGVkOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0OWQ0ZTE1YzlmZmU3OTBjMmU2ODUyNDZmZThmODVlYjU2MTYw
ODNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1h
Z2VTb3VyY2VDRy5oIgotCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpbmNsdWRlICJJ
bWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBo
YU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotewotICAg
IC8vIEZJWE1FOiBBbHBoYU9wdGlvbiBhbmQgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gYXJl
IGlnbm9yZWQuCi19Ci0KLUltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQotewotICAgIGNsZWFy
KHRydWUpOwotfQotCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGxGcmFt
ZXMsIHNpemVfdCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsK
LSAgICAvLyBSZWNlbnQgdmVyc2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVj
b2RlZCBpbWFnZSBmcmFtZXMgaWYgdGhlIGNsaWVudAotICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxv
bmdlciBob2xkcyByZWZlcmVuY2VzIHRvIHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJv
dyBhd2F5Ci0gICAgLy8gdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQg
dG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KLSAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGVjb2RlciA9IG51bGxwdHI7Ci0gICAgCi0gICAg
aWYgKGRhdGEpCi0gICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLSAg
ICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVy
KikKLXsKLSAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZGVj
b2RlciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OnNl
dERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICBp
ZiAoIWRhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBlbnN1cmVEZWNvZGVySXNDcmVh
dGVkKGRhdGEpOwotICAgIAotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBtX2Rl
Y29kZXItPnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLQotU3RyaW5nIEltYWdl
U291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxp
emVkKCkgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKLX0KLSAg
ICAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1w
bGluZ0xldmVsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KDApKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IC8vIFZhbHVlcyBjaG9zZW4gdG8gYmUgYXBwcm9wcmlhdGUgZm9yIGlPUy4KLSAgICBjb25zdCBp
bnQgY01heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsK
LSAgICBjb25zdCBTdWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwotCi0g
ICAgU3Vic2FtcGxpbmdMZXZlbCBjdXJyZW50TGV2ZWwgPSAwOwotICAgIGZvciAoIDsgY3VycmVu
dExldmVsIDw9IG1heFN1YnNhbXBsaW5nTGV2ZWw7ICsrY3VycmVudExldmVsKSB7Ci0gICAgICAg
IEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleCgwLCBjdXJyZW50TGV2ZWwpOwot
ICAgICAgICBpZiAoZnJhbWVTaXplLmFyZWEoKSA8IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vi
c2FtcGxpbmcpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3VycmVu
dExldmVsOwotfQotICAgIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1
YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4g
Y2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKTsKLSNlbmRpZgotICAgIHJldHVybiAw
OwotfQotCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9y
U2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c3Vi
c2FtcGxpbmdMZXZlbEZvclNjYWxlKHNjYWxlLCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpKTsK
LX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKLXsKLSAgICByZXR1cm4g
aW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwotfQotCi1ib29s
IEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dT
dWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KGluZGV4KTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJj
ZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKSBjb25zdAotewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAKLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24gPSBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAg
Ci0gICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRy
YW5zcG9zZWRTaXplKCkgOiBzaXplOwotfQotCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNl
OjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBp
bml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogSW1h
Z2VPcmllbnRhdGlvbigpOwotfQotCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLX0KLSAgICAKLUludFNpemUg
SW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKLX0K
LQotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QK
LXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmhvdFNwb3QoaG90U3Bv
dCk7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRU
b0RldGVybWluZVByb3BlcnRpZXMoKTsKLX0KLSAgICAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRp
dGlvbkNvdW50KCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVw
ZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTG9vcE9uY2U7Ci19Ci0KLXNpemVfdCBJbWFnZVNv
dXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBt
X2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7Ci19Ci0KLVJldGFpblB0cjxDR0ltYWdlUmVmPiBJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkg
PyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKSA6IG51bGxwdHI7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVj
b2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Ci19Ci0KLWZsb2F0IEltYWdlU291
cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuIGlu
aXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KSA6IDA7
Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRl
eCkKLXsKLSAgICByZXR1cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0Fs
cGhhQXRJbmRleChpbmRleCk7Ci19Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkg
Y29uc3QKLXsKLSAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIHJldHVybiBmcmFtZVNpemUuYXJlYSgpICogNDsKLX0K
LSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1fYWxsb3dTdWJzYW1wbGluZykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbGxv
dy1zdWJzYW1wbGluZyIsIG1fYWxsb3dTdWJzYW1wbGluZyk7Ci0gICAgCi0gICAgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uQXRJbmRleCgwKTsKLSAgICBpZiAob3Jp
ZW50YXRpb24gIT0gT3JpZ2luVG9wTGVmdCkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvcmll
bnRhdGlvbiIsIG9yaWVudGF0aW9uKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggNmZlMjkwZTIyNjE4ZmJkNzZjNzVjODQ0OTI0NDcyZTMxOTdmZmY4Ny4u
Y2YxMTc1ZDQ5MzY4ZDQ5NjE5NmMwNDcwMjM5NTAzYjZiMzc5ODgyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3Bw
CkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9i
aWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNzAsMTMgKzI3MSwxNiBAQCB0
ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8
aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJh
bWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZy
YW1lQ29tcGxldGUpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmhh
c0FscGhhKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpG
cmFtZUNvbXBsZXRlOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiAhZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleChpbmRleCkgfHwgbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5oYXNBbHBoYSgpOwogfQog
CiB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkg
Y29uc3QKQEAgLTI4Nyw2ICsyOTEsNDIgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5
dGVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZS5hcmVhKCkg
KiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKIH0KIAorZmxvYXQgSW1hZ2VEZWNvZGVy
OjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1f
ZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBNYW55IGFubm95aW5nIGFk
cyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkg
YXMgcG9zc2libGUuCisgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNl
IGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgIC8v
IGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5k
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9u
LgorICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5k
dXJhdGlvbigpIC8gMTAwMC4wZjsKKyAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAgICAg
IHJldHVybiAwLjEwMGY7CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitOYXRpdmVJbWFnZVB0
ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUo
KSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBaZXJvLWhlaWdo
dCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFu
CisgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCisgICAgaWYgKHNpemUo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKG1fZnJhbWVC
dWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50
cyBhcyBhIG5hdGl2ZSBpbWFnZS4gRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCisgICAgLy8gaXMg
YWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBp
dHMgcmVmY291bnQuCisgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uYXNOZXdO
YXRpdmVJbWFnZSgpOworfQorCiB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlm
TmVjZXNzYXJ5KCkKIHsKICAgICBtX3NjYWxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCA1MzQ3
YTQ3YjcyM2NkNWYwM2I2MmQzYjM1MmNmOTQ1MTQ3ZGEwZWFhLi4yYzAwZDEyZTQwMjE3YThhZjEx
NTU5NzRjMzJjOTU5MDc2OThlNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKQEAgLTIzNSwxNSArMjM1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJbWFnZURlY29kZXIo
SW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgICAg
ICAgICA6IG1fc2NhbGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEo
YWxwaGFPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKKyAgICAgICAg
ICAgIDogbV9wcmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEltYWdlU291cmNlOjpBbHBo
YVByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlSWdub3JlZCkKLSAgICAgICAgICAgICwgbV9zaXplQXZhaWxhYmxlKGZhbHNlKQot
ICAgICAgICAgICAgLCBtX21heE51bVBpeGVscygtMSkKLSAgICAgICAgICAgICwgbV9pc0FsbERh
dGFSZWNlaXZlZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9mYWlsZWQoZmFsc2UpIHsgfQorICAg
ICAgICB7CisgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSB7IH0K
KyAgICAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkKKyAgICAgICAgeworICAgICAgICB9CiAK
ICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBkZWNvZGVyIG9mIHRoZSBhcHByb3By
aWF0ZSB0eXBlLiAgUmV0dXJucyAwIGlmCiAgICAgICAgIC8vIHdlIGNhbid0IHNuaWZmIGEgc3Vw
cG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKQEAgLTI1NCwxMSAr
MjUzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2ZhaWxl
ZCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhOwor
ICAgICAgICAgICAgbV9kYXRhID0gJmRhdGE7CiAgICAgICAgICAgICBtX2lzQWxsRGF0YVJlY2Vp
dmVkID0gYWxsRGF0YVJlY2VpdmVkOwogICAgICAgICB9CiAKQEAgLTI4Miw3ICsyODEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHNpemVzLiAgVGhpcyBkb2VzIE5PVCBkaWZm
ZXIgZnJvbSBzaXplKCkgZm9yIEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwogICAgICAgICAvLyBj
b21wb3NpdGVzIGFueSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZyYW1lcyB0byBj
cmVhdGUgZnVsbC0KICAgICAgICAgLy8gc2l6ZSBmcmFtZXMuCi0gICAgICAgIHZpcnR1YWwgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCkgY29uc3QKKyAgICAgICAgdmlydHVhbCBJbnRT
aXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZSgpOwogICAgICAgICB9CkBAIC0zMTAsMTYg
KzMwOSwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2Rlci1v
d25lZCBwb2ludGVyLgogICAgICAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJ
bmRleChzaXplX3QpID0gMDsKIAorICAgICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
c2l6ZV90KSBjb25zdDsKKwogICAgICAgICAvLyBNYWtlIHRoZSBiZXN0IGVmZm9ydCBndWVzcyB0
byBjaGVjayBpZiB0aGUgcmVxdWVzdGVkIGZyYW1lIGhhcyBhbHBoYSBjaGFubmVsLgotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAg
ICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgICAgIC8v
IE51bWJlciBvZiBieXRlcyBpbiB0aGUgZGVjb2RlZCBmcmFtZSByZXF1ZXN0ZWQuIFJldHVybiAw
IGlmIG5vdCB5ZXQgZGVjb2RlZC4KLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QpIGNvbnN0OworICAgICAgICAKKyAgICAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAK
ICAgICAgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsg
bV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBpZ25v
cmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlOyB9CiAKLSAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICAgICAgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9u
OyB9CisgICAgICAgIAorICAgICAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRl
eChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgZW51bSB7IGljY0Nv
bG9yUHJvZmlsZUhlYWRlckxlbmd0aCA9IDEyOCB9OwogCkBAIC0zMzAsNiArMzM3LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0
YVsxNl0sICJSR0IgIiwgNCk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgc2l6ZV90IGJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAg
CisgICAgICAgIHN0YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShmbG9hdCwgU3Vic2FtcGxpbmdMZXZlbCkgeyByZXR1cm4gMDsgfQorCiAgICAgICAgIHN0YXRp
YyBib29sIGlucHV0RGV2aWNlQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1
bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKHByb2ZpbGVMZW5ndGgsIHByb2ZpbGVMZW5ndGggPj0gaWNjQ29sb3JQcm9maWxlSGVhZGVy
TGVuZ3RoKTsKQEAgLTM1NCwxMCArMzY1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBjb21wb3NpdGluZykuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KSB7IH0KIAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJ
TkcpCi0gICAgICAgIHZvaWQgc2V0TWF4TnVtUGl4ZWxzKGludCBtKSB7IG1fbWF4TnVtUGl4ZWxz
ID0gbTsgfQotI2VuZGlmCi0KICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBo
b3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBhcmd1bWVudAogICAgICAgICAvLyBhbmQgcmV0dXJu
cyB0cnVlLiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KICAgICAgICAgdmlydHVhbCBib29sIGhv
dFNwb3QoSW50UG9pbnQmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzc0LDcgKzM4MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVmVjdG9yPEltYWdlRnJhbWUsIDE+IG1f
ZnJhbWVCdWZmZXJDYWNoZTsKICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclBy
b2ZpbGUgYW55IG1vcmUsIGZvciBhbnkgcG9ydD8KICAgICAgICAgQ29sb3JQcm9maWxlIG1fY29s
b3JQcm9maWxlOwotICAgICAgICBib29sIG1fc2NhbGVkOworICAgICAgICBib29sIG1fc2NhbGVk
IHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwogICAgICAg
ICBWZWN0b3I8aW50PiBtX3NjYWxlZFJvd3M7CiAgICAgICAgIGJvb2wgbV9wcmVtdWx0aXBseUFs
cGhhOwpAQCAtMzkyLDEwICszOTksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9
CiAKICAgICAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIGJvb2wgbV9zaXplQXZhaWxhYmxl
OwotICAgICAgICBpbnQgbV9tYXhOdW1QaXhlbHM7Ci0gICAgICAgIGJvb2wgbV9pc0FsbERhdGFS
ZWNlaXZlZDsKLSAgICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAgICAgICAgYm9vbCBtX3NpemVBdmFp
bGFibGUgeyBmYWxzZSB9OworI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcp
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbV9tYXhOdW1QaXhlbHMgeyAxMDI0ICogMTAyNCB9
OworI2Vsc2UKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IC0xIH07
CisjZW5kaWYKKyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkIHsgZmFsc2UgfTsKKyAg
ICAgICAgYm9vbCBtX2ZhaWxlZCB7IGZhbHNlIH07CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAzZDc2YmMyYTk3NGRlYWY3
MzE4ZDU3MGIxZWVjMzE2MjYwOTk4MDY1Li5jYWYzNWM5N2YxN2VkZDM0YmM5ZGY4OWFiMDllODcw
MGFlZTZjN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsMTQgKzQ3LDE0
IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgQk1QSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBJbWFnZURlY29k
ZXI6OnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBpZiAobV9yZWFkZXIpCi0g
ICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKGRhdGEpOworICAgICAgICBtX3JlYWRlci0+c2V0RGF0
YSgmZGF0YSk7CiB9CiAKIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IDFjODgyZTEzOTk1MmU0NzQ4MzJiY2JjMjIwNTBh
NjBmYjRmZmJiOTcuLmIyYzQ3ODk1NjE5YmVjYWYyNWQxMGEzMGMyZTgzYWUzNTU4ODc2YzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJibXAiOyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAg
IHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCk7CiAg
ICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gIEJlIGNh
cmVmdWwgdG8gYXZvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggY2Q1NmU2N2Vi
OTE4YjE2OTNjNGVjY2Y3NDBhZjgwYzg1OTM2YTc5OC4uNmVmMGJjNDk5MzNmNWM0ZjJlYzlkYmU3
MTdlZmRkODEwNmJiZjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTQyLDE0
ICs0MiwxNCBAQCBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKQogewogfQogCi12
b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVj
ZWl2ZWQpOwogICAgIGlmIChtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXItPnNldERhdGEoZGF0
YSk7CisgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKCZkYXRhKTsKIH0KIAogYm9vbCBHSUZJbWFn
ZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
NDA2MTA4OTUzOTVkOWIxMmNjNjlkMTkxY2MzMDUyMjA5Y2MwNjg3Mi4uYzRjNDlhYzM0ZThjODJj
YTI5MDM4YWNlZGMwMzlmNTkwZjM4MWJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAt
NDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNv
ZGVyCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyBy
ZXR1cm4gImdpZiI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRT
aXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwogICAgICAgICB2aXJ0dWFsIHNp
emVfdCBmcmFtZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IGZiODc4ZWQwOGUy
OGQ0MDJlZWYzNzBkY2EzOTJjZjlmMjZlZDA0NjkuLmY3YjQzNGViN2U1ZTgzYzI5ODJkNmY1Zjc2
ODA3ODIwNjYwY2Y2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yNDYsNyArMjQ2LDcg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQorICAgIHZvaWQg
c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQogICAgIC8vIEZJ
WE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNv
cmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA1NmFjOTIxY2QwODQ2ODIzYjgxMTE4ZWE2
ZjNhZGYyMTFkYTdhMDg1Li43OWNlYTkwOGRjZWI2M2VjNWUxZjY1ZTNlOTc2ZjU1NWM4YWM0MWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBJQ09JbWFn
ZURlY29kZXI6On5JQ09JbWFnZURlY29kZXIoKQogewogfQogCi12b2lkIElDT0ltYWdlRGVjb2Rl
cjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9p
ZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgIGZvciAoQk1QUmVhZGVyczo6aXRlcmF0
b3IgaShtX2JtcFJlYWRlcnMuYmVnaW4oKSk7IGkgIT0gbV9ibXBSZWFkZXJzLmVuZCgpOyArK2kp
IHsKICAgICAgICAgaWYgKCppKQotICAgICAgICAgICAgKCppKS0+c2V0RGF0YShkYXRhKTsKKyAg
ICAgICAgICAgICgqaSktPnNldERhdGEoJmRhdGEpOwogICAgIH0KICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fcG5nRGVjb2RlcnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHNldERhdGFGb3JQ
TkdEZWNvZGVyQXRJbmRleChpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAxNDk0Nzk3
YTliZjMxYzNlNjRiODFkYjZjZTMzM2Q5MTI3ZmI4OWQ4Li4wMTA0ZDQ0MmE0YmUyZDQ0OTRiZWJk
ZmRlZWM3N2ZlOTk0YzFmMmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00NSw3ICs0
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBJbWFnZURlY29kZXIKICAg
ICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiAi
aWNvIjsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICAgICAgdmlydHVhbCBib29sIGlzU2l6
ZUF2YWlsYWJsZSgpOwogICAgICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDI5NmI4MzQ3OTVlOWI2OGYyZDE1NzM0MzcxNzcwODMyNzMxYzBmODUuLmM3YjQ1MmEzNGNi
ZjM3MDgyNWFkMjBhNTRjZTQ0NWUzODY1ZDFlZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAx
Ni0wNC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisg
ICAgICAgIE1lcmdlIENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVt
ZW50YXRpb24gaW4gb25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbDog
QWRkZWQuCisKKzIwMTYtMDQtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLGNvbT4KKworICAgICAgICBNZXJnZSBDRyBJbWFnZVNvdXJjZSBhbmQgbm9uIENHIEltYWdl
U291cmNlIGltcGxlbWVudGF0aW9uIGluIG9uZSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0NTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5n
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2ltYWdlLXN1YnNh
bXBsaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA0LTA5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgZnVuY3Rpb25hbCA6aG9zdCgpIHBzZXVk
byBjbGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2Ft
cGxpbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNh
bXBsaW5nLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAzMTNiZWI4ZGI3OTQxOTVhNmJlYzIy
ZGYwYjgxMWM3YjIzMDkyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2ltYWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgZGl2IHsK
KyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPGhlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cisg
ICAgZnVuY3Rpb24gY3JlYXRlRGl2KGNvbG9yKSB7CisgICAgICAgIHZhciBkaXZFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdkVsZW1lbnQuc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZGl2RWxlbWVudCk7CisgICAgfQorCisgICAgY3JlYXRlRGl2KCJyZWQiKTsKKyAgICBjcmVh
dGVEaXYoImdyZWVuIik7CisgICAgY3JlYXRlRGl2KCJibHVlIik7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1
YnNhbXBsaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGlu
Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIyOGFlM2JlOWRmNTMwMWRiMmExOGQ4MjkzNGU3M2JhNWQ5ODk0
N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJz
YW1wbGluZy5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8
aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGRpdiB7CisgICAgICAgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgbWFyZ2luOiAxMHB4
OworICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICB9CisgICAgICAg
IGltZyB7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzxoZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldEltYWdlU3Vic2FtcGxpbmdFbmFibGVkKHRydWUpOworCisgICAgZnVuY3Rpb24gY3Jl
YXRlSW1hZ2UoY29sb3IpIHsKKyAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOworICAgICAgICBjYW52YXMud2lkdGggPSAxMDI0ICogMzsKKyAgICAg
ICAgY2FudmFzLmhlaWdodCA9IDEwMjQgKiAzOworICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdl
dENvbnRleHQoIjJkIik7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb2xvcjsKKyAgICAgICAg
Y3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICAg
ICAgdmFyIGltZ0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAg
ICAgaW1nRWxlbWVudC5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKKworICAg
ICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICBkaXZFbGVtZW50LmFwcGVuZENoaWxkKGltZ0VsZW1lbnQpOworICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGRpdkVsZW1lbnQpOworICAgIH0KKyAgICAKKyAgICBjcmVhdGVJ
bWFnZSgicmVkIik7CisgICAgY3JlYXRlSW1hZ2UoImdyZWVuIik7CisgICAgY3JlYXRlSW1hZ2Uo
ImJsdWUiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276084</attachid>
            <date>2016-04-09 03:59:54 -0700</date>
            <delta_ts>2016-04-09 04:22:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160409035959.patch</filename>
            <type>text/plain</type>
            <size>56591</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU2OTUzMGIwM2QzMzM1
YWY1YjNlYzU0MDQ3OTU3MWY1N2NhMzNmOS4uNTdjMzcxNDYyYTkyNDkzM2ZmYzhlNTJiZDIyNDBj
NTgxOTQxMDcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxNi0wNC0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltYWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4g
QWxsIHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJ
bWFnZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNh
biBoYXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0
IHJpZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0
L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
TWFjLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5k
IGFkZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAg
IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1vdmUgY2xlYXIodHJ1ZSkg
Y2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNs
ZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxscyBJbWFnZURlY29kZXI6
OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hpY2ggd2lsbCBkbyBub3Ro
aW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5z
dXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvCisgICAgICAgIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJbWFnZURlY29kZXI6OnNl
dE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29uc3Qgc3RhdGljIGludCBD
RyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0CisgICAgICAgIGJhc2Vk
IG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAgCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVmZmVyJiB0byB0aGUgdW5k
ZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0dXJucyB0aGUgbWF4aW11
bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBhbiBpbWFnZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNj
YWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1YnNhbXBsaW5nTGV2ZWwg
dGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgZm9y
CisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKTogUmV0dXJu
cyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hpY2ggY2FuIGRldGVybWlu
ZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisgICAgICAgIHplcm8uIEZv
ciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNvcnJlY3RlZCBsYXRlci4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVu
dGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBlcnMgZm9yIHRoZSBJbWFn
ZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGlz
IHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisgICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6
ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldEFsbG93U3Vic2FtcGxpbmcp
OiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6c2V0QWxsb3dTdWJzYW1wbGluZygpLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptYXhQaXhlbHNQZXJEZWNvZGVkSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVs
c1BlckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIFNldHRpbmcgbWF4UGl4ZWxzUGVy
RGVjb2RlZEltYWdlIHdhcyBtb3ZlZCB0byB0aGUgbm9uIENHIEltYWdlRGVjb2Rlci4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIFNoYXJlZEJ1
ZmZlciogdG8gU2hhcmVkQnVmZmVyJi4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOiBEZWxldGVkLgorICAgICAgICBUaGUgY29kZSB3
YXMgbW92ZWQgdG8gSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSgpLgorICAg
ICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOiBNYWtlIHRoZSBwcm90b3R5
cGUgb2YgdGhpcyBmdW5jdGlvbgorICAgICAgICBzdWl0YWJsZSBmb3IgQ0cgYW5kIG5vbiBDRyBj
YXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKTogRW1wdHkgZnVuY3Rpb25zIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgIAorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOiBBIG1ldyBm
dW5jdGlvbiB0byByZXR1cm4KKyAgICAgICAgd2hldGhlciB0aGUgZnJhbWUgZGVjb2RpbmcgaXMg
Y29tcGxldGUgb3Igbm90LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOiBTaW1wbGlmeSB0aGUgbG9naWMuCisgICAgICAgIAor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6IFRo
ZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KTogVGhlIGNvZGUgd2FzIG1v
dmVkIGZyb20KKyAgICAgICAgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KCkg
aW4gSW1hZ2VTb3VyY2UuY3BwLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
SW1hZ2VEZWNvZGVyKTogSW5pdGlhbGl6ZSB0aGUgbWVtYmVycyBpbiBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6IEZpeCB0aGUgYnJhY2VzIHN0
eWxlLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIHRo
ZSB0eXBlIG9mIHRoZSBhcmd1bWVudCBmcm9tCisgICAgICAgIFNoYXJlZEJ1ZmZlciogdG8gU2hh
cmVkQnVmZmVyJi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJ
bmRleCk6IEFkZCB0aGUgYXJndW1lbnQgU3Vic2FtcGxpbmdMZXZlbAorICAgICAgICBzbyBpdCBj
YW4gaGF2ZSB0aGUgc2FtZSBwcm90b3R5cGUgYXMgQ0cuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6IFJlbmFtZSBpdCB0byB0aGUgc2FtZSBvZiBD
Ry4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmFsbG93U3Vic2Ft
cGxpbmdPZkZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6IEFkZCB0aGVzZSBmdW5jdGlvbnMK
KyAgICAgICAgYW5kIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMgc28gd2UgZG8gbm90IGhhdmUg
dG8gYWRkIGRpcmVjdGl2ZSBjb21waWxlZAorICAgICAgICBub24gQ0cgYmxvY2tzIGluIEltYWdl
U291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Om9y
aWVudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
TWF4TnVtUGl4ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
TVBJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAg
IFVzZSByZWZlcmVuY2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgcG9pbnRlciBTaGFyZWRCdWZm
ZXIuCisKIDIwMTYtMDQtMDkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBmdW5jdGlvbmFsIDpob3N0KCkgcHNldWRvIGNsYXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGY1YzY2MzVjYzExZDNmY2YzNGZiNmZkMzM5NTJhNTcwYWY5NjhkM2Mu
LmRiMTg2NzI1YjkzMDY4M2RlY2Y4ZWE2NTlmZWM0YmI3Mzc0M2IzMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0yMjEzLDYgKzIyMTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bnRQb2ludC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFr
ZQppbmRleCBjNjcyY2M3MDdmYTg3ODViYTUyNzQ0MmU5MDRiMWNmYWRiMjUxNWFjLi4wOWM4MDk0
ZTc3YzRiZjMyYWNmNDdhYTkzZTlkYmFlOTk2Mjk3ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QXBwbGVXaW4uY21ha2UKQEAgLTcyLDcgKzcyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGI3MmYy
ZTE1YzhiNTJlYWUxYTNlNmQ2YTRlYTZhZDEyYjEyYTI4ZTguLmFlYTM1NzEwNTkwOWI3YzdlZTIw
NTUyNzU5ZWFjOTlmNDU2ZDVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC00MDYs
NyArNDA2LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
LSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2NWY2Mjg2YjYzNDlkMmY5NDc1OWUyYTNiNGUwMzcwMmUyOTdiMDBjLi4yNTg5YzM1MWVh
NTk3NTk5ZWU4YTA3MDExZTYwZmIzYTc1YTIyM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTg2LDcgKzQ5ODYsNiBAQAog
CQlCMjc1MzU1QTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkMwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NUIwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi87
IH07CiAJCUIyNzUzNTVFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMwMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbWFnZUNHLmNwcCAqLzsgfTsKLQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8q
IEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICov
OyB9OwogCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMjBCMDUzODE0
MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYxMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI3NTM1MzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi87
IH07CiAJCUIyNzUzNTYyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzQwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi87IH07CkBAIC0xMjg3Nyw3ICsxMjg3Niw2IEBACiAJ
CUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRSZWN0Q0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjc1MzUyRDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0U2l6ZUNHLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRG
IC8qIEltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElt
YWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjc1MzUzMTBCMDUzODE0
MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRQb2ludENHLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UmVjdENHLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFNpemVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzg1LDcgKzIxNzgz
LDYgQEAKIAkJCQlCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8sCiAJ
CQkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLywKIAkJ
CQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAqLywKLQkJCQlC
Mjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi8sCiAJCQkJNEIz
NDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5
MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUz
MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0zMDAwNCw3ICszMDAw
MSw2IEBACiAJCQkJMkQ1QTU5MkYxNTI1MjUyMzAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUxQTJGNDExN0Q3RDVERTAwNzI1MTdBIC8qIEltYWdl
UXVhbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQzcyNUUxOTc0ODc0
QjAwQUVERDBDIC8qIEltYWdlU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUzNTVG
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFOTYxQzU0MThBRDMzODUwMEQwN0RDNSAvKiBJbmJh
bmREYXRhVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDBkMTAwOTYxZmYyNzYxNTM2
OTk1MGZjYmJmZTFlYzVlYzgzMTg0ZmYuLmM4YWE5NTAzMmYzNjJiZmQyZmMxODY3N2RhYmZjMzY4
YmRiODQ3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MTAsIDIwMTEsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEu
Y28udWs+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYwpAQCAt
MjksMTkgKzI5LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2UuaCIKIAotI2lmICFVU0UoQ0cpCi0KKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVyQ0cuaCIKKyNlbHNlCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKIAogI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NB
TVBMSU5HKQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdl
ID0gMTAyNCAqIDEwMjQ7Ci0jZW5kaWYKLQogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdl
U291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9hbHBo
YU9wdGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24o
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCkBAIC01MCwxNCArNDcsMjEgQEAgSW1hZ2VTb3Vy
Y2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1h
Z2VTb3VyY2U6OkdhbW0KIAogSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiB7Ci0gICAgY2xl
YXIodHJ1ZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwg
c2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
IGNsZWFyQmVmb3JlRnJhbWUpCit7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVG
cmFtZSk7Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1l
cywgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7Ci0gICAgaWYgKCFkZXN0cm95QWxsKSB7Ci0gICAgICAgIGlmIChtX2Rl
Y29kZXIpCi0gICAgICAgICAgICBtX2RlY29kZXItPmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVh
ckJlZm9yZUZyYW1lKTsKKyAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheSB0aGUg
ZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZAorICAgIC8vIHRvIGRlc3Ryb3kg
YWxsIG9mIHRoZSBmcmFtZXMuCisgICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKSB7CisgICAgICAg
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNjcsMjAgKzcxLDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJv
b2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlcioKICAg
ICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlU291
cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1h
Z2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIGlmIChpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
Ly8gTWFrZSB0aGUgZGVjb2RlciBieSBzbmlmZmluZyB0aGUgYnl0ZXMuCi0gICAgLy8gVGhpcyBt
ZXRob2Qgd2lsbCBleGFtaW5lIHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBv
ZiB0aGUgYXBwcm9wcmlhdGUgZGVjb2RlciBwbHVnaW4uCi0gICAgLy8gSWYgaW5zdWZmaWNpZW50
IGJ5dGVzIGFyZSBhdmFpbGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNv
ZGVyIHBsdWdpbiB3aWxsIGJlCi0gICAgLy8gbWFkZS4KLSAgICBtX2RlY29kZXIgPSBJbWFnZURl
Y29kZXI6OmNyZWF0ZSgqZGF0YSwgbV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBp
ZiAobV9kZWNvZGVyICYmIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKQotICAgICAgICBtX2Rl
Y29kZXItPnNldE1heE51bVBpeGVscyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7Ci0jZW5k
aWYKKyAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBtX2FscGhhT3B0
aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJj
ZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAt
ODgsNyArODQsNyBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChkYXRhKTsKKyAgICBlbnN1cmVEZWNv
ZGVySXNDcmVhdGVkKCpkYXRhKTsKICAgICAKICAgICBpZiAoIWluaXRpYWxpemVkKCkpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05NiwyMiArOTIsNDYgQEAgdm9pZCBJbWFn
ZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIH0KIAogICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0
YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICBtX2RlY29kZXItPnNldERhdGEoKmRh
dGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9Ci0KLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdAorICAgIAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2Fs
Y3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAogewotICAgIHJldHVybiBtX2Rl
Y29kZXIgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKKyAgICBp
ZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4
KDApKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhpcyB2YWx1ZSB3
YXMgY2hvc2VuIHRvIGJlIGFwcHJvcHJpYXRlIGZvciBpT1Mgc2luY2UgdGhlIGltYWdlCisgICAg
Ly8gc3Vic2FtcGxpbmcgaXMgb25seSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gaU9TLiBDaG9vc2Ug
YSBkaWZmZXJlbnQgdmFsdWUKKyAgICAvLyBpZiBpbWFnZSBzdWJzYW1wbGluZyBpcyBlbmFibGVk
IG9uIG90aGVyIHBsYXRmb3JtLgorICAgIGNvbnN0IGludCBjTWF4aW11bUltYWdlQXJlYUJlZm9y
ZVN1YnNhbXBsaW5nID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2
ZWwgbWF4U3Vic2FtcGxpbmdMZXZlbCA9IDM7CisgICAgCisgICAgZm9yIChTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSAwOyBzdWJzYW1wbGluZ0xldmVsIDwgbWF4U3Vic2FtcGxp
bmdMZXZlbDsgKytzdWJzYW1wbGluZ0xldmVsKSB7CisgICAgICAgIEludFNpemUgZnJhbWVTaXpl
ID0gZnJhbWVTaXplQXRJbmRleCgwLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAgICAgaWYgKGZy
YW1lU2l6ZS5hcmVhKCkgPCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQorICAg
ICAgICAgICAgcmV0dXJuIHN1YnNhbXBsaW5nTGV2ZWw7CisgICAgfQorICAgIAorICAgIHJldHVy
biBtYXhTdWJzYW1wbGluZ0xldmVsOwogfQogCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNl
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0CitTdWJzYW1wbGluZ0xldmVs
IEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKHNjYWxlIDw9IDAgfHwgc2NhbGUgPiAxKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1w
bGluZ0xldmVsID0gY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKTsKKyAgICBpZiAo
IW1heGltdW1TdWJzYW1wbGluZ0xldmVsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRo
ZXJlIGFyZSBmb3VyIHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAxID0gMC41eCwgMiA9IDAu
MjV4LCAzID0gMC4xMjV4LgorICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9n
MmYoMSAvIHNjYWxlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwpOwogfQogCi1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKIH0K
IAogYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKQEAgLTEyOSw5NyArMTQ5LDY5
IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25z
dAogICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKTsKIH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QKK3NpemVfdCBJbWFnZVNvdXJjZTo6ZnJh
bWVDb3VudCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1
cm4geyB9OwotCi0gICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4
KGluZGV4KTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5v
cmllbnRhdGlvbigpOwotICAgIAotICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhB
c0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKKyAgICByZXR1cm4gaW5p
dGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotYm9vbCBJbWFn
ZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK2ludCBJbWFnZVNv
dXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBt
X2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBt
X2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CiB9CiAKLXNpemVf
dCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QK
K1N0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4
dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNv
dW50KCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25D
b3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9k
ZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOwogfQogCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1l
Q291bnQoKSBjb25zdAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZy
YW1lQ291bnQoKSA6IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5m
cmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBw
b3J0cy4gIElmIHdlIGhhdmUgYW4KLSAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3Qg
YmFpbC4KLSAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRl
eChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZy
YW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gIWlu
aXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Cit9
CiAKLSAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4g
IEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQotICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUg
Y29udGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgotICAgIHJl
dHVybiBidWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKTsKK2Jvb2wgSW1hZ2VTb3VyY2U6OmFsbG93
U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5hbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0
SW5kZXgoaW5kZXgpOwogfQogCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KQorSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdElt
YWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAog
ewogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBJbWFn
ZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0g
ICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVt
cHR5KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8vIE1h
bnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxh
c2ggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJl
aGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBz
cGVjaWZ5Ci0gICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxl
bS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1v
cmUgaW5mb3JtYXRpb24uCi0gICAgY29uc3QgZmxvYXQgZHVyYXRpb24gPSBidWZmZXItPmR1cmF0
aW9uKCkgLyAxMDAwLjBmOwotICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAgcmV0
dXJuIDAuMTAwZjsKLSAgICByZXR1cm4gZHVyYXRpb247CisgICAgSW50U2l6ZSBzaXplID0gbV9k
ZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gb3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsK
KyAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdl
T3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJh
bnNwb3NlZFNpemUoKSA6IHNpemU7CiB9CiAKLUltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6
Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0Cit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
Pm9yaWVudGF0aW9uKCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIGZyYW1lU2l6
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpLmFyZWEoKSAqIDQ7CiB9CiAKLWJvb2wg
SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKK2Zsb2F0IElt
YWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0
dXJuICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5k
ZXgpOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9u
QXRJbmRleChpbmRleCkgOiAwOwogfQogCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KHNpemVfdCBpbmRleCkKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9y
aWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFs
aXplZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIg
PSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgcmV0dXJuIGJ1ZmZl
ciAmJiBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRl
eCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CiB9Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CisgICAg
CitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KSA6
IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQg
SW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CkBAIC0yMzMsNSArMjI1LDMg
QEAgdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIH0KICAgICAK
IH0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGNkOWIzOWRhYTFjODVlMTgwZjJjNjQxNWEwZWQyM2Yz
ZTRkNzc3YTQuLjUwNzJhMjFjYTk3ZWQ1NTNkZmZmYzFlMGY5YjkxYzk1ODE3NWVkYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCwgMjAxMCwgMjAxMiwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNSwxMSArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLXR5
cGVkZWYgc3RydWN0IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7Ci10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKQEAgLTgzLDcgKzc4LDcgQEAgcHVibGlj
OgogICAgICAgICBHYW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQKICAgICB9OwogCi0gICAgSW1h
Z2VTb3VyY2UoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24gPSBBbHBoYVByZW11bHRpcGxpZWQsIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2Ft
bWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKTsKKyAgICBJbWFnZVNvdXJjZShBbHBoYU9wdGlvbiA9
IEFscGhhUHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFu
ZENvbG9yUHJvZmlsZUFwcGxpZWQpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCiAgICAgLy8gVGVs
bHMgdGhlIEltYWdlU291cmNlIHRoYXQgdGhlIEltYWdlIG5vIGxvbmdlciBjYXJlcyBhYm91dCBk
ZWNvZGVkIGZyYW1lCkBAIC0xMDcsNzYgKzEwMiw2MSBAQCBwdWJsaWM6CiAgICAgLy8gd2hvIHNl
dCB8ZGVzdHJveUFsbHwgdG8gdHJ1ZSBpZiB0aGV5IHdpc2ggdG8gYmUgYWJsZSB0byBjb250aW51
ZSB1c2luZwogICAgIC8vIHRoZSBJbWFnZVNvdXJjZS4gIFRoaXMgd2F5IGltcGxlbWVudGF0aW9u
cyB3aGljaCBjaG9vc2UgdG8gZGVzdHJveSB0aGVpcgogICAgIC8vIGRlY29kZXJzIGluIHNvbWUg
Y2FzZXMgY2FuIHJlY29uc3RydWN0IHRoZW0gY29ycmVjdGx5LgotICAgIHZvaWQgY2xlYXIoYm9v
bCBkZXN0cm95QWxsLAotICAgICAgICAgICAgICAgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAw
LAotICAgICAgICAgICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gTlVMTCwKLSAgICAgICAgICAg
ICAgIGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXIoYm9vbCBk
ZXN0cm95QWxsLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSA9IDAsIFNoYXJlZEJ1ZmZlciogZGF0
YSA9IG51bGxwdHIsIGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOwogCiAgICAgYm9vbCBp
bml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogCiAgICAgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAg
IFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwogCiAgICAgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dT
dWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbGxv
d1N1YnNhbXBsaW5nKGJvb2wgYWxsb3dTdWJzYW1wbGluZykgeyBtX2FsbG93U3Vic2FtcGxpbmcg
PSBhbGxvd1N1YnNhbXBsaW5nOyB9Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2Ft
cGxpbmdMZXZlbCgpIGNvbnN0OwotCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICBz
dGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwogICAgIAor
ICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUs
IHdpdGhvdXQgc3Vic2FtcGxpbmcuCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgSW50
U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gU2l6
ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwotCi0gICAgYm9v
bCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Q7Ci0KLSAgICBzaXplX3QgYnl0ZXNEZWNvZGVk
VG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3Q7Ci0KLSAgICBpbnQgcmVwZXRpdGlvbkNvdW50
KCk7CiAKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OworICAgIGludCByZXBldGl0aW9u
Q291bnQoKTsKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICBib29s
IGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKIAotICAgIC8vIENhbGxlcnMgc2hvdWxkIG5v
dCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7Ci0g
ICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgTmF0aXZlSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7Ci0K
LSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwotICAgIGJvb2wgZnJhbWVI
YXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVh
bGx5IHVzZWQgYW55IGFscGhhLgogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXpl
X3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVkLgot
ICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8v
IEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KLQorICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFs
cGhhLgorICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29u
c3Q7CisgICAgCisgICAgLy8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCisg
ICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAs
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRp
b24pIGNvbnN0OworICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRo
ZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUgaXMgbm90IHlldAogICAgIC8vIGRlY29kZWQg
dGhlbiByZXR1cm4gMC4KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIG1heFBpeGVsc1BlckRlY29kZWRJbWFn
ZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOyB9Ci0gICAgc3RhdGljIHZv
aWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2lnbmVkIG1heFBpeGVscykgeyBzX21h
eFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsgfQotI2VuZGlmCi0KKyAgICAKKyAg
ICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOworICAgIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50
YXRpb24KKyAgICAKKyAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNh
bGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OworICAgIC8vIHNlZSBjb21tZW50cyBv
biBjbGVhcigpIGFib3ZlLgorICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIAogcHJpdmF0ZToKLSAgICB2
b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KTsKKyAgICB2b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBjYWxjdWxhdGVN
YXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0OwogICAgIHZvaWQgZHVtcChUZXh0U3RyZWFt
JikgY29uc3Q7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gbV9kZWNv
ZGVyOwotICAgIAorCisgICAgLy8gVGhlIGRlZmF1bHQgdmFsdWUgb2YgbV9hbGxvd1N1YnNhbXBs
aW5nIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBkZWZhdWx0SW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQg
aW4gU2V0dGluZ3MuY3BwCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9hbGxvd1N1YnNh
bXBsaW5nIHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyB7IGZh
bHNlIH07CiAjZW5kaWYKIAotI2lmICFVU0UoQ0cpCiAgICAgQWxwaGFPcHRpb24gbV9hbHBoYU9w
dGlvbjsKICAgICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uOwotI2VuZGlmCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElO
RykKLSAgICBzdGF0aWMgdW5zaWduZWQgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7Ci0jZW5k
aWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA3ZmJkMzQxYjk4OGRjMjVkNmQxZjExZDhlYTM2
N2EzNjlkMGRkYjQ1Li41OTBmNjFjYzU5NzdkNjZmZTRhOTVhM2M4ZTBjZTFkMDU0ZGIxNjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCkBAIC0xMjIsMTUgKzEyMiw2IEBAIEltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNv
ZGVyKCkKICAgICBtX25hdGl2ZURlY29kZXIgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJ
bmNyZW1lbnRhbChudWxscHRyKSk7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2ZWwg
bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2Ft
cGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCi0g
ICAgZmxvYXQgY2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBzdGQ6Om1pbjxm
bG9hdD4oMSwgc2NhbGUpKTsKLSAgICBTdWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9IGNlaWxmKGxv
ZzJmKDEgLyBjbGFtcGVkU2NhbGUpKTsKLSAgICBBU1NFUlQocmVzdWx0ID49MCAmJiByZXN1bHQg
PD0gMyk7Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNhbXBsaW5nTGV2
ZWwpOwotfQotCiBzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVBy
b3BlcnRpZXMoKQogewogICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcgbWFsbG9jL2NhbGxvYyBj
YWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCkBAIC0zODYsMjEgKzM3NywyMSBAQCB2b2lk
IEltYWdlRGVjb2Rlcjo6c2V0RGF0YShDRkRhdGFSZWYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBk
YXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29k
ZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhl
IFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hh
cmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmls
aXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1
cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVk
QnVmZmVyLgotICAgIHNldERhdGEoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFS
ZWNlaXZlZCk7CisgICAgc2V0RGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRh
UmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFw
IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS0+cmVmKCk7CisgICAgZGF0YS5yZWYoKTsKICAg
ICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0
aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBu
b3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFu
dGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZv
ciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJE
aXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZURpcmVjdChkYXRhLCBkYXRhLT5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwor
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNh
bGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVE
ZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oCmluZGV4IDhjNmE5ZTIyNzgwNDNmYTVhYzcyMTI2MTdmMWUwOTMxNDcxZmQ0
YjQuLjNlYTUyYTEyZTY5NGRlN2ViMTgzNzA3NzczNWI1Njc0OTQ2Mjk5NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApA
QCAtMjksMTkgKzI5LDIxIEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKIAordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJj
ZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFn
ZURlY29kZXIoKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rl
cj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3Jl
YXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VT
b3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VEZWNvZGVyPigpOwogICAgIH0KICAgICAKICAgICBzdGF0
aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwotICAgIHN0YXRp
YyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwg
U3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgCiAgICAgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUo
KSBjb25zdDsKQEAgLTY0LDcgKzY2LDkgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBzZXREYXRhKENGRGF0YVJlZiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICAKKyAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQogICAgIAogcHJv
dGVjdGVkOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0OWQ0ZTE1YzlmZmU3OTBjMmU2ODUyNDZmZThmODVlYjU2MTYw
ODNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1h
Z2VTb3VyY2VDRy5oIgotCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpbmNsdWRlICJJ
bWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBo
YU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotewotICAg
IC8vIEZJWE1FOiBBbHBoYU9wdGlvbiBhbmQgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gYXJl
IGlnbm9yZWQuCi19Ci0KLUltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQotewotICAgIGNsZWFy
KHRydWUpOwotfQotCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGxGcmFt
ZXMsIHNpemVfdCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsK
LSAgICAvLyBSZWNlbnQgdmVyc2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVj
b2RlZCBpbWFnZSBmcmFtZXMgaWYgdGhlIGNsaWVudAotICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxv
bmdlciBob2xkcyByZWZlcmVuY2VzIHRvIHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJv
dyBhd2F5Ci0gICAgLy8gdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQg
dG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KLSAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGVjb2RlciA9IG51bGxwdHI7Ci0gICAgCi0gICAg
aWYgKGRhdGEpCi0gICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLSAg
ICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVy
KikKLXsKLSAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZGVj
b2RlciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OnNl
dERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICBp
ZiAoIWRhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBlbnN1cmVEZWNvZGVySXNDcmVh
dGVkKGRhdGEpOwotICAgIAotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBtX2Rl
Y29kZXItPnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLQotU3RyaW5nIEltYWdl
U291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxp
emVkKCkgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKLX0KLSAg
ICAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1w
bGluZ0xldmVsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KDApKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IC8vIFZhbHVlcyBjaG9zZW4gdG8gYmUgYXBwcm9wcmlhdGUgZm9yIGlPUy4KLSAgICBjb25zdCBp
bnQgY01heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsK
LSAgICBjb25zdCBTdWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwotCi0g
ICAgU3Vic2FtcGxpbmdMZXZlbCBjdXJyZW50TGV2ZWwgPSAwOwotICAgIGZvciAoIDsgY3VycmVu
dExldmVsIDw9IG1heFN1YnNhbXBsaW5nTGV2ZWw7ICsrY3VycmVudExldmVsKSB7Ci0gICAgICAg
IEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleCgwLCBjdXJyZW50TGV2ZWwpOwot
ICAgICAgICBpZiAoZnJhbWVTaXplLmFyZWEoKSA8IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vi
c2FtcGxpbmcpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3VycmVu
dExldmVsOwotfQotICAgIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1
YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4g
Y2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKTsKLSNlbmRpZgotICAgIHJldHVybiAw
OwotfQotCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9y
U2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c3Vi
c2FtcGxpbmdMZXZlbEZvclNjYWxlKHNjYWxlLCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpKTsK
LX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKLXsKLSAgICByZXR1cm4g
aW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwotfQotCi1ib29s
IEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dT
dWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KGluZGV4KTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJj
ZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKSBjb25zdAotewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAKLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24gPSBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAg
Ci0gICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRy
YW5zcG9zZWRTaXplKCkgOiBzaXplOwotfQotCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNl
OjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBp
bml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogSW1h
Z2VPcmllbnRhdGlvbigpOwotfQotCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLX0KLSAgICAKLUludFNpemUg
SW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKLX0K
LQotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QK
LXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmhvdFNwb3QoaG90U3Bv
dCk7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRU
b0RldGVybWluZVByb3BlcnRpZXMoKTsKLX0KLSAgICAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRp
dGlvbkNvdW50KCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVw
ZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTG9vcE9uY2U7Ci19Ci0KLXNpemVfdCBJbWFnZVNv
dXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBt
X2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7Ci19Ci0KLVJldGFpblB0cjxDR0ltYWdlUmVmPiBJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkg
PyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKSA6IG51bGxwdHI7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVj
b2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Ci19Ci0KLWZsb2F0IEltYWdlU291
cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuIGlu
aXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KSA6IDA7
Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRl
eCkKLXsKLSAgICByZXR1cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0Fs
cGhhQXRJbmRleChpbmRleCk7Ci19Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkg
Y29uc3QKLXsKLSAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIHJldHVybiBmcmFtZVNpemUuYXJlYSgpICogNDsKLX0K
LSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1fYWxsb3dTdWJzYW1wbGluZykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbGxv
dy1zdWJzYW1wbGluZyIsIG1fYWxsb3dTdWJzYW1wbGluZyk7Ci0gICAgCi0gICAgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uQXRJbmRleCgwKTsKLSAgICBpZiAob3Jp
ZW50YXRpb24gIT0gT3JpZ2luVG9wTGVmdCkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvcmll
bnRhdGlvbiIsIG9yaWVudGF0aW9uKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggNmZlMjkwZTIyNjE4ZmJkNzZjNzVjODQ0OTI0NDcyZTMxOTdmZmY4Ny4u
Y2YxMTc1ZDQ5MzY4ZDQ5NjE5NmMwNDcwMjM5NTAzYjZiMzc5ODgyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3Bw
CkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9i
aWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNzAsMTMgKzI3MSwxNiBAQCB0
ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8
aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJh
bWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZy
YW1lQ29tcGxldGUpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmhh
c0FscGhhKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpG
cmFtZUNvbXBsZXRlOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiAhZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleChpbmRleCkgfHwgbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5oYXNBbHBoYSgpOwogfQog
CiB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkg
Y29uc3QKQEAgLTI4Nyw2ICsyOTEsNDIgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5
dGVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZS5hcmVhKCkg
KiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKIH0KIAorZmxvYXQgSW1hZ2VEZWNvZGVy
OjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1f
ZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBNYW55IGFubm95aW5nIGFk
cyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkg
YXMgcG9zc2libGUuCisgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNl
IGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgIC8v
IGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5k
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9u
LgorICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5k
dXJhdGlvbigpIC8gMTAwMC4wZjsKKyAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAgICAg
IHJldHVybiAwLjEwMGY7CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitOYXRpdmVJbWFnZVB0
ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUo
KSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBaZXJvLWhlaWdo
dCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFu
CisgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCisgICAgaWYgKHNpemUo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKG1fZnJhbWVC
dWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50
cyBhcyBhIG5hdGl2ZSBpbWFnZS4gRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCisgICAgLy8gaXMg
YWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBp
dHMgcmVmY291bnQuCisgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uYXNOZXdO
YXRpdmVJbWFnZSgpOworfQorCiB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlm
TmVjZXNzYXJ5KCkKIHsKICAgICBtX3NjYWxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCA1MzQ3
YTQ3YjcyM2NkNWYwM2I2MmQzYjM1MmNmOTQ1MTQ3ZGEwZWFhLi4yYzAwZDEyZTQwMjE3YThhZjEx
NTU5NzRjMzJjOTU5MDc2OThlNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKQEAgLTIzNSwxNSArMjM1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJbWFnZURlY29kZXIo
SW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgICAg
ICAgICA6IG1fc2NhbGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEo
YWxwaGFPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKKyAgICAgICAg
ICAgIDogbV9wcmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEltYWdlU291cmNlOjpBbHBo
YVByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlSWdub3JlZCkKLSAgICAgICAgICAgICwgbV9zaXplQXZhaWxhYmxlKGZhbHNlKQot
ICAgICAgICAgICAgLCBtX21heE51bVBpeGVscygtMSkKLSAgICAgICAgICAgICwgbV9pc0FsbERh
dGFSZWNlaXZlZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9mYWlsZWQoZmFsc2UpIHsgfQorICAg
ICAgICB7CisgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSB7IH0K
KyAgICAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkKKyAgICAgICAgeworICAgICAgICB9CiAK
ICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBkZWNvZGVyIG9mIHRoZSBhcHByb3By
aWF0ZSB0eXBlLiAgUmV0dXJucyAwIGlmCiAgICAgICAgIC8vIHdlIGNhbid0IHNuaWZmIGEgc3Vw
cG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKQEAgLTI1NCwxMSAr
MjUzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2ZhaWxl
ZCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhOwor
ICAgICAgICAgICAgbV9kYXRhID0gJmRhdGE7CiAgICAgICAgICAgICBtX2lzQWxsRGF0YVJlY2Vp
dmVkID0gYWxsRGF0YVJlY2VpdmVkOwogICAgICAgICB9CiAKQEAgLTI4Miw3ICsyODEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHNpemVzLiAgVGhpcyBkb2VzIE5PVCBkaWZm
ZXIgZnJvbSBzaXplKCkgZm9yIEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwogICAgICAgICAvLyBj
b21wb3NpdGVzIGFueSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZyYW1lcyB0byBj
cmVhdGUgZnVsbC0KICAgICAgICAgLy8gc2l6ZSBmcmFtZXMuCi0gICAgICAgIHZpcnR1YWwgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCkgY29uc3QKKyAgICAgICAgdmlydHVhbCBJbnRT
aXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZSgpOwogICAgICAgICB9CkBAIC0zMTAsMTYg
KzMwOSwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2Rlci1v
d25lZCBwb2ludGVyLgogICAgICAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJ
bmRleChzaXplX3QpID0gMDsKIAorICAgICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
c2l6ZV90KSBjb25zdDsKKwogICAgICAgICAvLyBNYWtlIHRoZSBiZXN0IGVmZm9ydCBndWVzcyB0
byBjaGVjayBpZiB0aGUgcmVxdWVzdGVkIGZyYW1lIGhhcyBhbHBoYSBjaGFubmVsLgotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAg
ICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgICAgIC8v
IE51bWJlciBvZiBieXRlcyBpbiB0aGUgZGVjb2RlZCBmcmFtZSByZXF1ZXN0ZWQuIFJldHVybiAw
IGlmIG5vdCB5ZXQgZGVjb2RlZC4KLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QpIGNvbnN0OworICAgICAgICAKKyAgICAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAK
ICAgICAgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsg
bV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBpZ25v
cmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlOyB9CiAKLSAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICAgICAgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9u
OyB9CisgICAgICAgIAorICAgICAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRl
eChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgZW51bSB7IGljY0Nv
bG9yUHJvZmlsZUhlYWRlckxlbmd0aCA9IDEyOCB9OwogCkBAIC0zMzAsNiArMzM3LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0
YVsxNl0sICJSR0IgIiwgNCk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgc2l6ZV90IGJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAg
CisgICAgICAgIHN0YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShmbG9hdCwgU3Vic2FtcGxpbmdMZXZlbCkgeyByZXR1cm4gMDsgfQorCiAgICAgICAgIHN0YXRp
YyBib29sIGlucHV0RGV2aWNlQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1
bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKHByb2ZpbGVMZW5ndGgsIHByb2ZpbGVMZW5ndGggPj0gaWNjQ29sb3JQcm9maWxlSGVhZGVy
TGVuZ3RoKTsKQEAgLTM1NCwxMCArMzY1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBjb21wb3NpdGluZykuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KSB7IH0KIAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJ
TkcpCi0gICAgICAgIHZvaWQgc2V0TWF4TnVtUGl4ZWxzKGludCBtKSB7IG1fbWF4TnVtUGl4ZWxz
ID0gbTsgfQotI2VuZGlmCi0KICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBo
b3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBhcmd1bWVudAogICAgICAgICAvLyBhbmQgcmV0dXJu
cyB0cnVlLiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KICAgICAgICAgdmlydHVhbCBib29sIGhv
dFNwb3QoSW50UG9pbnQmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzc0LDcgKzM4MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVmVjdG9yPEltYWdlRnJhbWUsIDE+IG1f
ZnJhbWVCdWZmZXJDYWNoZTsKICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclBy
b2ZpbGUgYW55IG1vcmUsIGZvciBhbnkgcG9ydD8KICAgICAgICAgQ29sb3JQcm9maWxlIG1fY29s
b3JQcm9maWxlOwotICAgICAgICBib29sIG1fc2NhbGVkOworICAgICAgICBib29sIG1fc2NhbGVk
IHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwogICAgICAg
ICBWZWN0b3I8aW50PiBtX3NjYWxlZFJvd3M7CiAgICAgICAgIGJvb2wgbV9wcmVtdWx0aXBseUFs
cGhhOwpAQCAtMzkyLDEwICszOTksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9
CiAKICAgICAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIGJvb2wgbV9zaXplQXZhaWxhYmxl
OwotICAgICAgICBpbnQgbV9tYXhOdW1QaXhlbHM7Ci0gICAgICAgIGJvb2wgbV9pc0FsbERhdGFS
ZWNlaXZlZDsKLSAgICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAgICAgICAgYm9vbCBtX3NpemVBdmFp
bGFibGUgeyBmYWxzZSB9OworI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcp
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbV9tYXhOdW1QaXhlbHMgeyAxMDI0ICogMTAyNCB9
OworI2Vsc2UKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IC0xIH07
CisjZW5kaWYKKyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkIHsgZmFsc2UgfTsKKyAg
ICAgICAgYm9vbCBtX2ZhaWxlZCB7IGZhbHNlIH07CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAzZDc2YmMyYTk3NGRlYWY3
MzE4ZDU3MGIxZWVjMzE2MjYwOTk4MDY1Li5jYWYzNWM5N2YxN2VkZDM0YmM5ZGY4OWFiMDllODcw
MGFlZTZjN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsMTQgKzQ3LDE0
IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgQk1QSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBJbWFnZURlY29k
ZXI6OnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBpZiAobV9yZWFkZXIpCi0g
ICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKGRhdGEpOworICAgICAgICBtX3JlYWRlci0+c2V0RGF0
YSgmZGF0YSk7CiB9CiAKIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IDFjODgyZTEzOTk1MmU0NzQ4MzJiY2JjMjIwNTBh
NjBmYjRmZmJiOTcuLmIyYzQ3ODk1NjE5YmVjYWYyNWQxMGEzMGMyZTgzYWUzNTU4ODc2YzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJibXAiOyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAg
IHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCk7CiAg
ICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gIEJlIGNh
cmVmdWwgdG8gYXZvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggY2Q1NmU2N2Vi
OTE4YjE2OTNjNGVjY2Y3NDBhZjgwYzg1OTM2YTc5OC4uNmVmMGJjNDk5MzNmNWM0ZjJlYzlkYmU3
MTdlZmRkODEwNmJiZjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTQyLDE0
ICs0MiwxNCBAQCBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKQogewogfQogCi12
b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVj
ZWl2ZWQpOwogICAgIGlmIChtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXItPnNldERhdGEoZGF0
YSk7CisgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKCZkYXRhKTsKIH0KIAogYm9vbCBHSUZJbWFn
ZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
NDA2MTA4OTUzOTVkOWIxMmNjNjlkMTkxY2MzMDUyMjA5Y2MwNjg3Mi4uYzRjNDlhYzM0ZThjODJj
YTI5MDM4YWNlZGMwMzlmNTkwZjM4MWJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAt
NDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNv
ZGVyCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyBy
ZXR1cm4gImdpZiI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRT
aXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwogICAgICAgICB2aXJ0dWFsIHNp
emVfdCBmcmFtZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IGZiODc4ZWQwOGUy
OGQ0MDJlZWYzNzBkY2EzOTJjZjlmMjZlZDA0NjkuLmVhNDJiMTFhNzhjMzhlYmU2NWMyYzI4Yjkx
YzhhZmI2MjYzNWE5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yNDYsNyArMjQ2LDcg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQorICAgIHZvaWQg
c2V0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQog
ICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVj
b2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA1NmFjOTIxY2QwODQ2ODIz
YjgxMTE4ZWE2ZjNhZGYyMTFkYTdhMDg1Li43OWNlYTkwOGRjZWI2M2VjNWUxZjY1ZTNlOTc2ZjU1
NWM4YWM0MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTUsNyArNTUsNyBA
QCBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFnZURlY29kZXIoKQogewogfQogCi12b2lkIElDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgIGZvciAoQk1QUmVhZGVy
czo6aXRlcmF0b3IgaShtX2JtcFJlYWRlcnMuYmVnaW4oKSk7IGkgIT0gbV9ibXBSZWFkZXJzLmVu
ZCgpOyArK2kpIHsKICAgICAgICAgaWYgKCppKQotICAgICAgICAgICAgKCppKS0+c2V0RGF0YShk
YXRhKTsKKyAgICAgICAgICAgICgqaSktPnNldERhdGEoJmRhdGEpOwogICAgIH0KICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fcG5nRGVjb2RlcnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHNl
dERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRl
eCAxNDk0Nzk3YTliZjMxYzNlNjRiODFkYjZjZTMzM2Q5MTI3ZmI4OWQ4Li4wMTA0ZDQ0MmE0YmUy
ZDQ0OTRiZWJkZmRlZWM3N2ZlOTk0YzFmMmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBA
IC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBJbWFnZURl
Y29kZXIKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7
IHJldHVybiAiaWNvIjsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDI5NmI4MzQ3OTVlOWI2OGYyZDE1NzM0MzcxNzcwODMyNzMxYzBmODUuLmM3
YjQ1MmEzNGNiZjM3MDgyNWFkMjBhNTRjZTQ0NWUzODY1ZDFlZTggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAxNi0wNC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUs
Y29tPgorCisgICAgICAgIE1lcmdlIENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3Vy
Y2UgaW1wbGVtZW50YXRpb24gaW4gb25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxp
bmcuaHRtbDogQWRkZWQuCisKKzIwMTYtMDQtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBNZXJnZSBDRyBJbWFnZVNvdXJjZSBhbmQgbm9u
IENHIEltYWdlU291cmNlIGltcGxlbWVudGF0aW9uIGluIG9uZSBmaWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0NTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvaW1hZ2VzL2ltYWdlLXN1
YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2lt
YWdlLXN1YnNhbXBsaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA0LTA5ICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgZnVuY3Rpb25hbCA6aG9z
dCgpIHBzZXVkbyBjbGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1h
Z2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2lt
YWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAzMTNiZWI4ZGI3OTQx
OTVhNmJlYzIyZGYwYjgxMWM3YjIzMDkyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwy
NiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAg
ICAgZGl2IHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPGhlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+CisgICAgZnVuY3Rpb24gY3JlYXRlRGl2KGNvbG9yKSB7CisgICAgICAgIHZhciBkaXZF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdkVsZW1l
bnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZGl2RWxlbWVudCk7CisgICAgfQorCisgICAgY3JlYXRlRGl2KCJyZWQiKTsK
KyAgICBjcmVhdGVEaXYoImdyZWVuIik7CisgICAgY3JlYXRlRGl2KCJibHVlIik7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1z
dWJzYW1wbGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyOGFlM2JlOWRmNTMwMWRiMmExOGQ4MjkzNGU3
M2JhNWQ5ODk0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9p
bWFnZS1zdWJzYW1wbGluZy5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBIVE1MPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGRpdiB7CisgICAgICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgbWFy
Z2luOiAxMHB4OworICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICB9
CisgICAgICAgIGltZyB7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzxoZWFkPgorPGJvZHk+Cis8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldEltYWdlU3Vic2FtcGxpbmdFbmFibGVkKHRydWUpOworCisgICAgZnVu
Y3Rpb24gY3JlYXRlSW1hZ2UoY29sb3IpIHsKKyAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgICAgICBjYW52YXMud2lkdGggPSAxMDI0ICog
MzsKKyAgICAgICAgY2FudmFzLmhlaWdodCA9IDEwMjQgKiAzOworICAgICAgICB2YXIgY3R4ID0g
Y2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb2xvcjsK
KyAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7
CisKKyAgICAgICAgdmFyIGltZ0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWci
KTsKKyAgICAgICAgaW1nRWxlbWVudC5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCJpbWFnZS9wbmci
KTsKKworICAgICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICBkaXZFbGVtZW50LmFwcGVuZENoaWxkKGltZ0VsZW1lbnQpOworICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdkVsZW1lbnQpOworICAgIH0KKyAgICAKKyAg
ICBjcmVhdGVJbWFnZSgicmVkIik7CisgICAgY3JlYXRlSW1hZ2UoImdyZWVuIik7CisgICAgY3Jl
YXRlSW1hZ2UoImJsdWUiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276085</attachid>
            <date>2016-04-09 04:22:37 -0700</date>
            <delta_ts>2016-04-10 00:23:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160409042242.patch</filename>
            <type>text/plain</type>
            <size>57406</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU2OTUzMGIwM2QzMzM1
YWY1YjNlYzU0MDQ3OTU3MWY1N2NhMzNmOS4uNTdjMzcxNDYyYTkyNDkzM2ZmYzhlNTJiZDIyNDBj
NTgxOTQxMDcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxNi0wNC0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltYWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4g
QWxsIHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJ
bWFnZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNh
biBoYXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0
IHJpZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0
L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
TWFjLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5k
IGFkZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAg
IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1vdmUgY2xlYXIodHJ1ZSkg
Y2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNs
ZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxscyBJbWFnZURlY29kZXI6
OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hpY2ggd2lsbCBkbyBub3Ro
aW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5z
dXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvCisgICAgICAgIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJbWFnZURlY29kZXI6OnNl
dE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29uc3Qgc3RhdGljIGludCBD
RyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0CisgICAgICAgIGJhc2Vk
IG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAgCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVmZmVyJiB0byB0aGUgdW5k
ZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0dXJucyB0aGUgbWF4aW11
bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBhbiBpbWFnZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNj
YWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1YnNhbXBsaW5nTGV2ZWwg
dGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgZm9y
CisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKTogUmV0dXJu
cyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hpY2ggY2FuIGRldGVybWlu
ZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisgICAgICAgIHplcm8uIEZv
ciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNvcnJlY3RlZCBsYXRlci4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVu
dGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBlcnMgZm9yIHRoZSBJbWFn
ZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGlz
IHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisgICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6
ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldEFsbG93U3Vic2FtcGxpbmcp
OiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6c2V0QWxsb3dTdWJzYW1wbGluZygpLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptYXhQaXhlbHNQZXJEZWNvZGVkSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVs
c1BlckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIFNldHRpbmcgbWF4UGl4ZWxzUGVy
RGVjb2RlZEltYWdlIHdhcyBtb3ZlZCB0byB0aGUgbm9uIENHIEltYWdlRGVjb2Rlci4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIFNoYXJlZEJ1
ZmZlciogdG8gU2hhcmVkQnVmZmVyJi4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOiBEZWxldGVkLgorICAgICAgICBUaGUgY29kZSB3
YXMgbW92ZWQgdG8gSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSgpLgorICAg
ICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOiBNYWtlIHRoZSBwcm90b3R5
cGUgb2YgdGhpcyBmdW5jdGlvbgorICAgICAgICBzdWl0YWJsZSBmb3IgQ0cgYW5kIG5vbiBDRyBj
YXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKTogRW1wdHkgZnVuY3Rpb25zIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgIAorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOiBBIG1ldyBm
dW5jdGlvbiB0byByZXR1cm4KKyAgICAgICAgd2hldGhlciB0aGUgZnJhbWUgZGVjb2RpbmcgaXMg
Y29tcGxldGUgb3Igbm90LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOiBTaW1wbGlmeSB0aGUgbG9naWMuCisgICAgICAgIAor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6IFRo
ZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KTogVGhlIGNvZGUgd2FzIG1v
dmVkIGZyb20KKyAgICAgICAgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KCkg
aW4gSW1hZ2VTb3VyY2UuY3BwLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
SW1hZ2VEZWNvZGVyKTogSW5pdGlhbGl6ZSB0aGUgbWVtYmVycyBpbiBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6IEZpeCB0aGUgYnJhY2VzIHN0
eWxlLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIHRo
ZSB0eXBlIG9mIHRoZSBhcmd1bWVudCBmcm9tCisgICAgICAgIFNoYXJlZEJ1ZmZlciogdG8gU2hh
cmVkQnVmZmVyJi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJ
bmRleCk6IEFkZCB0aGUgYXJndW1lbnQgU3Vic2FtcGxpbmdMZXZlbAorICAgICAgICBzbyBpdCBj
YW4gaGF2ZSB0aGUgc2FtZSBwcm90b3R5cGUgYXMgQ0cuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6IFJlbmFtZSBpdCB0byB0aGUgc2FtZSBvZiBD
Ry4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmFsbG93U3Vic2Ft
cGxpbmdPZkZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6IEFkZCB0aGVzZSBmdW5jdGlvbnMK
KyAgICAgICAgYW5kIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMgc28gd2UgZG8gbm90IGhhdmUg
dG8gYWRkIGRpcmVjdGl2ZSBjb21waWxlZAorICAgICAgICBub24gQ0cgYmxvY2tzIGluIEltYWdl
U291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Om9y
aWVudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
TWF4TnVtUGl4ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
TVBJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAg
IFVzZSByZWZlcmVuY2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgcG9pbnRlciBTaGFyZWRCdWZm
ZXIuCisKIDIwMTYtMDQtMDkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBmdW5jdGlvbmFsIDpob3N0KCkgcHNldWRvIGNsYXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGY1YzY2MzVjYzExZDNmY2YzNGZiNmZkMzM5NTJhNTcwYWY5NjhkM2Mu
LmRiMTg2NzI1YjkzMDY4M2RlY2Y4ZWE2NTlmZWM0YmI3Mzc0M2IzMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0yMjEzLDYgKzIyMTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bnRQb2ludC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFr
ZQppbmRleCBjNjcyY2M3MDdmYTg3ODViYTUyNzQ0MmU5MDRiMWNmYWRiMjUxNWFjLi4wOWM4MDk0
ZTc3YzRiZjMyYWNmNDdhYTkzZTlkYmFlOTk2Mjk3ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QXBwbGVXaW4uY21ha2UKQEAgLTcyLDcgKzcyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGI3MmYy
ZTE1YzhiNTJlYWUxYTNlNmQ2YTRlYTZhZDEyYjEyYTI4ZTguLmFlYTM1NzEwNTkwOWI3YzdlZTIw
NTUyNzU5ZWFjOTlmNDU2ZDVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC00MDYs
NyArNDA2LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
LSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2NWY2Mjg2YjYzNDlkMmY5NDc1OWUyYTNiNGUwMzcwMmUyOTdiMDBjLi4yNTg5YzM1MWVh
NTk3NTk5ZWU4YTA3MDExZTYwZmIzYTc1YTIyM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTg2LDcgKzQ5ODYsNiBAQAog
CQlCMjc1MzU1QTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkMwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NUIwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi87
IH07CiAJCUIyNzUzNTVFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMwMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbWFnZUNHLmNwcCAqLzsgfTsKLQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8q
IEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICov
OyB9OwogCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMjBCMDUzODE0
MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYxMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI3NTM1MzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi87
IH07CiAJCUIyNzUzNTYyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzQwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi87IH07CkBAIC0xMjg3Nyw3ICsxMjg3Niw2IEBACiAJ
CUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRSZWN0Q0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjc1MzUyRDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0U2l6ZUNHLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRG
IC8qIEltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElt
YWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjc1MzUzMTBCMDUzODE0
MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRQb2ludENHLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UmVjdENHLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFNpemVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzg1LDcgKzIxNzgz
LDYgQEAKIAkJCQlCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8sCiAJ
CQkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLywKIAkJ
CQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAqLywKLQkJCQlC
Mjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi8sCiAJCQkJNEIz
NDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5
MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUz
MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0zMDAwNCw3ICszMDAw
MSw2IEBACiAJCQkJMkQ1QTU5MkYxNTI1MjUyMzAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUxQTJGNDExN0Q3RDVERTAwNzI1MTdBIC8qIEltYWdl
UXVhbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQzcyNUUxOTc0ODc0
QjAwQUVERDBDIC8qIEltYWdlU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUzNTVG
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFOTYxQzU0MThBRDMzODUwMEQwN0RDNSAvKiBJbmJh
bmREYXRhVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDBkMTAwOTYxZmYyNzYxNTM2
OTk1MGZjYmJmZTFlYzVlYzgzMTg0ZmYuLmM4YWE5NTAzMmYzNjJiZmQyZmMxODY3N2RhYmZjMzY4
YmRiODQ3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MTAsIDIwMTEsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEu
Y28udWs+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYwpAQCAt
MjksMTkgKzI5LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2UuaCIKIAotI2lmICFVU0UoQ0cpCi0KKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVyQ0cuaCIKKyNlbHNlCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKIAogI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NB
TVBMSU5HKQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdl
ID0gMTAyNCAqIDEwMjQ7Ci0jZW5kaWYKLQogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdl
U291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9hbHBo
YU9wdGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24o
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCkBAIC01MCwxNCArNDcsMjEgQEAgSW1hZ2VTb3Vy
Y2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1h
Z2VTb3VyY2U6OkdhbW0KIAogSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiB7Ci0gICAgY2xl
YXIodHJ1ZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwg
c2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
IGNsZWFyQmVmb3JlRnJhbWUpCit7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVG
cmFtZSk7Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1l
cywgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7Ci0gICAgaWYgKCFkZXN0cm95QWxsKSB7Ci0gICAgICAgIGlmIChtX2Rl
Y29kZXIpCi0gICAgICAgICAgICBtX2RlY29kZXItPmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVh
ckJlZm9yZUZyYW1lKTsKKyAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheSB0aGUg
ZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZAorICAgIC8vIHRvIGRlc3Ryb3kg
YWxsIG9mIHRoZSBmcmFtZXMuCisgICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKSB7CisgICAgICAg
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNjcsMjAgKzcxLDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJv
b2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlcioKICAg
ICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlU291
cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1h
Z2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIGlmIChpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
Ly8gTWFrZSB0aGUgZGVjb2RlciBieSBzbmlmZmluZyB0aGUgYnl0ZXMuCi0gICAgLy8gVGhpcyBt
ZXRob2Qgd2lsbCBleGFtaW5lIHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBv
ZiB0aGUgYXBwcm9wcmlhdGUgZGVjb2RlciBwbHVnaW4uCi0gICAgLy8gSWYgaW5zdWZmaWNpZW50
IGJ5dGVzIGFyZSBhdmFpbGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNv
ZGVyIHBsdWdpbiB3aWxsIGJlCi0gICAgLy8gbWFkZS4KLSAgICBtX2RlY29kZXIgPSBJbWFnZURl
Y29kZXI6OmNyZWF0ZSgqZGF0YSwgbV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBp
ZiAobV9kZWNvZGVyICYmIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKQotICAgICAgICBtX2Rl
Y29kZXItPnNldE1heE51bVBpeGVscyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7Ci0jZW5k
aWYKKyAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBtX2FscGhhT3B0
aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJj
ZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAt
ODgsNyArODQsNyBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChkYXRhKTsKKyAgICBlbnN1cmVEZWNv
ZGVySXNDcmVhdGVkKCpkYXRhKTsKICAgICAKICAgICBpZiAoIWluaXRpYWxpemVkKCkpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05NiwyMiArOTIsNDYgQEAgdm9pZCBJbWFn
ZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIH0KIAogICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0
YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICBtX2RlY29kZXItPnNldERhdGEoKmRh
dGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9Ci0KLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdAorICAgIAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2Fs
Y3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAogewotICAgIHJldHVybiBtX2Rl
Y29kZXIgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKKyAgICBp
ZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4
KDApKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhpcyB2YWx1ZSB3
YXMgY2hvc2VuIHRvIGJlIGFwcHJvcHJpYXRlIGZvciBpT1Mgc2luY2UgdGhlIGltYWdlCisgICAg
Ly8gc3Vic2FtcGxpbmcgaXMgb25seSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gaU9TLiBDaG9vc2Ug
YSBkaWZmZXJlbnQgdmFsdWUKKyAgICAvLyBpZiBpbWFnZSBzdWJzYW1wbGluZyBpcyBlbmFibGVk
IG9uIG90aGVyIHBsYXRmb3JtLgorICAgIGNvbnN0IGludCBjTWF4aW11bUltYWdlQXJlYUJlZm9y
ZVN1YnNhbXBsaW5nID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2
ZWwgbWF4U3Vic2FtcGxpbmdMZXZlbCA9IDM7CisgICAgCisgICAgZm9yIChTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSAwOyBzdWJzYW1wbGluZ0xldmVsIDwgbWF4U3Vic2FtcGxp
bmdMZXZlbDsgKytzdWJzYW1wbGluZ0xldmVsKSB7CisgICAgICAgIEludFNpemUgZnJhbWVTaXpl
ID0gZnJhbWVTaXplQXRJbmRleCgwLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAgICAgaWYgKGZy
YW1lU2l6ZS5hcmVhKCkgPCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQorICAg
ICAgICAgICAgcmV0dXJuIHN1YnNhbXBsaW5nTGV2ZWw7CisgICAgfQorICAgIAorICAgIHJldHVy
biBtYXhTdWJzYW1wbGluZ0xldmVsOwogfQogCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNl
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0CitTdWJzYW1wbGluZ0xldmVs
IEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKHNjYWxlIDw9IDAgfHwgc2NhbGUgPiAxKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1w
bGluZ0xldmVsID0gY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKTsKKyAgICBpZiAo
IW1heGltdW1TdWJzYW1wbGluZ0xldmVsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRo
ZXJlIGFyZSBmb3VyIHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAxID0gMC41eCwgMiA9IDAu
MjV4LCAzID0gMC4xMjV4LgorICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9n
MmYoMSAvIHNjYWxlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwpOwogfQogCi1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKIH0K
IAogYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKQEAgLTEyOSw5NyArMTQ5LDY5
IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25z
dAogICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKTsKIH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QKK3NpemVfdCBJbWFnZVNvdXJjZTo6ZnJh
bWVDb3VudCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1
cm4geyB9OwotCi0gICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4
KGluZGV4KTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5v
cmllbnRhdGlvbigpOwotICAgIAotICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhB
c0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKKyAgICByZXR1cm4gaW5p
dGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotYm9vbCBJbWFn
ZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK2ludCBJbWFnZVNv
dXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBt
X2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBt
X2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CiB9CiAKLXNpemVf
dCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QK
K1N0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4
dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNv
dW50KCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25D
b3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9k
ZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOwogfQogCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1l
Q291bnQoKSBjb25zdAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZy
YW1lQ291bnQoKSA6IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5m
cmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBw
b3J0cy4gIElmIHdlIGhhdmUgYW4KLSAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3Qg
YmFpbC4KLSAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRl
eChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZy
YW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gIWlu
aXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Cit9
CiAKLSAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4g
IEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQotICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUg
Y29udGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgotICAgIHJl
dHVybiBidWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKTsKK2Jvb2wgSW1hZ2VTb3VyY2U6OmFsbG93
U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5hbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0
SW5kZXgoaW5kZXgpOwogfQogCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KQorSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdElt
YWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAog
ewogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBJbWFn
ZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0g
ICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVt
cHR5KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8vIE1h
bnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxh
c2ggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJl
aGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBz
cGVjaWZ5Ci0gICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxl
bS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1v
cmUgaW5mb3JtYXRpb24uCi0gICAgY29uc3QgZmxvYXQgZHVyYXRpb24gPSBidWZmZXItPmR1cmF0
aW9uKCkgLyAxMDAwLjBmOwotICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAgcmV0
dXJuIDAuMTAwZjsKLSAgICByZXR1cm4gZHVyYXRpb247CisgICAgSW50U2l6ZSBzaXplID0gbV9k
ZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gb3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsK
KyAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdl
T3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJh
bnNwb3NlZFNpemUoKSA6IHNpemU7CiB9CiAKLUltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6
Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0Cit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
Pm9yaWVudGF0aW9uKCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIGZyYW1lU2l6
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpLmFyZWEoKSAqIDQ7CiB9CiAKLWJvb2wg
SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKK2Zsb2F0IElt
YWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0
dXJuICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5k
ZXgpOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9u
QXRJbmRleChpbmRleCkgOiAwOwogfQogCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KHNpemVfdCBpbmRleCkKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9y
aWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFs
aXplZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIg
PSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgcmV0dXJuIGJ1ZmZl
ciAmJiBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRl
eCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CiB9Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CisgICAg
CitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KSA6
IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQg
SW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CkBAIC0yMzMsNSArMjI1LDMg
QEAgdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIH0KICAgICAK
IH0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGNkOWIzOWRhYTFjODVlMTgwZjJjNjQxNWEwZWQyM2Yz
ZTRkNzc3YTQuLjUwNzJhMjFjYTk3ZWQ1NTNkZmZmYzFlMGY5YjkxYzk1ODE3NWVkYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCwgMjAxMCwgMjAxMiwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNSwxMSArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLXR5
cGVkZWYgc3RydWN0IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7Ci10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKQEAgLTgzLDcgKzc4LDcgQEAgcHVibGlj
OgogICAgICAgICBHYW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQKICAgICB9OwogCi0gICAgSW1h
Z2VTb3VyY2UoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24gPSBBbHBoYVByZW11bHRpcGxpZWQsIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2Ft
bWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKTsKKyAgICBJbWFnZVNvdXJjZShBbHBoYU9wdGlvbiA9
IEFscGhhUHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFu
ZENvbG9yUHJvZmlsZUFwcGxpZWQpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCiAgICAgLy8gVGVs
bHMgdGhlIEltYWdlU291cmNlIHRoYXQgdGhlIEltYWdlIG5vIGxvbmdlciBjYXJlcyBhYm91dCBk
ZWNvZGVkIGZyYW1lCkBAIC0xMDcsNzYgKzEwMiw2MSBAQCBwdWJsaWM6CiAgICAgLy8gd2hvIHNl
dCB8ZGVzdHJveUFsbHwgdG8gdHJ1ZSBpZiB0aGV5IHdpc2ggdG8gYmUgYWJsZSB0byBjb250aW51
ZSB1c2luZwogICAgIC8vIHRoZSBJbWFnZVNvdXJjZS4gIFRoaXMgd2F5IGltcGxlbWVudGF0aW9u
cyB3aGljaCBjaG9vc2UgdG8gZGVzdHJveSB0aGVpcgogICAgIC8vIGRlY29kZXJzIGluIHNvbWUg
Y2FzZXMgY2FuIHJlY29uc3RydWN0IHRoZW0gY29ycmVjdGx5LgotICAgIHZvaWQgY2xlYXIoYm9v
bCBkZXN0cm95QWxsLAotICAgICAgICAgICAgICAgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAw
LAotICAgICAgICAgICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gTlVMTCwKLSAgICAgICAgICAg
ICAgIGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXIoYm9vbCBk
ZXN0cm95QWxsLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSA9IDAsIFNoYXJlZEJ1ZmZlciogZGF0
YSA9IG51bGxwdHIsIGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOwogCiAgICAgYm9vbCBp
bml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogCiAgICAgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAg
IFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwogCiAgICAgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dT
dWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbGxv
d1N1YnNhbXBsaW5nKGJvb2wgYWxsb3dTdWJzYW1wbGluZykgeyBtX2FsbG93U3Vic2FtcGxpbmcg
PSBhbGxvd1N1YnNhbXBsaW5nOyB9Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2Ft
cGxpbmdMZXZlbCgpIGNvbnN0OwotCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICBz
dGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwogICAgIAor
ICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUs
IHdpdGhvdXQgc3Vic2FtcGxpbmcuCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgSW50
U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gU2l6
ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwotCi0gICAgYm9v
bCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Q7Ci0KLSAgICBzaXplX3QgYnl0ZXNEZWNvZGVk
VG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3Q7Ci0KLSAgICBpbnQgcmVwZXRpdGlvbkNvdW50
KCk7CiAKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OworICAgIGludCByZXBldGl0aW9u
Q291bnQoKTsKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICBib29s
IGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKIAotICAgIC8vIENhbGxlcnMgc2hvdWxkIG5v
dCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7Ci0g
ICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgTmF0aXZlSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7Ci0K
LSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwotICAgIGJvb2wgZnJhbWVI
YXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVh
bGx5IHVzZWQgYW55IGFscGhhLgogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXpl
X3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVkLgot
ICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8v
IEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KLQorICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFs
cGhhLgorICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29u
c3Q7CisgICAgCisgICAgLy8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCisg
ICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAs
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRp
b24pIGNvbnN0OworICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRo
ZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUgaXMgbm90IHlldAogICAgIC8vIGRlY29kZWQg
dGhlbiByZXR1cm4gMC4KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIG1heFBpeGVsc1BlckRlY29kZWRJbWFn
ZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOyB9Ci0gICAgc3RhdGljIHZv
aWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2lnbmVkIG1heFBpeGVscykgeyBzX21h
eFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsgfQotI2VuZGlmCi0KKyAgICAKKyAg
ICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOworICAgIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50
YXRpb24KKyAgICAKKyAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNh
bGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OworICAgIC8vIHNlZSBjb21tZW50cyBv
biBjbGVhcigpIGFib3ZlLgorICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIAogcHJpdmF0ZToKLSAgICB2
b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KTsKKyAgICB2b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBjYWxjdWxhdGVN
YXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0OwogICAgIHZvaWQgZHVtcChUZXh0U3RyZWFt
JikgY29uc3Q7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gbV9kZWNv
ZGVyOwotICAgIAorCisgICAgLy8gVGhlIGRlZmF1bHQgdmFsdWUgb2YgbV9hbGxvd1N1YnNhbXBs
aW5nIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBkZWZhdWx0SW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQg
aW4gU2V0dGluZ3MuY3BwCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9hbGxvd1N1YnNh
bXBsaW5nIHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyB7IGZh
bHNlIH07CiAjZW5kaWYKIAotI2lmICFVU0UoQ0cpCiAgICAgQWxwaGFPcHRpb24gbV9hbHBoYU9w
dGlvbjsKICAgICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uOwotI2VuZGlmCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElO
RykKLSAgICBzdGF0aWMgdW5zaWduZWQgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7Ci0jZW5k
aWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA3ZmJkMzQxYjk4OGRjMjVkNmQxZjExZDhlYTM2
N2EzNjlkMGRkYjQ1Li41OTBmNjFjYzU5NzdkNjZmZTRhOTVhM2M4ZTBjZTFkMDU0ZGIxNjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCkBAIC0xMjIsMTUgKzEyMiw2IEBAIEltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNv
ZGVyKCkKICAgICBtX25hdGl2ZURlY29kZXIgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJ
bmNyZW1lbnRhbChudWxscHRyKSk7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2ZWwg
bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2Ft
cGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCi0g
ICAgZmxvYXQgY2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBzdGQ6Om1pbjxm
bG9hdD4oMSwgc2NhbGUpKTsKLSAgICBTdWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9IGNlaWxmKGxv
ZzJmKDEgLyBjbGFtcGVkU2NhbGUpKTsKLSAgICBBU1NFUlQocmVzdWx0ID49MCAmJiByZXN1bHQg
PD0gMyk7Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNhbXBsaW5nTGV2
ZWwpOwotfQotCiBzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVBy
b3BlcnRpZXMoKQogewogICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcgbWFsbG9jL2NhbGxvYyBj
YWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCkBAIC0zODYsMjEgKzM3NywyMSBAQCB2b2lk
IEltYWdlRGVjb2Rlcjo6c2V0RGF0YShDRkRhdGFSZWYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBk
YXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29k
ZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhl
IFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hh
cmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmls
aXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1
cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVk
QnVmZmVyLgotICAgIHNldERhdGEoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFS
ZWNlaXZlZCk7CisgICAgc2V0RGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRh
UmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFw
IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS0+cmVmKCk7CisgICAgZGF0YS5yZWYoKTsKICAg
ICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0
aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBu
b3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFu
dGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZv
ciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJE
aXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZURpcmVjdChkYXRhLCBkYXRhLT5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwor
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNh
bGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVE
ZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oCmluZGV4IDhjNmE5ZTIyNzgwNDNmYTVhYzcyMTI2MTdmMWUwOTMxNDcxZmQ0
YjQuLjNlYTUyYTEyZTY5NGRlN2ViMTgzNzA3NzczNWI1Njc0OTQ2Mjk5NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApA
QCAtMjksMTkgKzI5LDIxIEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKIAordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJj
ZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFn
ZURlY29kZXIoKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rl
cj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3Jl
YXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VT
b3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VEZWNvZGVyPigpOwogICAgIH0KICAgICAKICAgICBzdGF0
aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwotICAgIHN0YXRp
YyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwg
U3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgCiAgICAgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUo
KSBjb25zdDsKQEAgLTY0LDcgKzY2LDkgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBzZXREYXRhKENGRGF0YVJlZiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICAKKyAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQogICAgIAogcHJv
dGVjdGVkOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0OWQ0ZTE1YzlmZmU3OTBjMmU2ODUyNDZmZThmODVlYjU2MTYw
ODNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1h
Z2VTb3VyY2VDRy5oIgotCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpbmNsdWRlICJJ
bWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBo
YU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotewotICAg
IC8vIEZJWE1FOiBBbHBoYU9wdGlvbiBhbmQgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gYXJl
IGlnbm9yZWQuCi19Ci0KLUltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQotewotICAgIGNsZWFy
KHRydWUpOwotfQotCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGxGcmFt
ZXMsIHNpemVfdCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsK
LSAgICAvLyBSZWNlbnQgdmVyc2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVj
b2RlZCBpbWFnZSBmcmFtZXMgaWYgdGhlIGNsaWVudAotICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxv
bmdlciBob2xkcyByZWZlcmVuY2VzIHRvIHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJv
dyBhd2F5Ci0gICAgLy8gdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQg
dG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KLSAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGVjb2RlciA9IG51bGxwdHI7Ci0gICAgCi0gICAg
aWYgKGRhdGEpCi0gICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLSAg
ICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVy
KikKLXsKLSAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZGVj
b2RlciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OnNl
dERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICBp
ZiAoIWRhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBlbnN1cmVEZWNvZGVySXNDcmVh
dGVkKGRhdGEpOwotICAgIAotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBtX2Rl
Y29kZXItPnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLQotU3RyaW5nIEltYWdl
U291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxp
emVkKCkgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKLX0KLSAg
ICAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1w
bGluZ0xldmVsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KDApKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IC8vIFZhbHVlcyBjaG9zZW4gdG8gYmUgYXBwcm9wcmlhdGUgZm9yIGlPUy4KLSAgICBjb25zdCBp
bnQgY01heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsK
LSAgICBjb25zdCBTdWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwotCi0g
ICAgU3Vic2FtcGxpbmdMZXZlbCBjdXJyZW50TGV2ZWwgPSAwOwotICAgIGZvciAoIDsgY3VycmVu
dExldmVsIDw9IG1heFN1YnNhbXBsaW5nTGV2ZWw7ICsrY3VycmVudExldmVsKSB7Ci0gICAgICAg
IEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleCgwLCBjdXJyZW50TGV2ZWwpOwot
ICAgICAgICBpZiAoZnJhbWVTaXplLmFyZWEoKSA8IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vi
c2FtcGxpbmcpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3VycmVu
dExldmVsOwotfQotICAgIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1
YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4g
Y2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKTsKLSNlbmRpZgotICAgIHJldHVybiAw
OwotfQotCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9y
U2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c3Vi
c2FtcGxpbmdMZXZlbEZvclNjYWxlKHNjYWxlLCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpKTsK
LX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKLXsKLSAgICByZXR1cm4g
aW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwotfQotCi1ib29s
IEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dT
dWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KGluZGV4KTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJj
ZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKSBjb25zdAotewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAKLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24gPSBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAg
Ci0gICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRy
YW5zcG9zZWRTaXplKCkgOiBzaXplOwotfQotCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNl
OjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBp
bml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogSW1h
Z2VPcmllbnRhdGlvbigpOwotfQotCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLX0KLSAgICAKLUludFNpemUg
SW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKLX0K
LQotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QK
LXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmhvdFNwb3QoaG90U3Bv
dCk7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRU
b0RldGVybWluZVByb3BlcnRpZXMoKTsKLX0KLSAgICAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRp
dGlvbkNvdW50KCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVw
ZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTG9vcE9uY2U7Ci19Ci0KLXNpemVfdCBJbWFnZVNv
dXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBt
X2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7Ci19Ci0KLVJldGFpblB0cjxDR0ltYWdlUmVmPiBJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkg
PyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKSA6IG51bGxwdHI7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVj
b2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Ci19Ci0KLWZsb2F0IEltYWdlU291
cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuIGlu
aXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KSA6IDA7
Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRl
eCkKLXsKLSAgICByZXR1cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0Fs
cGhhQXRJbmRleChpbmRleCk7Ci19Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkg
Y29uc3QKLXsKLSAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIHJldHVybiBmcmFtZVNpemUuYXJlYSgpICogNDsKLX0K
LSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1fYWxsb3dTdWJzYW1wbGluZykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbGxv
dy1zdWJzYW1wbGluZyIsIG1fYWxsb3dTdWJzYW1wbGluZyk7Ci0gICAgCi0gICAgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uQXRJbmRleCgwKTsKLSAgICBpZiAob3Jp
ZW50YXRpb24gIT0gT3JpZ2luVG9wTGVmdCkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvcmll
bnRhdGlvbiIsIG9yaWVudGF0aW9uKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggNmZlMjkwZTIyNjE4ZmJkNzZjNzVjODQ0OTI0NDcyZTMxOTdmZmY4Ny4u
Y2YxMTc1ZDQ5MzY4ZDQ5NjE5NmMwNDcwMjM5NTAzYjZiMzc5ODgyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3Bw
CkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9i
aWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNzAsMTMgKzI3MSwxNiBAQCB0
ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8
aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJh
bWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZy
YW1lQ29tcGxldGUpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmhh
c0FscGhhKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpG
cmFtZUNvbXBsZXRlOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiAhZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleChpbmRleCkgfHwgbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5oYXNBbHBoYSgpOwogfQog
CiB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkg
Y29uc3QKQEAgLTI4Nyw2ICsyOTEsNDIgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5
dGVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZS5hcmVhKCkg
KiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKIH0KIAorZmxvYXQgSW1hZ2VEZWNvZGVy
OjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1f
ZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBNYW55IGFubm95aW5nIGFk
cyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkg
YXMgcG9zc2libGUuCisgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNl
IGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgIC8v
IGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5k
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9u
LgorICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5k
dXJhdGlvbigpIC8gMTAwMC4wZjsKKyAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAgICAg
IHJldHVybiAwLjEwMGY7CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitOYXRpdmVJbWFnZVB0
ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUo
KSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBaZXJvLWhlaWdo
dCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFu
CisgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCisgICAgaWYgKHNpemUo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKG1fZnJhbWVC
dWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50
cyBhcyBhIG5hdGl2ZSBpbWFnZS4gRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCisgICAgLy8gaXMg
YWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBp
dHMgcmVmY291bnQuCisgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uYXNOZXdO
YXRpdmVJbWFnZSgpOworfQorCiB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlm
TmVjZXNzYXJ5KCkKIHsKICAgICBtX3NjYWxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCA1MzQ3
YTQ3YjcyM2NkNWYwM2I2MmQzYjM1MmNmOTQ1MTQ3ZGEwZWFhLi4yYzAwZDEyZTQwMjE3YThhZjEx
NTU5NzRjMzJjOTU5MDc2OThlNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKQEAgLTIzNSwxNSArMjM1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJbWFnZURlY29kZXIo
SW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgICAg
ICAgICA6IG1fc2NhbGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEo
YWxwaGFPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKKyAgICAgICAg
ICAgIDogbV9wcmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEltYWdlU291cmNlOjpBbHBo
YVByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlSWdub3JlZCkKLSAgICAgICAgICAgICwgbV9zaXplQXZhaWxhYmxlKGZhbHNlKQot
ICAgICAgICAgICAgLCBtX21heE51bVBpeGVscygtMSkKLSAgICAgICAgICAgICwgbV9pc0FsbERh
dGFSZWNlaXZlZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9mYWlsZWQoZmFsc2UpIHsgfQorICAg
ICAgICB7CisgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSB7IH0K
KyAgICAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkKKyAgICAgICAgeworICAgICAgICB9CiAK
ICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBkZWNvZGVyIG9mIHRoZSBhcHByb3By
aWF0ZSB0eXBlLiAgUmV0dXJucyAwIGlmCiAgICAgICAgIC8vIHdlIGNhbid0IHNuaWZmIGEgc3Vw
cG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKQEAgLTI1NCwxMSAr
MjUzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2ZhaWxl
ZCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhOwor
ICAgICAgICAgICAgbV9kYXRhID0gJmRhdGE7CiAgICAgICAgICAgICBtX2lzQWxsRGF0YVJlY2Vp
dmVkID0gYWxsRGF0YVJlY2VpdmVkOwogICAgICAgICB9CiAKQEAgLTI4Miw3ICsyODEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHNpemVzLiAgVGhpcyBkb2VzIE5PVCBkaWZm
ZXIgZnJvbSBzaXplKCkgZm9yIEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwogICAgICAgICAvLyBj
b21wb3NpdGVzIGFueSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZyYW1lcyB0byBj
cmVhdGUgZnVsbC0KICAgICAgICAgLy8gc2l6ZSBmcmFtZXMuCi0gICAgICAgIHZpcnR1YWwgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCkgY29uc3QKKyAgICAgICAgdmlydHVhbCBJbnRT
aXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZSgpOwogICAgICAgICB9CkBAIC0zMTAsMTYg
KzMwOSwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2Rlci1v
d25lZCBwb2ludGVyLgogICAgICAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJ
bmRleChzaXplX3QpID0gMDsKIAorICAgICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
c2l6ZV90KSBjb25zdDsKKwogICAgICAgICAvLyBNYWtlIHRoZSBiZXN0IGVmZm9ydCBndWVzcyB0
byBjaGVjayBpZiB0aGUgcmVxdWVzdGVkIGZyYW1lIGhhcyBhbHBoYSBjaGFubmVsLgotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAg
ICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgICAgIC8v
IE51bWJlciBvZiBieXRlcyBpbiB0aGUgZGVjb2RlZCBmcmFtZSByZXF1ZXN0ZWQuIFJldHVybiAw
IGlmIG5vdCB5ZXQgZGVjb2RlZC4KLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QpIGNvbnN0OworICAgICAgICAKKyAgICAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAK
ICAgICAgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsg
bV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBpZ25v
cmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlOyB9CiAKLSAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICAgICAgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9u
OyB9CisgICAgICAgIAorICAgICAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRl
eChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgZW51bSB7IGljY0Nv
bG9yUHJvZmlsZUhlYWRlckxlbmd0aCA9IDEyOCB9OwogCkBAIC0zMzAsNiArMzM3LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0
YVsxNl0sICJSR0IgIiwgNCk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgc2l6ZV90IGJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAg
CisgICAgICAgIHN0YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShmbG9hdCwgU3Vic2FtcGxpbmdMZXZlbCkgeyByZXR1cm4gMDsgfQorCiAgICAgICAgIHN0YXRp
YyBib29sIGlucHV0RGV2aWNlQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1
bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKHByb2ZpbGVMZW5ndGgsIHByb2ZpbGVMZW5ndGggPj0gaWNjQ29sb3JQcm9maWxlSGVhZGVy
TGVuZ3RoKTsKQEAgLTM1NCwxMCArMzY1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBjb21wb3NpdGluZykuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KSB7IH0KIAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJ
TkcpCi0gICAgICAgIHZvaWQgc2V0TWF4TnVtUGl4ZWxzKGludCBtKSB7IG1fbWF4TnVtUGl4ZWxz
ID0gbTsgfQotI2VuZGlmCi0KICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBo
b3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBhcmd1bWVudAogICAgICAgICAvLyBhbmQgcmV0dXJu
cyB0cnVlLiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KICAgICAgICAgdmlydHVhbCBib29sIGhv
dFNwb3QoSW50UG9pbnQmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzc0LDcgKzM4MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVmVjdG9yPEltYWdlRnJhbWUsIDE+IG1f
ZnJhbWVCdWZmZXJDYWNoZTsKICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclBy
b2ZpbGUgYW55IG1vcmUsIGZvciBhbnkgcG9ydD8KICAgICAgICAgQ29sb3JQcm9maWxlIG1fY29s
b3JQcm9maWxlOwotICAgICAgICBib29sIG1fc2NhbGVkOworICAgICAgICBib29sIG1fc2NhbGVk
IHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwogICAgICAg
ICBWZWN0b3I8aW50PiBtX3NjYWxlZFJvd3M7CiAgICAgICAgIGJvb2wgbV9wcmVtdWx0aXBseUFs
cGhhOwpAQCAtMzkyLDEwICszOTksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9
CiAKICAgICAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIGJvb2wgbV9zaXplQXZhaWxhYmxl
OwotICAgICAgICBpbnQgbV9tYXhOdW1QaXhlbHM7Ci0gICAgICAgIGJvb2wgbV9pc0FsbERhdGFS
ZWNlaXZlZDsKLSAgICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAgICAgICAgYm9vbCBtX3NpemVBdmFp
bGFibGUgeyBmYWxzZSB9OworI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcp
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbV9tYXhOdW1QaXhlbHMgeyAxMDI0ICogMTAyNCB9
OworI2Vsc2UKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IC0xIH07
CisjZW5kaWYKKyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkIHsgZmFsc2UgfTsKKyAg
ICAgICAgYm9vbCBtX2ZhaWxlZCB7IGZhbHNlIH07CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAzZDc2YmMyYTk3NGRlYWY3
MzE4ZDU3MGIxZWVjMzE2MjYwOTk4MDY1Li5jYWYzNWM5N2YxN2VkZDM0YmM5ZGY4OWFiMDllODcw
MGFlZTZjN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsMTQgKzQ3LDE0
IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgQk1QSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBJbWFnZURlY29k
ZXI6OnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBpZiAobV9yZWFkZXIpCi0g
ICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKGRhdGEpOworICAgICAgICBtX3JlYWRlci0+c2V0RGF0
YSgmZGF0YSk7CiB9CiAKIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IDFjODgyZTEzOTk1MmU0NzQ4MzJiY2JjMjIwNTBh
NjBmYjRmZmJiOTcuLmIyYzQ3ODk1NjE5YmVjYWYyNWQxMGEzMGMyZTgzYWUzNTU4ODc2YzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJibXAiOyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAg
IHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCk7CiAg
ICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gIEJlIGNh
cmVmdWwgdG8gYXZvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggY2Q1NmU2N2Vi
OTE4YjE2OTNjNGVjY2Y3NDBhZjgwYzg1OTM2YTc5OC4uNzkxNTE1NjA3MmQ3MTcwNDQzNzI1NzMw
NmIwOTU5MDhmMzQ5ODkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTQyLDE0
ICs0MiwxNCBAQCBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKQogewogfQogCi12
b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVj
ZWl2ZWQpOwogICAgIGlmIChtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXItPnNldERhdGEoZGF0
YSk7CisgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKCZkYXRhKTsKIH0KIAogYm9vbCBHSUZJbWFn
ZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBHSUZJ
bWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYWx0QXRGcmFtZSwgR0lGUXVlcnkgcXVlcnkp
CiAKICAgICBpZiAoIW1fcmVhZGVyKSB7CiAgICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHSUZJbWFnZVJlYWRlcj4odGhpcyk7Ci0gICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1f
ZGF0YSk7CisgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgfQog
CiAgICAgaWYgKHF1ZXJ5ID09IEdJRlNpemVRdWVyeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5o
CmluZGV4IDQwNjEwODk1Mzk1ZDliMTJjYzY5ZDE5MWNjMzA1MjIwOWNjMDY4NzIuLmM0YzQ5YWMz
NGU4YzgyY2EyOTAzOGFjZWRjMDM5ZjU5MGYzODFiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIElt
YWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNv
bnN0IHsgcmV0dXJuICJnaWYiOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAg
ICAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgICAgICB2aXJ0dWFsIGJv
b2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKICAgICAgICAgdmly
dHVhbCBzaXplX3QgZnJhbWVDb3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCBmYjg3
OGVkMDhlMjhkNDAyZWVmMzcwZGNhMzkyY2Y5ZjI2ZWQwNDY5Li5lYTQyYjExYTc4YzM4ZWJlNjVj
MmMyOGI5MWM4YWZiNjI2MzVhOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjQ2LDcg
KzI0Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhKSB7IG1fZGF0YSA9IGRhdGE7IH0KKyAg
ICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBkYXRhKSB7IG1fZGF0YSA9IGRh
dGE7IH0KICAgICAvLyBGSVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNpemVfdC4KICAgICBi
b29sIGRlY29kZShXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25lZCBo
YWx0QXRGcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNTZhYzkyMWNk
MDg0NjgyM2I4MTExOGVhNmYzYWRmMjExZGE3YTA4NS4uYTBmZDg2NDE4MWIzYzY4MzMwYzNhZDU5
NWNhZGVjYTFlNDQ3MmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkKIHsKIH0KIAotdm9p
ZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKICAgICBmb3IgKEJN
UFJlYWRlcnM6Oml0ZXJhdG9yIGkobV9ibXBSZWFkZXJzLmJlZ2luKCkpOyBpICE9IG1fYm1wUmVh
ZGVycy5lbmQoKTsgKytpKSB7CiAgICAgICAgIGlmICgqaSkKLSAgICAgICAgICAgICgqaSktPnNl
dERhdGEoZGF0YSk7CisgICAgICAgICAgICAoKmkpLT5zZXREYXRhKCZkYXRhKTsKICAgICB9CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BuZ0RlY29kZXJzLnNpemUoKTsgKytpKQogICAg
ICAgICBzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoaSk7CkBAIC0xNjUsNyArMTY1LDcgQEAg
dm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChzaXplX3Qg
aW5kZXgpCiAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBjb3B5IGJ5IG1ha2luZyB0aGUgUE5HIGRl
Y29kZXIgYWJsZSB0byB0YWtlIGFuCiAgICAgLy8gb3B0aW9uYWwgb2Zmc2V0LgogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0
YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5Lm1f
aW1hZ2VPZmZzZXQpKTsKLSAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YShwbmdEYXRh
LmdldCgpLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+
c2V0RGF0YSgqcG5nRGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKIHZvaWQgSUNPSW1h
Z2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGluZGV4LCBib29sIG9ubHlTaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5oCmluZGV4IDE0OTQ3OTdhOWJmMzFjM2U2NGI4MWRiNmNlMzMzZDkxMjdmYjg5
ZDguLjAxMDRkNDQyYTRiZTJkNDQ5NGJlYmRmZGVlYzc3ZmU5OTRjMWYyYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4
dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJpY28iOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1YWwg
SW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVB
dEluZGV4KHNpemVfdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjk2YjgzNDc5NWU5YjY4ZjJkMTU3MzQzNzE3
NzA4MzI3MzFjMGY4NS4uYzdiNDUyYTM0Y2JmMzcwODI1YWQyMGE1NGNlNDQ1ZTM4NjVkMWVlOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTA0LTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
Ym91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgTWVyZ2UgQ0cgSW1hZ2VTb3VyY2UgYW5k
IG5vbiBDRyBJbWFnZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBpbiBvbmUgZmlsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9pbWFn
ZS1zdWJzYW1wbGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdl
cy9pbWFnZS1zdWJzYW1wbGluZy5odG1sOiBBZGRlZC4KKworMjAxNi0wNC0wOSAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdlIENHIElt
YWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4gb25lIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ1
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbDogQWRkZWQuCisKIDIwMTYtMDQt
MDkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBmdW5jdGlvbmFsIDpob3N0KCkgcHNldWRvIGNsYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MDMxM2JlYjhkYjc5NDE5NWE2YmVjMjJkZjBiODExYzdiMjMwOTJiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPHN0eWxlPgorICAgICAgICBkaXYgeworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAg
ICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8
aGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBjcmVhdGVEaXYoY29sb3IpIHsK
KyAgICAgICAgdmFyIGRpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgZGl2RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKKyAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXZFbGVtZW50KTsKKyAgICB9CisKKyAgICBj
cmVhdGVEaXYoInJlZCIpOworICAgIGNyZWF0ZURpdigiZ3JlZW4iKTsKKyAgICBjcmVhdGVEaXYo
ImJsdWUiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI4YWUzYmU5ZGY1
MzAxZGIyYTE4ZDgyOTM0ZTczYmE1ZDk4OTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwKQEAgLTAsMCArMSw0MyBAQAor
PCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgZGl2
IHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgIH0KKyAgICAgICAgaW1nIHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgor
PGhlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQo
dHJ1ZSk7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJbWFnZShjb2xvcikgeworICAgICAgICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgIGNhbnZh
cy53aWR0aCA9IDEwMjQgKiAzOworICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMTAyNCAqIDM7Cisg
ICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgY3R4LmZp
bGxTdHlsZSA9IGNvbG9yOworICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRo
LCBjYW52YXMuaGVpZ2h0KTsKKworICAgICAgICB2YXIgaW1nRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICBpbWdFbGVtZW50LnNyYyA9IGNhbnZhcy50b0Rh
dGFVUkwoImltYWdlL3BuZyIpOworCisgICAgICAgIHZhciBkaXZFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdkVsZW1lbnQuYXBwZW5kQ2hpbGQoaW1n
RWxlbWVudCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2RWxlbWVudCk7
CisgICAgfQorICAgIAorICAgIGNyZWF0ZUltYWdlKCJyZWQiKTsKKyAgICBjcmVhdGVJbWFnZSgi
Z3JlZW4iKTsKKyAgICBjcmVhdGVJbWFnZSgiYmx1ZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276101</attachid>
            <date>2016-04-10 00:23:29 -0700</date>
            <delta_ts>2016-04-10 20:20:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160410002337.patch</filename>
            <type>text/plain</type>
            <size>57668</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU2OTUzMGIwM2QzMzM1
YWY1YjNlYzU0MDQ3OTU3MWY1N2NhMzNmOS4uYTIzYzg3NmEzYWZhODBmN2ZkYzVmNmUwMzNmMTUy
Mzk4YjdmY2I1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxNi0wNC0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltYWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4g
QWxsIHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJ
bWFnZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNh
biBoYXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0
IHJpZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0
L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
TWFjLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5k
IGFkZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAg
IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1vdmUgY2xlYXIodHJ1ZSkg
Y2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNs
ZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxscyBJbWFnZURlY29kZXI6
OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hpY2ggd2lsbCBkbyBub3Ro
aW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5z
dXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvCisgICAgICAgIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJbWFnZURlY29kZXI6OnNl
dE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29uc3Qgc3RhdGljIGludCBD
RyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0CisgICAgICAgIGJhc2Vk
IG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAgCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVmZmVyJiB0byB0aGUgdW5k
ZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0dXJucyB0aGUgbWF4aW11
bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBhbiBpbWFnZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNj
YWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1YnNhbXBsaW5nTGV2ZWwg
dGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgZm9y
CisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKTogUmV0dXJu
cyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hpY2ggY2FuIGRldGVybWlu
ZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisgICAgICAgIHplcm8uIEZv
ciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNvcnJlY3RlZCBsYXRlci4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVu
dGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBlcnMgZm9yIHRoZSBJbWFn
ZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGlz
IHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisgICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6
ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldEFsbG93U3Vic2FtcGxpbmcp
OiBDYWxsZWQgZnJvbSBCaXRtYXBJbWFnZTo6c2V0QWxsb3dTdWJzYW1wbGluZygpLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptYXhQaXhlbHNQZXJEZWNvZGVkSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE1heFBpeGVs
c1BlckRlY29kZWRJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIFNldHRpbmcgbWF4UGl4ZWxzUGVy
RGVjb2RlZEltYWdlIHdhcyBtb3ZlZCB0byB0aGUgbm9uIENHIEltYWdlRGVjb2Rlci4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIFNoYXJlZEJ1
ZmZlciogdG8gU2hhcmVkQnVmZmVyJi4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOiBEZWxldGVkLgorICAgICAgICBUaGUgY29kZSB3
YXMgbW92ZWQgdG8gSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSgpLgorICAg
ICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOiBNYWtlIHRoZSBwcm90b3R5
cGUgb2YgdGhpcyBmdW5jdGlvbgorICAgICAgICBzdWl0YWJsZSBmb3IgQ0cgYW5kIG5vbiBDRyBj
YXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKTogRW1wdHkgZnVuY3Rpb25zIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgIAorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOiBBIG1ldyBm
dW5jdGlvbiB0byByZXR1cm4KKyAgICAgICAgd2hldGhlciB0aGUgZnJhbWUgZGVjb2RpbmcgaXMg
Y29tcGxldGUgb3Igbm90LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOiBTaW1wbGlmeSB0aGUgbG9naWMuCisgICAgICAgIAor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6IFRo
ZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KTogVGhlIGNvZGUgd2FzIG1v
dmVkIGZyb20KKyAgICAgICAgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KCkg
aW4gSW1hZ2VTb3VyY2UuY3BwLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
SW1hZ2VEZWNvZGVyKTogSW5pdGlhbGl6ZSB0aGUgbWVtYmVycyBpbiBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6IEZpeCB0aGUgYnJhY2VzIHN0
eWxlLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKTogQ2hhbmdlIHRo
ZSB0eXBlIG9mIHRoZSBhcmd1bWVudCBmcm9tCisgICAgICAgIFNoYXJlZEJ1ZmZlciogdG8gU2hh
cmVkQnVmZmVyJi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJ
bmRleCk6IEFkZCB0aGUgYXJndW1lbnQgU3Vic2FtcGxpbmdMZXZlbAorICAgICAgICBzbyBpdCBj
YW4gaGF2ZSB0aGUgc2FtZSBwcm90b3R5cGUgYXMgQ0cuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6IFJlbmFtZSBpdCB0byB0aGUgc2FtZSBvZiBD
Ry4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmFsbG93U3Vic2Ft
cGxpbmdPZkZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6IEFkZCB0aGVzZSBmdW5jdGlvbnMK
KyAgICAgICAgYW5kIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMgc28gd2UgZG8gbm90IGhhdmUg
dG8gYWRkIGRpcmVjdGl2ZSBjb21waWxlZAorICAgICAgICBub24gQ0cgYmxvY2tzIGluIEltYWdl
U291cmNlLmNwcC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Om9y
aWVudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
TWF4TnVtUGl4ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
TVBJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5oOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIFVzZSByZWZlcmVu
Y2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgcG9pbnRlciBTaGFyZWRCdWZmZXIuCisKIDIwMTYt
MDQtMDkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCBmdW5jdGlvbmFsIDpob3N0KCkgcHNldWRvIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGY1YzY2MzVjYzExZDNmY2YzNGZiNmZkMzM5NTJhNTcwYWY5NjhkM2MuLmRiMTg2NzI1Yjkz
MDY4M2RlY2Y4ZWE2NTlmZWM0YmI3Mzc0M2IzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MjEzLDYgKzIyMTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ludFNpemUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2lu
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCBjNjcy
Y2M3MDdmYTg3ODViYTUyNzQ0MmU5MDRiMWNmYWRiMjUxNWFjLi4wOWM4MDk0ZTc3YzRiZjMyYWNm
NDdhYTkzZTlkYmFlOTk2Mjk3ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21h
a2UKQEAgLTcyLDcgKzcyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRS
ZWN0Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGI3MmYyZTE1YzhiNTJlYWUx
YTNlNmQ2YTRlYTZhZDEyYjEyYTI4ZTguLmFlYTM1NzEwNTkwOWI3YzdlZTIwNTUyNzU5ZWFjOTlm
NDU2ZDVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC00MDYsNyArNDA2LDYgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NWY2Mjg2
YjYzNDlkMmY5NDc1OWUyYTNiNGUwMzcwMmUyOTdiMDBjLi4yNTg5YzM1MWVhNTk3NTk5ZWU4YTA3
MDExZTYwZmIzYTc1YTIyM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTg2LDcgKzQ5ODYsNiBAQAogCQlCMjc1MzU1QTBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
UmVjdENHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NUIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6
ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
NzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi87IH07CiAJCUIyNzUz
NTVFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFn
ZUNHLmNwcCAqLzsgfTsKLQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNl
Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3
NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovOyB9OwogCQlCMjc1
MzU2MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyog
SW50UG9pbnRDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRS
ZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjI3NTM1MzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi87IH07CiAJCUIyNzUz
NTYyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemVDRy5jcHAgKi87IH07CkBAIC0xMjg3Nyw3ICsxMjg3Niw2IEBACiAJCUIyNzUzNTJDMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRmxvYXRSZWN0Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjc1MzUyRDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0U2l6ZUNHLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQ0cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyog
SW1hZ2VTb3VyY2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW1hZ2VTb3VyY2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMy
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnRQb2ludENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjI3NTM1MzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UmVjdENHLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50U2l6ZUNHLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzg1LDcgKzIxNzgzLDYgQEAKIAkJCQlC
Mjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8sCiAJCQkJNTU1Qjg3RUEx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLywKIAkJCQk1NTVCODdFQjFD
QUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAqLywKLQkJCQlCMjc1MzUzMTBCMDUz
ODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi8sCiAJCQkJNEIzNDgwOTIwRUVGNTBE
NDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5MTBFRUY1MEQ0MDBB
QzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUzMjBCMDUzODE0MDAy
Q0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0zMDAwNCw3ICszMDAwMSw2IEBACiAJCQkJ
MkQ1QTU5MkYxNTI1MjUyMzAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjUxQTJGNDExN0Q3RDVERTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRy
b2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQzcyNUUxOTc0ODc0QjAwQUVERDBDIC8q
IEltYWdlU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUzNTVGMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRCMzQ4MDkzMEVF
RjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzE2RkUxMTcwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJFOTYxQzU0MThBRDMzODUwMEQwN0RDNSAvKiBJbmJhbmREYXRhVGV4dFRy
YWNrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDBkMTAwOTYxZmYyNzYxNTM2OTk1MGZjYmJmZTFl
YzVlYzgzMTg0ZmYuLmM4YWE5NTAzMmYzNjJiZmQyZmMxODY3N2RhYmZjMzY4YmRiODQ3ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTAsIDIwMTEsIDIw
MTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28udWs+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYwpAQCAtMjksMTkgKzI5LDE2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKIAotI2lm
ICFVU0UoQ0cpCi0KKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKKyNl
bHNlCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKIAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotdW5z
aWduZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlID0gMTAyNCAqIDEw
MjQ7Ci0jZW5kaWYKLQogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9hbHBoYU9wdGlvbihhbHBo
YU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24oZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCkBAIC01MCwxNCArNDcsMjEgQEAgSW1hZ2VTb3VyY2U6OkltYWdlU291
cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6Okdh
bW0KIAogSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiB7Ci0gICAgY2xlYXIodHJ1ZSk7CiB9
CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFy
QmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlU291cmNlOjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3Jl
RnJhbWUpCit7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7Cit9CisK
K3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1lcywgc2l6ZV90IGNs
ZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7Ci0gICAgaWYgKCFkZXN0cm95QWxsKSB7Ci0gICAgICAgIGlmIChtX2RlY29kZXIpCi0gICAg
ICAgICAgICBtX2RlY29kZXItPmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1l
KTsKKyAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheSB0aGUgZGVjb2RlciB1bmxl
c3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZAorICAgIC8vIHRvIGRlc3Ryb3kgYWxsIG9mIHRoZSBm
cmFtZXMuCisgICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKSB7CisgICAgICAgIGNsZWFyRnJhbWVC
dWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNjcsMjAgKzcxLDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFs
bCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlcioKICAgICAgICAgc2V0RGF0
YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlU291cmNlOjplbnN1cmVE
ZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OmVu
c3VyZURlY29kZXJJc0NyZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlm
IChpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgLy8gTWFrZSB0aGUg
ZGVjb2RlciBieSBzbmlmZmluZyB0aGUgYnl0ZXMuCi0gICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBl
eGFtaW5lIHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9w
cmlhdGUgZGVjb2RlciBwbHVnaW4uCi0gICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBh
dmFpbGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3
aWxsIGJlCi0gICAgLy8gbWFkZS4KLSAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0
ZSgqZGF0YSwgbV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0j
aWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBpZiAobV9kZWNvZGVy
ICYmIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKQotICAgICAgICBtX2RlY29kZXItPnNldE1h
eE51bVBpeGVscyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7Ci0jZW5kaWYKKyAgICBtX2Rl
Y29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBtX2FscGhhT3B0aW9uLCBtX2dhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAtODgsNyArODQsNyBA
QCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChkYXRhKTsKKyAgICBlbnN1cmVEZWNvZGVySXNDcmVhdGVk
KCpkYXRhKTsKICAgICAKICAgICBpZiAoIWluaXRpYWxpemVkKCkpIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC05NiwyMiArOTIsNDYgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAog
ICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0YShkYXRhLCBhbGxE
YXRhUmVjZWl2ZWQpOworICAgICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFS
ZWNlaXZlZCk7CiB9Ci0KLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBj
b25zdAorICAgIAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2FsY3VsYXRlTWF4aW11
bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAogewotICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2Rl
Y29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKKyAgICBpZiAoIW1fYWxsb3dT
dWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KDApKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhpcyB2YWx1ZSB3YXMgY2hvc2VuIHRv
IGJlIGFwcHJvcHJpYXRlIGZvciBpT1Mgc2luY2UgdGhlIGltYWdlCisgICAgLy8gc3Vic2FtcGxp
bmcgaXMgb25seSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gaU9TLiBDaG9vc2UgYSBkaWZmZXJlbnQg
dmFsdWUKKyAgICAvLyBpZiBpbWFnZSBzdWJzYW1wbGluZyBpcyBlbmFibGVkIG9uIG90aGVyIHBs
YXRmb3JtLgorICAgIGNvbnN0IGludCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5n
ID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgbWF4U3Vic2Ft
cGxpbmdMZXZlbCA9IDM7CisgICAgCisgICAgZm9yIChTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwgPSAwOyBzdWJzYW1wbGluZ0xldmVsIDwgbWF4U3Vic2FtcGxpbmdMZXZlbDsgKytz
dWJzYW1wbGluZ0xldmVsKSB7CisgICAgICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXpl
QXRJbmRleCgwLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAgICAgaWYgKGZyYW1lU2l6ZS5hcmVh
KCkgPCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQorICAgICAgICAgICAgcmV0
dXJuIHN1YnNhbXBsaW5nTGV2ZWw7CisgICAgfQorICAgIAorICAgIHJldHVybiBtYXhTdWJzYW1w
bGluZ0xldmVsOwogfQogCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0CitTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNl
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIDA7CisgICAgaWYgKHNjYWxlIDw9IDAgfHwgc2NhbGUgPiAxKQorICAgICAgICByZXR1cm4g
MDsKKyAgICAKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsID0g
Y2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKTsKKyAgICBpZiAoIW1heGltdW1TdWJz
YW1wbGluZ0xldmVsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRoZXJlIGFyZSBmb3Vy
IHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAxID0gMC41eCwgMiA9IDAuMjV4LCAzID0gMC4x
MjV4LgorICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9nMmYoMSAvIHNjYWxl
KSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwp
OwogfQogCi1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgo
c2l6ZV90KSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWlu
ZVByb3BlcnRpZXMoKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gSW1hZ2VEZWNv
ZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKIH0KIAogYm9vbCBJbWFn
ZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKQEAgLTEyOSw5NyArMTQ5LDY5IEBAIEludFNpemUg
SW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAogICAgIHJldHVy
biBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAot
SW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbikgY29uc3QKK3NpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4geyB9OwotCi0g
ICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4KTsKLSAg
ICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRhdGlvbigp
OwotICAgIAotICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8g
c2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0
SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK2ludCBJbWFnZVNvdXJjZTo6cmVwZXRp
dGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmhv
dFNwb3QoaG90U3BvdCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJl
cGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJj
ZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKK1N0cmluZyBJbWFn
ZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAwOworICAg
IHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpIDog
U3RyaW5nKCk7CiB9CiAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKK2Jvb2wg
SW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0Fu
aW1hdGlvbk5vbmU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5ob3RT
cG90KGhvdFNwb3QpOwogfQogCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25z
dAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgp
CiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6
IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxl
dGVBdEluZGV4KGluZGV4KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKK2Jvb2wg
SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBp
ZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gWmVy
by1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gIElmIHdl
IGhhdmUgYW4KLSAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KLSAgICBp
ZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbWFn
ZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0g
ICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVt
cHR5KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gIWluaXRpYWxpemVkKCkg
fHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Cit9CiAKLSAgICAvLyBS
ZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gIEZvciBzb21lIHBv
cnRzLCB0aGUgZGF0YQotICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUgY29udGFpbmVyLCBh
bmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgotICAgIHJldHVybiBidWZmZXIt
PmFzTmV3TmF0aXZlSW1hZ2UoKTsKK2Jvb2wgSW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdP
ZkZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGluaXRpYWxp
emVkKCkgJiYgbV9kZWNvZGVyLT5hbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoaW5kZXgp
OwogfQogCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQorSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAogewogICAgIGlmICgh
aW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZm
ZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZm
ZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8vIE1hbnkgYW5ub3lpbmcg
YWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2ts
eSBhcyBwb3NzaWJsZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1
c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5Ci0gICAg
Ly8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBh
bmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRp
b24uCi0gICAgY29uc3QgZmxvYXQgZHVyYXRpb24gPSBidWZmZXItPmR1cmF0aW9uKCkgLyAxMDAw
LjBmOwotICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAgcmV0dXJuIDAuMTAwZjsK
LSAgICByZXR1cm4gZHVyYXRpb247CisgICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFt
ZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uID0gb3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4g
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24g
JiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUo
KSA6IHNpemU7CiB9CiAKLUltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9u
QXRJbmRleChzaXplX3QpIGNvbnN0Cit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9u
KCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpLmFyZWEoKSAqIDQ7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6
OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKK2Zsb2F0IEltYWdlU291cmNlOjpm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuICFpbml0aWFs
aXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAgIHJl
dHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRl
eCkgOiAwOwogfQogCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNp
emVfdCBpbmRleCkKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXIt
PmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXIt
PnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgcmV0dXJuIGluaXRp
YWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCkgOiBJbWFnZU9y
aWVudGF0aW9uKCk7CiB9Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CisgICAgCitOYXRpdmVJbWFn
ZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxp
emVkKCkgPyBtX2RlY29kZXItPmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KSA6IDA7CisgICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6
OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CkBAIC0yMzMsNSArMjI1LDMgQEAgdm9pZCBJbWFn
ZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIH0KICAgICAKIH0KLQotI2VuZGlm
IC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oCmluZGV4IGNkOWIzOWRhYTFjODVlMTgwZjJjNjQxNWEwZWQyM2YzZTRkNzc3YTQuLjUw
NzJhMjFjYTk3ZWQ1NTNkZmZmYzFlMGY5YjkxYzk1ODE3NWVkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAxMCwgMjAxMiwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0zNSwxMSArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLXR5cGVkZWYgc3RydWN0
IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBf
X0NGRGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSW1hZ2VPcmllbnRhdGlvbjsKQEAgLTgzLDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICBH
YW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQKICAgICB9OwogCi0gICAgSW1hZ2VTb3VyY2UoQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24gPSBBbHBoYVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xvclBy
b2ZpbGVBcHBsaWVkKTsKKyAgICBJbWFnZVNvdXJjZShBbHBoYU9wdGlvbiA9IEFscGhhUHJlbXVs
dGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmls
ZUFwcGxpZWQpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCiAgICAgLy8gVGVsbHMgdGhlIEltYWdl
U291cmNlIHRoYXQgdGhlIEltYWdlIG5vIGxvbmdlciBjYXJlcyBhYm91dCBkZWNvZGVkIGZyYW1l
CkBAIC0xMDcsNzYgKzEwMiw2MSBAQCBwdWJsaWM6CiAgICAgLy8gd2hvIHNldCB8ZGVzdHJveUFs
bHwgdG8gdHJ1ZSBpZiB0aGV5IHdpc2ggdG8gYmUgYWJsZSB0byBjb250aW51ZSB1c2luZwogICAg
IC8vIHRoZSBJbWFnZVNvdXJjZS4gIFRoaXMgd2F5IGltcGxlbWVudGF0aW9ucyB3aGljaCBjaG9v
c2UgdG8gZGVzdHJveSB0aGVpcgogICAgIC8vIGRlY29kZXJzIGluIHNvbWUgY2FzZXMgY2FuIHJl
Y29uc3RydWN0IHRoZW0gY29ycmVjdGx5LgotICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxs
LAotICAgICAgICAgICAgICAgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLAotICAgICAgICAg
ICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gTlVMTCwKLSAgICAgICAgICAgICAgIGJvb2wgYWxs
RGF0YVJlY2VpdmVkID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxsLCBz
aXplX3QgY2xlYXJCZWZvcmVGcmFtZSA9IDAsIFNoYXJlZEJ1ZmZlciogZGF0YSA9IG51bGxwdHIs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOwogCiAgICAgYm9vbCBpbml0aWFsaXplZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIFN0cmluZyBmaWxl
bmFtZUV4dGVuc2lvbigpIGNvbnN0OwogCiAgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09m
RnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbGxvd1N1YnNhbXBsaW5n
KGJvb2wgYWxsb3dTdWJzYW1wbGluZykgeyBtX2FsbG93U3Vic2FtcGxpbmcgPSBhbGxvd1N1YnNh
bXBsaW5nOyB9Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgp
IGNvbnN0OwotCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICBzdGF0aWMgc2l6ZV90
IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwogICAgIAorICAgIGJvb2wgaXNT
aXplQXZhaWxhYmxlKCk7CiAgICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhvdXQgc3Vi
c2FtcGxpbmcuCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgSW50U2l6ZSBzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gU2l6ZSBvZiBvcHRpb25h
bGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERv
Tm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwotCi0gICAgYm9vbCBnZXRIb3RTcG90
KEludFBvaW50JikgY29uc3Q7Ci0KLSAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQ
cm9wZXJ0aWVzKCkgY29uc3Q7Ci0KLSAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCk7CiAKICAgICBz
aXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OworICAgIGludCByZXBldGl0aW9uQ291bnQoKTsKKyAg
ICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICBib29sIGdldEhvdFNwb3Qo
SW50UG9pbnQmKSBjb25zdDsKIAotICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMg
YWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7Ci0gICAgLy8gc2VlIGNv
bW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7Ci0KLSAgICBmbG9hdCBm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55
IGFscGhhLgogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOyAvLyBXaGV0
aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVkLgotICAgIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ug
b3JpZW50YXRpb24KLQorICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8g
V2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgorICAgIGJv
b2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgCisg
ICAgLy8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCisgICAgSW50U2l6ZSBm
cmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0Owor
ICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZy
YW1lLiBJZiB0aGUgZnJhbWUgaXMgbm90IHlldAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4g
MC4KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSAwKSBjb25zdDsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcp
Ci0gICAgc3RhdGljIHVuc2lnbmVkIG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJu
IHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0TWF4UGl4
ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2lnbmVkIG1heFBpeGVscykgeyBzX21heFBpeGVsc1BlckRl
Y29kZWRJbWFnZSA9IG1heFBpeGVsczsgfQotI2VuZGlmCi0KKyAgICAKKyAgICBmbG9hdCBmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOworICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KKyAgICAK
KyAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIo
KSB3aXRoIGEgaGlnaGVyIGluZGV4OworICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFi
b3ZlLgorICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIGVuc3VyZURl
Y29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KTsKKyAgICB2b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoY29uc3QgU2hh
cmVkQnVmZmVyJik7CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBjYWxjdWxhdGVNYXhpbXVtU3Vic2Ft
cGxpbmdMZXZlbCgpIGNvbnN0OwogICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Q7CiAg
ICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgIAor
CisgICAgLy8gVGhlIGRlZmF1bHQgdmFsdWUgb2YgbV9hbGxvd1N1YnNhbXBsaW5nIHNob3VsZCBi
ZSB0aGUgc2FtZSBhcyBkZWZhdWx0SW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQgaW4gU2V0dGluZ3Mu
Y3BwCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIHsgdHJ1
ZSB9OwogI2Vsc2UKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyB7IGZhbHNlIH07CiAjZW5k
aWYKIAotI2lmICFVU0UoQ0cpCiAgICAgQWxwaGFPcHRpb24gbV9hbHBoYU9wdGlvbjsKICAgICBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOwot
I2VuZGlmCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBzdGF0
aWMgdW5zaWduZWQgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7Ci0jZW5kaWYKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcAppbmRleCA3ZmJkMzQxYjk4OGRjMjVkNmQxZjExZDhlYTM2N2EzNjlkMGRkYjQ1
Li41OTBmNjFjYzU5NzdkNjZmZTRhOTVhM2M4ZTBjZTFkMDU0ZGIxNjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CkBAIC0xMjIsMTUgKzEyMiw2IEBAIEltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKCkKICAgICBt
X25hdGl2ZURlY29kZXIgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbmNyZW1lbnRhbChu
dWxscHRyKSk7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwpCi17Ci0gICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxz
OiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCi0gICAgZmxvYXQgY2xh
bXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBzdGQ6Om1pbjxmbG9hdD4oMSwgc2Nh
bGUpKTsKLSAgICBTdWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9IGNlaWxmKGxvZzJmKDEgLyBjbGFt
cGVkU2NhbGUpKTsKLSAgICBBU1NFUlQocmVzdWx0ID49MCAmJiByZXN1bHQgPD0gMyk7Ci0gICAg
cmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwotfQotCiBz
aXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQog
ewogICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcgbWFsbG9jL2NhbGxvYyBjYWxscyBvbiBNYWMg
T1MgMTAuNi42LCB4ODZfNjQuCkBAIC0zODYsMjEgKzM3NywyMSBAQCB2b2lkIEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShDRkRhdGFSZWYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgQ0dJ
bWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLCBhbGxEYXRh
UmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXI6OnNldERhdGEo
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZl
ciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mg
a25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAg
aXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IElt
YWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IHNldERhdGEoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgc2V0RGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwog
I2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRC
dWZmZXIuCi0gICAgZGF0YS0+cmVmKCk7CisgICAgZGF0YS5yZWYoKTsKICAgICAvLyBXZSB1c2Ug
dGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBv
aW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBh
IHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQg
d29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUg
R2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFj
a3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQ
b3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVj
dChkYXRhLCBkYXRhLT5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwog
ICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgp
LCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5o
CmluZGV4IDhjNmE5ZTIyNzgwNDNmYTVhYzcyMTI2MTdmMWUwOTMxNDcxZmQ0YjQuLjNlYTUyYTEy
ZTY5NGRlN2ViMTgzNzA3NzczNWI1Njc0OTQ2Mjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMjksMTkgKzI5
LDIxIEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIK
IAordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsKK3R5cGVk
ZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFnZURlY29kZXIoKTsK
ICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKCkK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SW1hZ2VEZWNvZGVyPigpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwotICAgIHN0YXRpYyBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdM
ZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgCiAgICAgU3RyaW5nIGZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBjb25zdDsKQEAg
LTY0LDcgKzY2LDkgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgCiAgICAgdm9p
ZCBzZXREYXRhKENGRGF0YVJlZiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgc2V0
RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAKKyAgICB2b2lk
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQogICAgIAogcHJvdGVjdGVkOgogICAg
IG11dGFibGUgSW50U2l6ZSBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0OWQ0ZTE1YzlmZmU3OTBjMmU2ODUyNDZmZThmODVlYjU2MTYwODNhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MjE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkltYWdlU291cmNlLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5o
IgotCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0
aW9uLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1h
Z2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotewotICAgIC8vIEZJWE1FOiBB
bHBoYU9wdGlvbiBhbmQgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gYXJlIGlnbm9yZWQuCi19
Ci0KLUltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQotewotICAgIGNsZWFyKHRydWUpOwotfQot
Ci12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGxGcmFtZXMsIHNpemVfdCwg
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICAvLyBSZWNl
bnQgdmVyc2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBm
cmFtZXMgaWYgdGhlIGNsaWVudAotICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxvbmdlciBob2xkcyBy
ZWZlcmVuY2VzIHRvIHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5Ci0gICAg
Ly8gdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQgdG8gZGVzdHJveSBh
bGwgb2YgdGhlIGZyYW1lcy4KLSAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fZGVjb2RlciA9IG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKGRhdGEpCi0g
ICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLSAgICAKLXZvaWQgSW1h
Z2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKikKLXsKLSAgICBp
ZiAoaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZGVjb2RlciA9IEltYWdl
RGVjb2Rlcjo6Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICBpZiAoIWRhdGEpCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKGRhdGEpOwot
ICAgIAotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBtX2RlY29kZXItPnNldERh
dGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLQotU3RyaW5nIEltYWdlU291cmNlOjpmaWxl
bmFtZUV4dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2Rl
Y29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKLX0KLSAgICAKLVN1YnNhbXBs
aW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkg
Y29uc3QKLXsKLSAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGlu
Z09mRnJhbWVBdEluZGV4KDApKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFZhbHVlcyBj
aG9zZW4gdG8gYmUgYXBwcm9wcmlhdGUgZm9yIGlPUy4KLSAgICBjb25zdCBpbnQgY01heGltdW1J
bWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBjb25zdCBT
dWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwotCi0gICAgU3Vic2FtcGxp
bmdMZXZlbCBjdXJyZW50TGV2ZWwgPSAwOwotICAgIGZvciAoIDsgY3VycmVudExldmVsIDw9IG1h
eFN1YnNhbXBsaW5nTGV2ZWw7ICsrY3VycmVudExldmVsKSB7Ci0gICAgICAgIEludFNpemUgZnJh
bWVTaXplID0gZnJhbWVTaXplQXRJbmRleCgwLCBjdXJyZW50TGV2ZWwpOwotICAgICAgICBpZiAo
ZnJhbWVTaXplLmFyZWEoKSA8IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3VycmVudExldmVsOwotfQot
ICAgIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2
ZWwoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gY2FsY3VsYXRlTWF4
aW11bVN1YnNhbXBsaW5nTGV2ZWwoKTsKLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1TdWJz
YW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQg
c2NhbGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZl
bEZvclNjYWxlKHNjYWxlLCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpKTsKLX0KLQotYm9vbCBJ
bWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQo
KSAmJiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwotfQotCi1ib29sIEltYWdlU291cmNl
OjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewot
ICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGluZ09m
RnJhbWVBdEluZGV4KGluZGV4KTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXpl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwg
UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KSBjb25zdAotewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICAKLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24g
PSBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgCi0gICAgcmV0dXJu
IHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
ICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXpl
KCkgOiBzaXplOwotfQotCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgp
ID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogSW1hZ2VPcmllbnRhdGlv
bigpOwotfQotCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLX0KLSAgICAKLUludFNpemUgSW1hZ2VTb3VyY2U6
OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZVNp
emVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKLX0KLQotYm9vbCBJbWFn
ZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKLXsKLSAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmhvdFNwb3QoaG90U3BvdCk7Ci19Ci0KLXNp
emVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVBy
b3BlcnRpZXMoKTsKLX0KLSAgICAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkK
LXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50
KCkgOiBjQW5pbWF0aW9uTG9vcE9uY2U7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVD
b3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZy
YW1lQ291bnQoKSA6IDA7Ci19Ci0KLVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZVNvdXJjZTo6
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxw
dHI7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90
IGluZGV4KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+ZnJhbWVJ
c0NvbXBsZXRlQXRJbmRleChpbmRleCk7Ci19Ci0KLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1
cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkg
PyBtX2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KSA6IDA7Ci19Ci0KLWJvb2wg
SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICBy
ZXR1cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChp
bmRleCk7Ci19Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKLXsKLSAg
ICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5n
TGV2ZWwpOwotICAgIHJldHVybiBmcmFtZVNpemUuYXJlYSgpICogNDsKLX0KLSAgICAKLXZvaWQg
SW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fYWxs
b3dTdWJzYW1wbGluZykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbGxvdy1zdWJzYW1wbGlu
ZyIsIG1fYWxsb3dTdWJzYW1wbGluZyk7Ci0gICAgCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiA9IG9yaWVudGF0aW9uQXRJbmRleCgwKTsKLSAgICBpZiAob3JpZW50YXRpb24gIT0g
T3JpZ2luVG9wTGVmdCkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvcmllbnRhdGlvbiIsIG9y
aWVudGF0aW9uKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggNmZlMjkwZTIyNjE4ZmJkNzZjNzVjODQ0OTI0NDcyZTMxOTdmZmY4Ny4uY2YxMTc1ZDQ5MzY4
ZDQ5NjE5NmMwNDcwMjM5NTAzYjZiMzc5ODgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0xLDQgKzEs
NSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAg
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNzAsMTMgKzI3MSwxNiBAQCB0ZW1wbGF0ZSA8TWF0
Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8aW50PiYgc2NhbGVk
VmFsdWVzLCBpbgogCiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRl
eChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5zaXplKCkgPD0gaW5kZXgpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChtX2ZyYW1l
QnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUp
Ci0gICAgICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmhhc0FscGhhKCk7Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9mcmFt
ZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRl
OworfQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAoreworICAgIHJldHVybiAhZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkg
fHwgbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5oYXNBbHBoYSgpOwogfQogCiB1bnNpZ25lZCBJ
bWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKQEAgLTI4
Nyw2ICsyOTEsNDIgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChz
aXplX3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1h
Z2VGcmFtZTo6UGl4ZWxEYXRhKTsKIH0KIAorZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJD
YWNoZS5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fZnJh
bWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBNYW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEg
MCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUu
CisgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24g
b2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgIC8vIGEgZHVyYXRpb24g
b2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzM2MDgyPgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIGNvbnN0
IGZsb2F0IGR1cmF0aW9uID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5kdXJhdGlvbigpIC8g
MTAwMC4wZjsKKyAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAgICAgIHJldHVybiAwLjEw
MGY7CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29k
ZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCkgY29uc3QKK3sKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2Fu
IGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuCisgICAgLy8gZW1w
dHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCisgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtp
bmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2
ZSBpbWFnZS4gRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCisgICAgLy8gaXMgYWxyZWFkeSBpbiBh
IG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQu
CisgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uYXNOZXdOYXRpdmVJbWFnZSgp
OworfQorCiB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCkK
IHsKICAgICBtX3NjYWxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCA1MzQ3YTQ3YjcyM2NkNWYw
M2I2MmQzYjM1MmNmOTQ1MTQ3ZGEwZWFhLi4yYzAwZDEyZTQwMjE3YThhZjExNTU5NzRjMzJjOTU5
MDc2OThlNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKQEAgLTIzNSwxNSArMjM1LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJbWFnZURlY29kZXIoSW1hZ2VTb3VyY2U6
OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgICAgICAgICA6IG1fc2Nh
bGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEoYWxwaGFPcHRpb24g
PT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKKyAgICAgICAgICAgIDogbV9wcmVt
dWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxp
ZWQpCiAgICAgICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlSWdu
b3JlZCkKLSAgICAgICAgICAgICwgbV9zaXplQXZhaWxhYmxlKGZhbHNlKQotICAgICAgICAgICAg
LCBtX21heE51bVBpeGVscygtMSkKLSAgICAgICAgICAgICwgbV9pc0FsbERhdGFSZWNlaXZlZChm
YWxzZSkKLSAgICAgICAgICAgICwgbV9mYWlsZWQoZmFsc2UpIHsgfQorICAgICAgICB7CisgICAg
ICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSB7IH0KKyAgICAgICAgdmly
dHVhbCB+SW1hZ2VEZWNvZGVyKCkKKyAgICAgICAgeworICAgICAgICB9CiAKICAgICAgICAgLy8g
UmV0dXJucyBhIGNhbGxlci1vd25lZCBkZWNvZGVyIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLiAg
UmV0dXJucyAwIGlmCiAgICAgICAgIC8vIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5cGUg
ZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKQEAgLTI1NCwxMSArMjUzLDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2ZhaWxlZCkKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhOworICAgICAgICAgICAg
bV9kYXRhID0gJmRhdGE7CiAgICAgICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0
YVJlY2VpdmVkOwogICAgICAgICB9CiAKQEAgLTI4Miw3ICsyODEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIHNpemVzLiAgVGhpcyBkb2VzIE5PVCBkaWZmZXIgZnJvbSBzaXpl
KCkgZm9yIEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwogICAgICAgICAvLyBjb21wb3NpdGVzIGFu
eSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZyYW1lcyB0byBjcmVhdGUgZnVsbC0K
ICAgICAgICAgLy8gc2l6ZSBmcmFtZXMuCi0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNp
emVBdEluZGV4KHNpemVfdCkgY29uc3QKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIGZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gc2l6ZSgpOwogICAgICAgICB9CkBAIC0zMTAsMTYgKzMwOSwyNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2Rlci1vd25lZCBwb2ludGVy
LgogICAgICAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3Qp
ID0gMDsKIAorICAgICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25z
dDsKKwogICAgICAgICAvLyBNYWtlIHRoZSBiZXN0IGVmZm9ydCBndWVzcyB0byBjaGVjayBpZiB0
aGUgcmVxdWVzdGVkIGZyYW1lIGhhcyBhbHBoYSBjaGFubmVsLgotICAgICAgICB2aXJ0dWFsIGJv
b2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgYm9vbCBmcmFt
ZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgICAgIC8vIE51bWJlciBvZiBi
eXRlcyBpbiB0aGUgZGVjb2RlZCBmcmFtZSByZXF1ZXN0ZWQuIFJldHVybiAwIGlmIG5vdCB5ZXQg
ZGVjb2RlZC4KLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXpl
X3QpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QpIGNv
bnN0OworICAgICAgICAKKyAgICAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90
KSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAKICAgICAgICAgdm9p
ZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsgbV9pZ25vcmVHYW1t
YUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRD
b2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
OyB9CiAKLSAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgICAg
IAorICAgICAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgZW51bSB7IGljY0NvbG9yUHJvZmlsZUhl
YWRlckxlbmd0aCA9IDEyOCB9OwogCkBAIC0zMzAsNiArMzM3LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0YVsxNl0sICJSR0Ig
IiwgNCk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRv
RGV0ZXJtaW5lUHJvcGVydGllcygpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgCisgICAgICAgIHN0
YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCwgU3Vi
c2FtcGxpbmdMZXZlbCkgeyByZXR1cm4gMDsgfQorCiAgICAgICAgIHN0YXRpYyBib29sIGlucHV0
RGV2aWNlQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25lZCBwcm9m
aWxlTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHByb2ZpbGVM
ZW5ndGgsIHByb2ZpbGVMZW5ndGggPj0gaWNjQ29sb3JQcm9maWxlSGVhZGVyTGVuZ3RoKTsKQEAg
LTM1NCwxMCArMzY1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBjb21wb3Np
dGluZykuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
KSB7IH0KIAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgICAg
IHZvaWQgc2V0TWF4TnVtUGl4ZWxzKGludCBtKSB7IG1fbWF4TnVtUGl4ZWxzID0gbTsgfQotI2Vu
ZGlmCi0KICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3Rv
cmVzIGl0IGluIHRoZSBhcmd1bWVudAogICAgICAgICAvLyBhbmQgcmV0dXJucyB0cnVlLiBPdGhl
cndpc2UgcmV0dXJucyBmYWxzZS4KICAgICAgICAgdmlydHVhbCBib29sIGhvdFNwb3QoSW50UG9p
bnQmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzc0LDcgKzM4MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgVmVjdG9yPEltYWdlRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJD
YWNoZTsKICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55IG1v
cmUsIGZvciBhbnkgcG9ydD8KICAgICAgICAgQ29sb3JQcm9maWxlIG1fY29sb3JQcm9maWxlOwot
ICAgICAgICBib29sIG1fc2NhbGVkOworICAgICAgICBib29sIG1fc2NhbGVkIHsgZmFsc2UgfTsK
ICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwogICAgICAgICBWZWN0b3I8aW50
PiBtX3NjYWxlZFJvd3M7CiAgICAgICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwpAQCAtMzky
LDEwICszOTksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAg
SW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlOwotICAgICAgICBp
bnQgbV9tYXhOdW1QaXhlbHM7Ci0gICAgICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZDsKLSAg
ICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAgICAgICAgYm9vbCBtX3NpemVBdmFpbGFibGUgeyBmYWxz
ZSB9OworI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgICAgIHN0
YXRpYyBjb25zdCBpbnQgbV9tYXhOdW1QaXhlbHMgeyAxMDI0ICogMTAyNCB9OworI2Vsc2UKKyAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IC0xIH07CisjZW5kaWYKKyAg
ICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBt
X2ZhaWxlZCB7IGZhbHNlIH07CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAzZDc2YmMyYTk3NGRlYWY3MzE4ZDU3MGIxZWVj
MzE2MjYwOTk4MDY1Li5jYWYzNWM5N2YxN2VkZDM0YmM5ZGY4OWFiMDllODcwMGFlZTZjN2RmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsMTQgKzQ3LDE0IEBAIEJNUEltYWdl
RGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYg
KGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBJbWFnZURlY29kZXI6OnNldERhdGEo
ZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBpZiAobV9yZWFkZXIpCi0gICAgICAgIG1fcmVh
ZGVyLT5zZXREYXRhKGRhdGEpOworICAgICAgICBtX3JlYWRlci0+c2V0RGF0YSgmZGF0YSk7CiB9
CiAKIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5oCmluZGV4IDFjODgyZTEzOTk1MmU0NzQ4MzJiY2JjMjIwNTBhNjBmYjRmZmJiOTcu
LmIyYzQ3ODk1NjE5YmVjYWYyNWQxMGEzMGMyZTgzYWUzNTU4ODc2YzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IHsgcmV0dXJuICJibXAiOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1YWwgSW1h
Z2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCk7CiAgICAgICAgIC8vIENB
VVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gIEJlIGNhcmVmdWwgdG8gYXZv
aWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggY2Q1NmU2N2ViOTE4YjE2OTNjNGVj
Y2Y3NDBhZjgwYzg1OTM2YTc5OC4uNzkxNTE1NjA3MmQ3MTcwNDQzNzI1NzMwNmIwOTU5MDhmMzQ5
ODkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTQyLDE0ICs0MiwxNCBAQCBH
SUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKQogewogfQogCi12b2lkIEdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAg
IGlmIChtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXItPnNldERhdGEoZGF0YSk7CisgICAgICAg
IG1fcmVhZGVyLT5zZXREYXRhKCZkYXRhKTsKIH0KIAogYm9vbCBHSUZJbWFnZURlY29kZXI6Omlz
U2l6ZUF2YWlsYWJsZSgpCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6
OmRlY29kZSh1bnNpZ25lZCBoYWx0QXRGcmFtZSwgR0lGUXVlcnkgcXVlcnkpCiAKICAgICBpZiAo
IW1fcmVhZGVyKSB7CiAgICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHSUZJbWFn
ZVJlYWRlcj4odGhpcyk7Ci0gICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YSk7CisgICAg
ICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKHF1
ZXJ5ID09IEdJRlNpemVRdWVyeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IDQwNjEw
ODk1Mzk1ZDliMTJjYzY5ZDE5MWNjMzA1MjIwOWNjMDY4NzIuLmM0YzQ5YWMzNGU4YzgyY2EyOTAz
OGFjZWRjMDM5ZjU5MGYzODFiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQyLDcg
KzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEltYWdlRGVjb2Rlcgog
ICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJu
ICJnaWYiOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICAgICAgdmlydHVh
bCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZSh1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKICAgICAgICAgdmlydHVhbCBzaXplX3Qg
ZnJhbWVDb3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCBmYjg3OGVkMDhlMjhkNDAy
ZWVmMzcwZGNhMzkyY2Y5ZjI2ZWQwNDY5Li5lYTQyYjExYTc4YzM4ZWJlNjVjMmMyOGI5MWM4YWZi
NjI2MzVhOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBkYXRhKSB7IG1fZGF0YSA9IGRhdGE7IH0KKyAgICB2b2lkIHNldERh
dGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBkYXRhKSB7IG1fZGF0YSA9IGRhdGE7IH0KICAgICAv
LyBGSVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNpemVfdC4KICAgICBib29sIGRlY29kZShX
ZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNTZhYzkyMWNkMDg0NjgyM2I4MTEx
OGVhNmYzYWRmMjExZGE3YTA4NS4uYTBmZDg2NDE4MWIzYzY4MzMwYzNhZDU5NWNhZGVjYTFlNDQ3
MmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgSUNP
SW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkKIHsKIH0KIAotdm9pZCBJQ09JbWFnZURl
Y29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CkBA
IC02NCw3ICs2NCw3IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKICAgICBmb3IgKEJNUFJlYWRlcnM6Oml0
ZXJhdG9yIGkobV9ibXBSZWFkZXJzLmJlZ2luKCkpOyBpICE9IG1fYm1wUmVhZGVycy5lbmQoKTsg
KytpKSB7CiAgICAgICAgIGlmICgqaSkKLSAgICAgICAgICAgICgqaSktPnNldERhdGEoZGF0YSk7
CisgICAgICAgICAgICAoKmkpLT5zZXREYXRhKCZkYXRhKTsKICAgICB9CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3BuZ0RlY29kZXJzLnNpemUoKTsgKytpKQogICAgICAgICBzZXREYXRh
Rm9yUE5HRGVjb2RlckF0SW5kZXgoaSk7CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBJQ09JbWFn
ZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAg
Ly8gRklYTUU6IFNhdmUgdGhpcyBjb3B5IGJ5IG1ha2luZyB0aGUgUE5HIGRlY29kZXIgYWJsZSB0
byB0YWtlIGFuCiAgICAgLy8gb3B0aW9uYWwgb2Zmc2V0LgogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2RpckVudHJ5
Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQp
KTsKLSAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YShwbmdEYXRhLmdldCgpLCBpc0Fs
bERhdGFSZWNlaXZlZCgpKTsKKyAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YSgqcG5n
RGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUoc2l6ZV90IGluZGV4LCBib29sIG9ubHlTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
CmluZGV4IDE0OTQ3OTdhOWJmMzFjM2U2NGI4MWRiNmNlMzMzZDkxMjdmYjg5ZDguLjAxMDRkNDQy
YTRiZTJkNDQ5NGJlYmRmZGVlYzc3ZmU5OTRjMWYyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIElt
YWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNv
bnN0IHsgcmV0dXJuICJpY28iOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzaXpl
KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVf
dCkgY29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMjk2YjgzNDc5NWU5YjY4ZjJkMTU3MzQzNzE3NzA4MzI3MzFjMGY4
NS4uOWQ1YWRhOTE4OTAzYTI0ZTY5NDBjOWRjOWI2ZTU0NTAwZDcwMGFlMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI3IEBACisyMDE2LTA0LTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZSxjb20+CisKKyAgICAgICAgTWVyZ2UgQ0cgSW1hZ2VTb3VyY2UgYW5kIG5vbiBDRyBJbWFn
ZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBpbiBvbmUgZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgYSB0ZXN0IGZvciBpbWFnZSBz
dWItc2FtcGxpbmcuIFRoZSBpbWFnZSBzdWJzYW1wbGluZyBpcyBlbmFibGVkIGJ5CisgICAgICAg
IGRlZmF1bHQgZm9yIGlPUyBwbGF0Zm9ybSBvbmx5LiBCdXQgaXQgY2FuIGJlIGV4cGxpY2l0bHkg
ZW5hYmxlZCB0aHJvdWdoCisgICAgICAgIHRoZSBzZXR0aW5nIEltYWdlU3Vic2FtcGxpbmdFbmFi
bGVkLgorCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRt
bDogQWRkZWQuCisKKzIwMTYtMDQtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLGNvbT4KKworICAgICAgICBNZXJnZSBDRyBJbWFnZVNvdXJjZSBhbmQgbm9uIENHIElt
YWdlU291cmNlIGltcGxlbWVudGF0aW9uIGluIG9uZSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0NTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBs
aW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2ltYWdlLXN1
YnNhbXBsaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA0LTA5ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgZnVuY3Rpb25hbCA6aG9zdCgpIHBz
ZXVkbyBjbGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vi
c2FtcGxpbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1
YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAzMTNiZWI4ZGI3OTQxOTVhNmJl
YzIyZGYwYjgxMWM3YjIzMDkyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNiBAQAor
PCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgZGl2
IHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPGhlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CisgICAgZnVuY3Rpb24gY3JlYXRlRGl2KGNvbG9yKSB7CisgICAgICAgIHZhciBkaXZFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdkVsZW1lbnQuc3R5
bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZGl2RWxlbWVudCk7CisgICAgfQorCisgICAgY3JlYXRlRGl2KCJyZWQiKTsKKyAgICBj
cmVhdGVEaXYoImdyZWVuIik7CisgICAgY3JlYXRlRGl2KCJibHVlIik7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdl
LXN1YnNhbXBsaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1w
bGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyOGFlM2JlOWRmNTMwMWRiMmExOGQ4MjkzNGU3M2JhNWQ5
ODk0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1z
dWJzYW1wbGluZy5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGRpdiB7CisgICAgICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgbWFyZ2luOiAx
MHB4OworICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICB9CisgICAg
ICAgIGltZyB7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzxoZWFkPgorPGJvZHk+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEltYWdlU3Vic2FtcGxpbmdFbmFibGVkKHRydWUpOworCisgICAgZnVuY3Rpb24g
Y3JlYXRlSW1hZ2UoY29sb3IpIHsKKyAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImNhbnZhcyIpOworICAgICAgICBjYW52YXMud2lkdGggPSAxMDI0ICogMzsKKyAg
ICAgICAgY2FudmFzLmhlaWdodCA9IDEwMjQgKiAzOworICAgICAgICB2YXIgY3R4ID0gY2FudmFz
LmdldENvbnRleHQoIjJkIik7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb2xvcjsKKyAgICAg
ICAgY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAg
ICAgICAgdmFyIGltZ0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAg
ICAgICAgaW1nRWxlbWVudC5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKKwor
ICAgICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgICAgICBkaXZFbGVtZW50LmFwcGVuZENoaWxkKGltZ0VsZW1lbnQpOworICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdkVsZW1lbnQpOworICAgIH0KKyAgICAKKyAgICBjcmVh
dGVJbWFnZSgicmVkIik7CisgICAgY3JlYXRlSW1hZ2UoImdyZWVuIik7CisgICAgY3JlYXRlSW1h
Z2UoImJsdWUiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276125</attachid>
            <date>2016-04-10 20:20:19 -0700</date>
            <delta_ts>2016-04-10 20:27:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160410202030.patch</filename>
            <type>text/plain</type>
            <size>65445</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTViMjJmYWY4YzVmZWYw
OGEzOGVkYjk1YzM4ZmM0MTI4YTRkMjcwNC4uNjQ5MmIwNjU1NmFkZjczOTE2MzYwYTE3ZWM3NzM4
MTVhYTQ1M2ZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NCBAQAorMjAxNi0wNC0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIElt
YWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4gQWxs
IHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJbWFn
ZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNhbiBo
YXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0IHJp
ZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0L2lt
YWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5kIGFk
ZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL0N1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1p
bmVIb3RTcG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aG90U3BvdCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmhvdFNwb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldEhvdFNwb3QpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgZ2V0SG90
U3BvdCgpIHRvIGhvdFNwb3QoKSBhbmQgY2hhbmdlIGl0IHRvIHJldHVybiBPcHRpb25hbDxJbnRQ
b2ludD4uCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1v
dmUgY2xlYXIodHJ1ZSkgY2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxs
cyBJbWFnZURlY29kZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hp
Y2ggd2lsbCBkbyBub3RoaW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIq
IHRvCisgICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJ
bWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29u
c3Qgc3RhdGljIGludCBDRyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0
CisgICAgICAgIGJhc2VkIG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVm
ZmVyJiB0byB0aGUgdW5kZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0
dXJucyB0aGUgbWF4aW11bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBh
biBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2Ft
cGxpbmdMZXZlbEZvclNjYWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1
YnNhbXBsaW5nTGV2ZWwgdGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwgZm9yCisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKTogUmV0dXJucyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hp
Y2ggY2FuIGRldGVybWluZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisg
ICAgICAgIHplcm8uIEZvciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNv
cnJlY3RlZCBsYXRlci4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
aXNTaXplQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBl
cnMgZm9yIHRoZSBJbWFnZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rp
b25zCisgICAgICAgIGlzIHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisg
ICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJv
bSBCaXRtYXBJbWFnZTo6ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpnZXRIb3RTcG90KTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpzZXRBbGxvd1N1YnNhbXBsaW5nKTogQ2FsbGVkIGZyb20gQml0bWFwSW1hZ2U6OnNldEFsbG93
U3Vic2FtcGxpbmcoKS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICBTZXR0aW5nIG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSB3YXMgbW92ZWQgdG8gdGhlIG5vbiBD
RyBJbWFnZURlY29kZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
RGF0YSk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKTogRGVsZXRl
ZC4KKyAgICAgICAgVGhlIGNvZGUgd2FzIG1vdmVkIHRvIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoKS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKTogTWFrZSB0aGUgcHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgc3VpdGFi
bGUgZm9yIENHIGFuZCBub24gQ0cgY2FzZXMuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEVtcHR5IGZ1bmN0aW9ucyBmb3IgQ0cuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KTogQSBtZXcgZnVuY3Rpb24gdG8gcmV0dXJuCisgICAgICAgIHdoZXRoZXIg
dGhlIGZyYW1lIGRlY29kaW5nIGlzIGNvbXBsZXRlIG9yIG5vdC4KKyAgICAgICAgCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KTogU2ltcGxpZnkg
dGhlIGxvZ2ljLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOiBUaGUgY29kZSB3YXMgbW92ZWQgZnJvbQorICAgICAgICBJbWFn
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoKSBpbiBJbWFnZVNvdXJjZS5jcHAuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCk6IFRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6IEluaXRpYWxpemUgdGhlIG1lbWJl
cnMgaW4gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6On5JbWFnZURlY29k
ZXIpOiBGaXggdGhlIGJyYWNlcyBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6c2V0RGF0YSk6IENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgYXJndW1lbnQgZnJvbQorICAgICAg
ICBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOiBBZGQgdGhlIGFyZ3VtZW50IFN1YnNhbXBsaW5n
TGV2ZWwKKyAgICAgICAgc28gaXQgY2FuIGhhdmUgdGhlIHNhbWUgcHJvdG90eXBlIGFzIENHLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbkF0SW5kZXgpOiBSZW5h
bWUgaXQgdG8gdGhlIHNhbWUgb2YgQ0cuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUp
OiBBZGQgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGFuZCByZXR1cm4gdGhlIGRlZmF1bHQgdmFs
dWVzIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGFkZCBkaXJlY3RpdmUgY29tcGlsZWQKKyAgICAgICAg
bm9uIENHIGJsb2NrcyBpbiBJbWFnZVNvdXJjZS5jcHAuCisKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6aG90U3BvdCk6IFJldHVybiBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAg
IAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscyk6IERlbGV0
ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKEdJ
RkltYWdlUmVhZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgIFVzZSByZWZlcmVuY2UgU2hhcmVkQnVmZmVyIGluc3Rl
YWQgb2YgcG9pbnRlciBTaGFyZWRCdWZmZXIuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
SUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6aG90U3BvdEF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVy
OjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgQ2hhbmdlIGhvdFNwb3Qo
KSB0byByZXR1cm4gT3B0aW9uYWw8SW50UG9pbnQ+LgorCisyMDE2LTA0LTA4ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgVGltaW5nIGF0dGFj
ayBvbiBTVkcgZmVDb21wb3NpdGUgZmlsdGVyIGNpcmN1bXZlbnRzIHNhbWUtb3JpZ2luIHBvbGlj
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MzM4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCisKKyAgICAgICAgRW5zdXJlIHRo
ZSBGRUNvbXBvc2l0ZSBhcml0aG1ldGljIGZpbHRlciBpcyBjbGFtcGluZyB0aGUgcmVzdWx0ZWQg
Y29sb3IKKyAgICAgICAgY29tcG9uZW50cyBpbiBhIGNvbnN0YW50IHRpbWUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNsYW1wQnl0ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQXJpdGhtZXRpY1Bp
eGVscyk6CisKIDIwMTYtMDQtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmNWM2NjM1Y2MxMWQz
ZmNmMzRmYjZmZDMzOTUyYTU3MGFmOTY4ZDNjLi5kYjE4NjcyNWI5MzA2ODNkZWNmOGVhNjU5ZmVj
NGJiNzM3NDNiMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjIxMyw2ICsyMjEzLDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT3JpZW50YXRpb24uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50UmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggYzY3MmNjNzA3ZmE4Nzg1YmE1Mjc0
NDJlOTA0YjFjZmFkYjI1MTVhYy4uMDljODA5NGU3N2M0YmYzMmFjZjQ3YWE5M2U5ZGJhZTk5NjI5
N2U2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC03Miw3ICs3Miw2
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCi0gICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBv
aW50Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQppbmRleCBiNzJmMmUxNWM4YjUyZWFlMWEzZTZkNmE0ZWE2YWQxMmIx
MmEyOGU4Li5hZWEzNTcxMDU5MDliN2M3ZWUyMDU1Mjc1OWVhYzk5ZjQ1NmQ1YTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDA2LDcgKzQwNiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VTb3VyY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFj
Lm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjVmNjI4NmI2MzQ5ZDJmOTQ3NTllMmEz
YjRlMDM3MDJlMjk3YjAwYy4uMjU4OWMzNTFlYTU5NzU5OWVlOGEwNzAxMWU2MGZiM2E3NWEyMjNj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNDk4Niw3ICs0OTg2LDYgQEAKIAkJQjI3NTM1NUEwQjA1MzgxNDAwMkNFNjRGIC8q
IEZsb2F0UmVjdENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi87IH07
CiAJCUIyNzUzNTVCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyRDBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovOyB9OwogCQlCMjc1MzU1RTBCMDUzODE0MDAyQ0U2
NEYgLyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi87IH07Ci0J
CUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMxMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjAwQjA1MzgxNDAwMkNF
NjRGIC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwICov
OyB9OwogCQlCMjc1MzU2MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENHLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMzMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU2MjBCMDUzODE0MDAyQ0U2
NEYgLyogSW50U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwICovOyB9
OwpAQCAtMTI4NzcsNyArMTI4NzYsNiBAQAogCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyog
RmxvYXRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZs
b2F0UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MkQwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGbG9hdFNpemVDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlU291cmNlQ0cuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYg
LyogSW50UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW50UG9pbnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMzMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEludFJlY3RDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFNpemVDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTc4NSw3ICsyMTc4Myw2IEBACiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAw
MkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAv
KiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCiAJCQkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8q
IEltYWdlRGVjb2RlckNHLmggKi8sCi0JCQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIElt
YWdlU291cmNlQ0cuY3BwICovLAogCQkJCTRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFn
ZVNvdXJjZUNHLmggKi8sCiAJCQkJNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291
cmNlQ0dNYWMubW0gKi8sCiAJCQkJQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50
Q0cuY3BwICovLApAQCAtMzAwMDQsNyArMzAwMDEsNiBAQAogCQkJCTJENUE1OTJGMTUyNTI1MjMw
MDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1MUEy
RjQxMTdEN0Q1REUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGM0M3MjVFMTk3NDg3NEIwMEFFREQwQyAvKiBJbWFnZVNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3Vy
Y2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyog
SW1hZ2VTb3VyY2VDR01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMTE3MEU2RTFEQTcw
MEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTk2
MUM1NDE4QUQzMzg1MDBEMDdEQzUgLyogSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCmluZGV4IDYwYTYxOWFjZGExM2FhNDdi
YTEyZWIwM2I0ZTIyNWYyNDFmYzNiMmIuLjljNTkyZjM3NGIzNGU3Zjk2NzllOWRmZjQ4ZmExMGFl
NjgwMGUzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcApAQCAtNDQsMTAgKzQ0LDEw
IEBAIEludFBvaW50IGRldGVybWluZUhvdFNwb3QoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2lu
dCYgc3BlY2lmaWVkSG90U3BvdCkKICAgICAgICAgcmV0dXJuIHNwZWNpZmllZEhvdFNwb3Q7CiAK
ICAgICAvLyBJZiBob3Qgc3BvdCBpcyBub3Qgc3BlY2lmaWVkIGV4dGVybmFsbHksIGl0IGNhbiBi
ZSBleHRyYWN0ZWQgZnJvbSBzb21lIGltYWdlIGZvcm1hdHMgKGUuZy4gLmN1cikuCi0gICAgSW50
UG9pbnQgaW50cmluc2ljSG90U3BvdDsKLSAgICBib29sIGltYWdlSGFzSW50cmluc2ljSG90U3Bv
dCA9IGltYWdlLT5nZXRIb3RTcG90KGludHJpbnNpY0hvdFNwb3QpOwotICAgIGlmIChpbWFnZUhh
c0ludHJpbnNpY0hvdFNwb3QgJiYgaW1hZ2VSZWN0LmNvbnRhaW5zKGludHJpbnNpY0hvdFNwb3Qp
KQotICAgICAgICByZXR1cm4gaW50cmluc2ljSG90U3BvdDsKKyAgICBpZiAoYXV0byBpbnRyaW5z
aWNIb3RTcG90ID0gaW1hZ2UtPmhvdFNwb3QoKSkgeworICAgICAgICBpZiAoaW1hZ2VSZWN0LmNv
bnRhaW5zKGludHJpbnNpY0hvdFNwb3QudmFsdWUoKSkpCisgICAgICAgICAgICByZXR1cm4gaW50
cmluc2ljSG90U3BvdC52YWx1ZSgpOworICAgIH0KIAogICAgIHJldHVybiBJbnRQb2ludCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
CmluZGV4IGE0N2E5NzI5NTI4NTFhYTU0ZDM2MTllNjhhNmUwOTYwMzAzNjUzZWUuLjdjNzhkMzY1
YzFhNDAyZTZlYzE5NGI3NzJmNTVhOWVkYmQ2Y2RlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI1NCw5ICsyNTQsOSBAQCBJ
bnRTaXplIEJpdG1hcEltYWdlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOwogfQogCi1ib29sIEJpdG1hcElt
YWdlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAorT3B0aW9uYWw8SW50UG9p
bnQ+IEJpdG1hcEltYWdlOjpob3RTcG90KCkgY29uc3QKIHsKLSAgICBib29sIHJlc3VsdCA9IG1f
c291cmNlLmdldEhvdFNwb3QoaG90U3BvdCk7CisgICAgYXV0byByZXN1bHQgPSBtX3NvdXJjZS5o
b3RTcG90KCk7CiAgICAgZGlkRGVjb2RlUHJvcGVydGllcygpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApp
bmRleCA1MTEzZDVkNTI3NzgxNTRlYWZjZjlhMzQyN2I1MmViMTVjZmU5NjljLi43YzhlY2FjZmM2
YzYxYzk0NDRkNjFhZGQ0ZTI3OTc2Y2IyMDIxZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6
CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsKICAgICBJbnRTaXplIHNpemVS
ZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdDsKIAotICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQ
b2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjb2RlZFNpemU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKaW5kZXggYzMxNDJhZGVjN2EyNWM4NDYwZTI5YWYzNTAyYjk0MTQ3YjcwNmM3Yy4uNTBm
NzdlMzE2MjEwNzM0NmEwNzUwNjIxY2QzN2UyZWY0NzlkNjQ3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJO
YXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC0xMDcsNyArMTA4LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBy
ZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsgfQog
ICAgIGZsb2F0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpLndpZHRoKCk7IH0KICAgICBm
bG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBzaXplKCkuaGVpZ2h0KCk7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIE51
bGxvcHQ7IH0KIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBvcmln
aW5hbFNpemUoKSBjb25zdCB7IHJldHVybiBzaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCAwZDEwMDk2MWZmMjc2MTUz
Njk5NTBmY2JiZmUxZWM1ZWM4MzE4NGZmLi43ZWQ5ZmQxZDA3Njc5M2RmZjRkZjdjZDIzZDc3ZjU4
MWI4ZGFhMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDEwLCAyMDExLCAyMDEyLCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHAudG9rZXJAY29sbGFib3Jh
LmNvLnVrPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMKQEAg
LTI5LDE5ICsyOSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlU291
cmNlLmgiCiAKLSNpZiAhVVNFKENHKQotCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkltYWdlRGVj
b2RlckNHLmgiCisjZWxzZQogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorI2VuZGlmCiAKICNp
bmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKLXVuc2lnbmVkIEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJbWFn
ZSA9IDEwMjQgKiAxMDI0OwotI2VuZGlmCi0KIEltYWdlU291cmNlOjpJbWFnZVNvdXJjZShJbWFn
ZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fYWxw
aGFPcHRpb24oYWxwaGFPcHRpb24pCiAgICAgLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpAQCAtNTAsMTQgKzQ3LDIxIEBAIEltYWdlU291
cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIElt
YWdlU291cmNlOjpHYW1tCiAKIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogewotICAgIGNs
ZWFyKHRydWUpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGws
IHNpemVfdCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCBjbGVhckJlZm9yZUZyYW1lKQoreworICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3Jl
RnJhbWUpOworfQorCit2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGxGcmFt
ZXMsIHNpemVfdCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewotICAgIGlmICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9k
ZWNvZGVyKQotICAgICAgICAgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xl
YXJCZWZvcmVGcmFtZSk7CisgICAgLy8gVGhlcmUncyBubyBuZWVkIHRvIHRocm93IGF3YXkgdGhl
IGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQKKyAgICAvLyB0byBkZXN0cm95
IGFsbCBvZiB0aGUgZnJhbWVzLgorICAgIGlmICghZGVzdHJveUFsbEZyYW1lcykgeworICAgICAg
ICBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTY3LDIwICs3MSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpjbGVhcihi
b29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqCiAg
ICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNv
dXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIElt
YWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IC8vIE1ha2UgdGhlIGRlY29kZXIgYnkgc25pZmZpbmcgdGhlIGJ5dGVzLgotICAgIC8vIFRoaXMg
bWV0aG9kIHdpbGwgZXhhbWluZSB0aGUgZGF0YSBhbmQgaW5zdGFudGlhdGUgYW4gaW5zdGFuY2Ug
b2YgdGhlIGFwcHJvcHJpYXRlIGRlY29kZXIgcGx1Z2luLgotICAgIC8vIElmIGluc3VmZmljaWVu
dCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRldGVybWluZSB0aGUgaW1hZ2UgdHlwZSwgbm8gZGVj
b2RlciBwbHVnaW4gd2lsbCBiZQotICAgIC8vIG1hZGUuCi0gICAgbV9kZWNvZGVyID0gSW1hZ2VE
ZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAg
aWYgKG1fZGVjb2RlciAmJiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSkKLSAgICAgICAgbV9k
ZWNvZGVyLT5zZXRNYXhOdW1QaXhlbHMoc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOwotI2Vu
ZGlmCisgICAgbV9kZWNvZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoZGF0YSwgbV9hbHBoYU9w
dGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiB9CiAKIHZvaWQgSW1hZ2VTb3Vy
Y2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKQEAg
LTg4LDcgKzg0LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoZGF0YSk7CisgICAgZW5zdXJlRGVj
b2RlcklzQ3JlYXRlZCgqZGF0YSk7CiAgICAgCiAgICAgaWYgKCFpbml0aWFsaXplZCgpKSB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTYsMjUgKzkyLDQ4IEBAIHZvaWQgSW1h
Z2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICB9CiAKICAgICBpZiAobV9kZWNvZGVyKQotICAgICAgICBtX2RlY29kZXItPnNldERh
dGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgbV9kZWNvZGVyLT5zZXREYXRhKCpk
YXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi1TdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3QKK1N1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OmNhbGN1bGF0
ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVy
ID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CisgICAgaWYgKCFt
X2FsbG93U3Vic2FtcGxpbmcgfHwgIWFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleCgwKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgLy8gRklYTUU6IHRoaXMgdmFsdWUgd2FzIGNo
b3NlbiB0byBiZSBhcHByb3ByaWF0ZSBmb3IgaU9TIHNpbmNlIHRoZSBpbWFnZQorICAgIC8vIHN1
YnNhbXBsaW5nIGlzIG9ubHkgZW5hYmxlZCBieSBkZWZhdWx0IG9uIGlPUy4gQ2hvb3NlIGEgZGlm
ZmVyZW50IHZhbHVlCisgICAgLy8gaWYgaW1hZ2Ugc3Vic2FtcGxpbmcgaXMgZW5hYmxlZCBvbiBv
dGhlciBwbGF0Zm9ybS4KKyAgICBjb25zdCBpbnQgbWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNh
bXBsaW5nID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgbWF4
U3Vic2FtcGxpbmdMZXZlbCA9IDM7CisgICAgCisgICAgZm9yIChTdWJzYW1wbGluZ0xldmVsIGxl
dmVsID0gMDsgbGV2ZWwgPCBtYXhTdWJzYW1wbGluZ0xldmVsOyArK2xldmVsKSB7CisgICAgICAg
IGlmIChmcmFtZVNpemVBdEluZGV4KDAsIGxldmVsKS5hcmVhKCkgPCBtYXhpbXVtSW1hZ2VBcmVh
QmVmb3JlU3Vic2FtcGxpbmcpCisgICAgICAgICAgICByZXR1cm4gbGV2ZWw7CisgICAgfQorICAg
IAorICAgIHJldHVybiBtYXhTdWJzYW1wbGluZ0xldmVsOwogfQogCi1TdWJzYW1wbGluZ0xldmVs
IEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0CitTdWJz
YW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQg
c2NhbGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKCEoc2NhbGUgPiAwICYmIHNj
YWxlIDw9IDEpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBTdWJzYW1wbGluZ0xldmVs
IG1heGltdW1TdWJzYW1wbGluZ0xldmVsID0gY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2
ZWwoKTsKKyAgICBpZiAoIW1heGltdW1TdWJzYW1wbGluZ0xldmVsKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIFRoZXJlIGFyZSBmb3VyIHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAx
ID0gMC41eCwgMiA9IDAuMjV4LCAzID0gMC4xMjV4LgorICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVz
dWx0ID0gc3RkOjpjZWlsKHN0ZDo6bG9nMigxIC8gc2NhbGUpKTsKKyAgICByZXR1cm4gc3RkOjpt
aW4ocmVzdWx0LCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiB9CiAKLWJvb2wgSW1hZ2VTb3Vy
Y2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0CitzaXplX3Qg
SW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCiB7Ci0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0
ZXJtaW5lUHJvcGVydGllcygpOwogfQogCi1ib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFi
bGUoKQorYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwogfQpA
QCAtMTI5LDk3ICsxNDgsNzEgQEAgSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZVJlc3BlY3RpbmdP
cmllbnRhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb24pOwogfQogCi1JbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNp
emVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAorc2l6ZV90
IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKIHsKLSAgICBpZiAoIWluaXRpYWxpemVk
KCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXIt
PmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgpOwotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24gPSBtX2RlY29kZXItPm9yaWVudGF0aW9uKCk7Ci0gICAgCi0gICAgcmV0dXJuIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYmIG9yaWVu
dGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXpl
OworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAw
OwogfQogCi1ib29sIEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBj
b25zdAoraW50IEltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQoKQogewotICAgIHJldHVybiBp
bml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aG90U3BvdChob3RTcG90KTsKKyAgICByZXR1cm4g
aW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9u
Tm9uZTsKIH0KIAotc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVBy
b3BlcnRpZXMoKSBjb25zdAorU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2Rl
Y29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKIH0KIAotaW50IEltYWdlU291
cmNlOjpyZXBldGl0aW9uQ291bnQoKQorT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlU291cmNlOjpo
b3RTcG90KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+
cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6
ZWQoKSA/IG1fZGVjb2Rlci0+aG90U3BvdCgpIDogTnVsbG9wdDsKIH0KIAotc2l6ZV90IEltYWdl
U291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8g
bV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOworICAgIHJldHVybiBpbml0aWFsaXplZCgpICYm
IG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7CiB9CiAKLU5hdGl2ZUlt
YWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwpCitib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRl
eChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxl
bXMgZm9yIHNvbWUgcG9ydHMuICBJZiB3ZSBoYXZlIGFuCi0gICAgLy8gZW1wdHkgaW1hZ2UgZGlt
ZW5zaW9uLCBqdXN0IGJhaWwuCi0gICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFt
ZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVz
KCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoaW5kZXgpOworfQogCi0gICAgLy8gUmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMgYSBu
YXRpdmUgaW1hZ2UuICBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKLSAgICAvLyBpcyBhbHJlYWR5
IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNyZW1lbnRzIGl0cyByZWZj
b3VudC4KLSAgICByZXR1cm4gYnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7Citib29sIEltYWdl
U291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25z
dAoreworICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1w
bGluZ09mRnJhbWVBdEluZGV4KGluZGV4KTsKIH0KIAotZmxvYXQgSW1hZ2VTb3VyY2U6OmZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKK0ludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbikgY29uc3QKIHsKICAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNv
ZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZl
ci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBz
dWJzYW1wbGluZ0xldmVsKTsKKyAgICBpZiAoc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24g
IT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCisgICAgICAgIHJldHVybiBzaXplOwogCi0gICAg
Ly8gTWFueSBhbm5veWluZyBhZHMgc3BlY2lmeSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFn
ZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLgotICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94
J3MgYmVoYXZpb3IgYW5kIHVzZSBhIGR1cmF0aW9uIG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0
aGF0IHNwZWNpZnkKLSAgICAvLyBhIGR1cmF0aW9uIG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9w
cm9ibGVtLzc2ODkzMDA+IGFuZCA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNjA4Mj4KLSAgICAvLyBm
b3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBjb25zdCBmbG9hdCBkdXJhdGlvbiA9IGJ1ZmZlci0+
ZHVyYXRpb24oKSAvIDEwMDAuMGY7Ci0gICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQotICAgICAg
ICByZXR1cm4gMC4xMDBmOwotICAgIHJldHVybiBkdXJhdGlvbjsKKyAgICByZXR1cm4gb3JpZW50
YXRpb25BdEluZGV4KGluZGV4KS51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2Vk
U2l6ZSgpIDogc2l6ZTsKIH0KIAotSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50
YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QKK3Vuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5
dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+b3JpZW50
YXRpb24oKSA6IEltYWdlT3JpZW50YXRpb24oKTsKKyAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkuYXJlYSgpICogNDsKIH0KIAotYm9vbCBJbWFnZVNv
dXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQorZmxvYXQgSW1hZ2VTb3Vy
Y2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gIWlu
aXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Cisg
ICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4
KGluZGV4KSA6IDA7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRp
b25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVj
b2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKLSAgICByZXR1cm4gYnVmZmVyICYmIGJ1
ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyAgICByZXR1cm4g
aW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KSA6IElt
YWdlT3JpZW50YXRpb24oKTsKIH0KLQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKKyAgICAKK05hdGl2
ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaW5p
dGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgpIDogMDsKKyAg
ICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBJbWFnZVNv
dXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKQEAgLTIzMyw1ICsyMjYsMyBAQCB2b2lk
IEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogfQogICAgIAogfQotCi0j
ZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmgKaW5kZXggY2Q5YjM5ZGFhMWM4NWUxODBmMmM2NDE1YTBlZDIzZjNlNGQ3Nzdh
NC4uYTg5ODA3NjFiNDQxNzJhNjg4MzM1YWI5NzkwYjg5NDhkNzMxMDNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDEwLCAyMDEyLCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUsIEluYy4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTI4LDE4ICsyOCwxNSBAQAogI2RlZmluZSBJbWFnZVNvdXJjZV9o
CiAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIK
ICNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYg
VVNFKENHKQotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsK
LXR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7Ci0jZW5kaWYKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZU9yaWVudGF0aW9uOwpAQCAtODMsNyArODAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEdhbW1hQW5kQ29sb3JQcm9maWxlSWdub3JlZAogICAgIH07
CiAKLSAgICBJbWFnZVNvdXJjZShBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiA9IEFscGhhUHJlbXVs
dGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpOworICAgIEltYWdlU291cmNlKEFs
cGhhT3B0aW9uID0gQWxwaGFQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biA9IEdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCk7CiAgICAgfkltYWdlU291cmNlKCk7CiAK
ICAgICAvLyBUZWxscyB0aGUgSW1hZ2VTb3VyY2UgdGhhdCB0aGUgSW1hZ2Ugbm8gbG9uZ2VyIGNh
cmVzIGFib3V0IGRlY29kZWQgZnJhbWUKQEAgLTEwNyw3NiArMTA0LDYxIEBAIHB1YmxpYzoKICAg
ICAvLyB3aG8gc2V0IHxkZXN0cm95QWxsfCB0byB0cnVlIGlmIHRoZXkgd2lzaCB0byBiZSBhYmxl
IHRvIGNvbnRpbnVlIHVzaW5nCiAgICAgLy8gdGhlIEltYWdlU291cmNlLiAgVGhpcyB3YXkgaW1w
bGVtZW50YXRpb25zIHdoaWNoIGNob29zZSB0byBkZXN0cm95IHRoZWlyCiAgICAgLy8gZGVjb2Rl
cnMgaW4gc29tZSBjYXNlcyBjYW4gcmVjb25zdHJ1Y3QgdGhlbSBjb3JyZWN0bHkuCi0gICAgdm9p
ZCBjbGVhcihib29sIGRlc3Ryb3lBbGwsCi0gICAgICAgICAgICAgICBzaXplX3QgY2xlYXJCZWZv
cmVGcmFtZSA9IDAsCi0gICAgICAgICAgICAgICBTaGFyZWRCdWZmZXIqIGRhdGEgPSBOVUxMLAot
ICAgICAgICAgICAgICAgYm9vbCBhbGxEYXRhUmVjZWl2ZWQgPSBmYWxzZSk7CisgICAgdm9pZCBj
bGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjbGVhckJlZm9yZUZyYW1lID0gMCwgU2hhcmVk
QnVmZmVyKiBkYXRhID0gbnVsbHB0ciwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQgPSBmYWxzZSk7CiAK
ICAgICBib29sIGluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9
CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7Ci0gICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CiAKICAgICBTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCkgY29uc3Q7Ci0gICAg
Ym9vbCBhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKICAgICB2
b2lkIHNldEFsbG93U3Vic2FtcGxpbmcoYm9vbCBhbGxvd1N1YnNhbXBsaW5nKSB7IG1fYWxsb3dT
dWJzYW1wbGluZyA9IGFsbG93U3Vic2FtcGxpbmc7IH0KLSAgICBTdWJzYW1wbGluZ0xldmVsIG1h
eGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3Q7Ci0KLSAgICBib29sIGlzU2l6ZUF2YWlsYWJs
ZSgpOworICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVz
KCk7CiAgICAgCisgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBjb25zdDsKICAgICAvLyBBbHdh
eXMgb3JpZ2luYWwgc2l6ZSwgd2l0aG91dCBzdWJzYW1wbGluZy4KICAgICBJbnRTaXplIHNpemUo
KSBjb25zdDsKICAgICBJbnRTaXplIHNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdDsK
LSAgICAKLSAgICAvLyBTaXplIG9mIG9wdGlvbmFsbHkgc3Vic2FtcGxlZCBmcmFtZS4KLSAgICBJ
bnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikg
Y29uc3Q7Ci0KLSAgICBib29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKLQotICAgIHNp
emVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdDsKLQotICAgIGlu
dCByZXBldGl0aW9uQ291bnQoKTsKIAogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7Cisg
ICAgaW50IHJlcGV0aXRpb25Db3VudCgpOworICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0OworICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7CiAKLSAgICAv
LyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRo
IGEgaGlnaGVyIGluZGV4OwotICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgot
ICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IDApOwotCi0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90
KTsKLSAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Ig
bm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBhbHBoYS4KICAgICBib29sIGZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGlzIGNv
bXBsZXRlbHkgZGVjb2RlZC4KLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCi0KKyAgICBib29sIGZy
YW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBh
Y3R1YWxseSB1c2VkIGFueSBhbHBoYS4KKyAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleChzaXplX3QpIGNvbnN0OworICAgIAorICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBz
dWJzYW1wbGVkIGZyYW1lLgorICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdDsKKyAgICAKICAgICAvLyBSZXR1cm4gdGhlIG51
bWJlciBvZiBieXRlcyBpbiB0aGUgZGVjb2RlZCBmcmFtZS4gSWYgdGhlIGZyYW1lIGlzIG5vdCB5
ZXQKICAgICAvLyBkZWNvZGVkIHRoZW4gcmV0dXJuIDAuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCkgY29uc3Q7Ci0KLSNpZiBFTkFC
TEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhQ
aXhlbHNQZXJEZWNvZGVkSW1hZ2UoKSB7IHJldHVybiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFn
ZTsgfQotICAgIHN0YXRpYyB2b2lkIHNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSh1bnNpZ25l
ZCBtYXhQaXhlbHMpIHsgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSBtYXhQaXhlbHM7IH0K
LSNlbmRpZgotCisgICAgCisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsK
KyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OyAv
LyBFWElGIGltYWdlIG9yaWVudGF0aW9uCisgICAgCisgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90
IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKKyAg
ICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KKyAgICBOYXRpdmVJbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAg
ICAKIHByaXZhdGU6Ci0gICAgdm9pZCBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZl
ciopOworICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CisgICAgdm9pZCBl
bnN1cmVEZWNvZGVySXNDcmVhdGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIFN1YnNhbXBs
aW5nTGV2ZWwgY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdDsKICAgICB2
b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0OwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICAKKworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVl
IG9mIG1fYWxsb3dTdWJzYW1wbGluZyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgZGVmYXVsdEltYWdl
U3Vic2FtcGxpbmdFbmFibGVkIGluIFNldHRpbmdzLmNwcAogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyB7IHRydWUgfTsKICNlbHNlCiAgICAgYm9vbCBtX2Fs
bG93U3Vic2FtcGxpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSNpZiAhVVNFKENHKQogICAgIEFs
cGhhT3B0aW9uIG1fYWxwaGFPcHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
bV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjsKLSNlbmRpZgotI2lmIEVOQUJMRShJTUFHRV9E
RUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIHNfbWF4UGl4ZWxzUGVy
RGVjb2RlZEltYWdlOwotI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggN2ZiZDM0MWI5
ODhkYzI1ZDZkMWYxMWQ4ZWEzNjdhMzY5ZDBkZGI0NS4uMjUyNTlkYWFmOTIzOTFmNmNlNzE5N2Ew
N2Q1NzJjYjRjYjI0NjJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMTIyLDE1ICsxMjIsNiBAQCBJbWFn
ZURlY29kZXI6OkltYWdlRGVjb2RlcigpCiAgICAgbV9uYXRpdmVEZWNvZGVyID0gYWRvcHRDRihD
R0ltYWdlU291cmNlQ3JlYXRlSW5jcmVtZW50YWwobnVsbHB0cikpOwogfQogCi1TdWJzYW1wbGlu
Z0xldmVsIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0IHNjYWxl
LCBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKQotewotICAgIC8vIFRo
ZXJlIGFyZSBmb3VyIHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAxID0gMC41eCwgMiA9IDAu
MjV4LCAzID0gMC4xMjV4LgotICAgIGZsb2F0IGNsYW1wZWRTY2FsZSA9IHN0ZDo6bWF4PGZsb2F0
PigwLjEyNSwgc3RkOjptaW48ZmxvYXQ+KDEsIHNjYWxlKSk7Ci0gICAgU3Vic2FtcGxpbmdMZXZl
bCByZXN1bHQgPSBjZWlsZihsb2cyZigxIC8gY2xhbXBlZFNjYWxlKSk7Ci0gICAgQVNTRVJUKHJl
c3VsdCA+PTAgJiYgcmVzdWx0IDw9IDMpOwotICAgIHJldHVybiBzdGQ6Om1pbihyZXN1bHQsIG1h
eGltdW1TdWJzYW1wbGluZ0xldmVsKTsKLX0KLQogc2l6ZV90IEltYWdlRGVjb2Rlcjo6Ynl0ZXNE
ZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKIHsKICAgICAvLyBNZWFzdXJlZCBieSB0cmFj
aW5nIG1hbGxvYy9jYWxsb2MgY2FsbHMgb24gTWFjIE9TIDEwLjYuNiwgeDg2XzY0LgpAQCAtMjEw
LDI2ICsyMDEsMjUgQEAgaW50IEltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QK
ICAgICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpob3RT
cG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAorT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVj
b2Rlcjo6aG90U3BvdCgpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleCht
X25hdGl2ZURlY29kZXIuZ2V0KCksIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7CiAg
ICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBOdWxsb3B0OwogICAgIAogICAgIGludCB4ID0gLTEsIHkgPSAtMTsKICAgICBDRk51bWJlclJl
ZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQo
KSwgQ0ZTVFIoImhvdHNwb3RYIikpOwogICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdldFZhbHVl
KG51bSwga0NGTnVtYmVySW50VHlwZSwgJngpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBOdWxsb3B0OwogICAgIAogICAgIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rp
b25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBDRlNUUigiaG90c3BvdFkiKSk7CiAgICAg
aWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmeSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgCiAg
ICAgaWYgKHggPCAwIHx8IHkgPCAwKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBOdWxsb3B0OwogICAgIAotICAgIGhvdFNwb3QgPSBJbnRQb2ludCh4LCB5KTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gSW50UG9pbnQoeCwgeSk7CiB9CiAKIEludFNpemUgSW1h
Z2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdApAQCAtMzg2LDIxICszNzYsMjEgQEAgdm9pZCBJbWFn
ZURlY29kZXI6OnNldERhdGEoQ0ZEYXRhUmVmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YSwg
YWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFy
ZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1
ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0
byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcg
dGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZl
ci4KLSAgICBzZXREYXRhKGRhdGEtPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgIHNldERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2Vp
dmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUg
U2hhcmVkQnVmZmVyLgotICAgIGRhdGEtPnJlZigpOworICAgIGRhdGEucmVmKCk7CiAgICAgLy8g
V2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdl
dEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHBy
b3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0
aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNp
bmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0
Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRC
eXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dE
YXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVh
dGVEaXJlY3QoZGF0YSwgZGF0YS0+c2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBS
ZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFj
a3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rl
ci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuaAppbmRleCA4YzZhOWUyMjc4MDQzZmE1YWM3MjEyNjE3ZjFlMDkzMTQ3MWZkNGI0Li4z
NzRiOGI2NzM4MGU1Nzk5ZTQyNzQ5MzRkYmVmMTZjMWFlMmExNDM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTI5
LDE5ICsyOSwyMyBAQAogI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCiAKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKwordHlwZWRlZiBzdHJ1Y3QgQ0dJ
bWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZE
YXRhKiBDRkRhdGFSZWY7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VEZWNv
ZGVyIHsKIHB1YmxpYzoKICAgICBJbWFnZURlY29kZXIoKTsKICAgICAKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEltYWdlU291
cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VEZWNvZGVyPigp
OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5l
UHJvcGVydGllcygpOwotICAgIHN0YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxp
bmdMZXZlbCk7CiAgICAgCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBjb25zdDsKQEAgLTUwLDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29u
c3Q7CiAgICAgaW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwotICAgIGJvb2wgaG90U3BvdChJ
bnRQb2ludCYgaG90U3BvdCkgY29uc3Q7CisgICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Qo
KSBjb25zdDsKICAgICAKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsKSBjb25zdDsKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6
ZV90KSBjb25zdDsKQEAgLTY0LDcgKzY4LDkgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7
CiAgICAgCiAgICAgdm9pZCBzZXREYXRhKENGRGF0YVJlZiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OwotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CisgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
KyAgICAKKyAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQogICAgIAog
cHJvdGVjdGVkOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWQ0ZTE1YzlmZmU3OTBjMmU2ODUyNDZmZThmODVlYjU2
MTYwODNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAi
SW1hZ2VTb3VyY2VDRy5oIgotCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpB
bHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotewot
ICAgIC8vIEZJWE1FOiBBbHBoYU9wdGlvbiBhbmQgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
YXJlIGlnbm9yZWQuCi19Ci0KLUltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQotewotICAgIGNs
ZWFyKHRydWUpOwotfQotCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGxG
cmFtZXMsIHNpemVfdCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
LXsKLSAgICAvLyBSZWNlbnQgdmVyc2lvbnMgb2YgSW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkg
ZGVjb2RlZCBpbWFnZSBmcmFtZXMgaWYgdGhlIGNsaWVudAotICAgIC8vIGFwcGxpY2F0aW9uIG5v
IGxvbmdlciBob2xkcyByZWZlcmVuY2VzIHRvIHRoZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0
aHJvdyBhd2F5Ci0gICAgLy8gdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNr
ZWQgdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KLSAgICBpZiAoIWRlc3Ryb3lBbGxGcmFt
ZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGVjb2RlciA9IG51bGxwdHI7Ci0gICAgCi0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0K
LSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVm
ZmVyKikKLXsKLSAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
ZGVjb2RlciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6
OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAg
ICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBlbnN1cmVEZWNvZGVySXND
cmVhdGVkKGRhdGEpOwotICAgIAotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBt
X2RlY29kZXItPnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLX0KLQotU3RyaW5nIElt
YWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRp
YWxpemVkKCkgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKLX0K
LSAgICAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJz
YW1wbGluZ0xldmVsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGluZyB8fCAh
YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KDApKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIC8vIFZhbHVlcyBjaG9zZW4gdG8gYmUgYXBwcm9wcmlhdGUgZm9yIGlPUy4KLSAgICBjb25z
dCBpbnQgY01heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAy
NDsKLSAgICBjb25zdCBTdWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwot
Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBjdXJyZW50TGV2ZWwgPSAwOwotICAgIGZvciAoIDsgY3Vy
cmVudExldmVsIDw9IG1heFN1YnNhbXBsaW5nTGV2ZWw7ICsrY3VycmVudExldmVsKSB7Ci0gICAg
ICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleCgwLCBjdXJyZW50TGV2ZWwp
OwotICAgICAgICBpZiAoZnJhbWVTaXplLmFyZWEoKSA8IGNNYXhpbXVtSW1hZ2VBcmVhQmVmb3Jl
U3Vic2FtcGxpbmcpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3Vy
cmVudExldmVsOwotfQotICAgIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11
bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1
cm4gY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKTsKLSNlbmRpZgotICAgIHJldHVy
biAwOwotfQotCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVs
Rm9yU2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6
c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKHNjYWxlLCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgp
KTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKLXsKLSAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwotfQotCi1i
b29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KGluZGV4KTsKLX0KLQotSW50U2l6ZSBJbWFnZVNv
dXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKSBjb25zdAotewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICAKLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1l
U2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24gPSBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0g
ICAgCi0gICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXpl
LnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOwotfQotCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291
cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVy
biBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDog
SW1hZ2VPcmllbnRhdGlvbigpOwotfQotCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLX0KLSAgICAKLUludFNp
emUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAotewotICAg
IHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsK
LX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29u
c3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmhvdFNwb3QoaG90
U3BvdCk7Ci19Ci0KLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQ
cm9wZXJ0aWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLX0KLSAgICAKLWludCBJbWFnZVNvdXJjZTo6cmVw
ZXRpdGlvbkNvdW50KCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+
cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTG9vcE9uY2U7Ci19Ci0KLXNpemVfdCBJbWFn
ZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkg
PyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7Ci19Ci0KLVJldGFpblB0cjxDR0ltYWdlUmVm
PiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVk
KCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGlu
Z0xldmVsKSA6IG51bGxwdHI7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1f
ZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Ci19Ci0KLWZsb2F0IEltYWdl
U291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJu
IGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KSA6
IDA7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBp
bmRleCkKLXsKLSAgICByZXR1cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhh
c0FscGhhQXRJbmRleChpbmRleCk7Ci19Ci0KLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5
dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCkgY29uc3QKLXsKLSAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIHJldHVybiBmcmFtZVNpemUuYXJlYSgpICogNDsK
LX0KLSAgICAKLXZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17
Ci0gICAgaWYgKG1fYWxsb3dTdWJzYW1wbGluZykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJh
bGxvdy1zdWJzYW1wbGluZyIsIG1fYWxsb3dTdWJzYW1wbGluZyk7Ci0gICAgCi0gICAgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uQXRJbmRleCgwKTsKLSAgICBpZiAo
b3JpZW50YXRpb24gIT0gT3JpZ2luVG9wTGVmdCkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJv
cmllbnRhdGlvbiIsIG9yaWVudGF0aW9uKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggNmZlMjkwZTIyNjE4ZmJkNzZjNzVjODQ0OTI0NDcyZTMxOTdmZmY4
Ny4uY2YxMTc1ZDQ5MzY4ZDQ5NjE5NmMwNDcwMjM5NTAzYjZiMzc5ODgyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
Y3BwCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2gg
TW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNzAsMTMgKzI3MSwxNiBA
QCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0
b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFt
ZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6
ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
ZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6
OkZyYW1lQ29tcGxldGUpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhd
Lmhhc0FscGhhKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1l
OjpGcmFtZUNvbXBsZXRlOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0
SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiAhZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChpbmRleCkgfHwgbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5oYXNBbHBoYSgpOwog
fQogCiB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRl
eCkgY29uc3QKQEAgLTI4Nyw2ICsyOTEsNDIgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyOjpmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZS5hcmVh
KCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKIH0KIAorZmxvYXQgSW1hZ2VEZWNv
ZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYg
KG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFt
ZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBNYW55IGFubm95aW5n
IGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNr
bHkgYXMgcG9zc2libGUuCisgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQg
dXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAg
IC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4g
YW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0
aW9uLgorICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4
XS5kdXJhdGlvbigpIC8gMTAwMC4wZjsKKyAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAg
ICAgIHJldHVybiAwLjEwMGY7CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitOYXRpdmVJbWFn
ZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNp
emUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBaZXJvLWhl
aWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZl
IGFuCisgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCisgICAgaWYgKHNp
emUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKG1fZnJh
bWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250
ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCisgICAgLy8g
aXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50
cyBpdHMgcmVmY291bnQuCisgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uYXNO
ZXdOYXRpdmVJbWFnZSgpOworfQorCiB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0
YUlmTmVjZXNzYXJ5KCkKIHsKICAgICBtX3NjYWxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCA1
MzQ3YTQ3YjcyM2NkNWYwM2I2MmQzYjM1MmNmOTQ1MTQ3ZGEwZWFhLi41YmM2YjAyNTQyZGI0YjE1
MDQ4NGJmYThjZGMzYWZmMTU4OTEyNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTIzNSwxNSArMjM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJbWFnZURlY29kZXIoSW1hZ2VTb3VyY2U6
OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgICAgICAgICA6IG1fc2Nh
bGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEoYWxwaGFPcHRpb24g
PT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKKyAgICAgICAgICAgIDogbV9wcmVt
dWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxp
ZWQpCiAgICAgICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlSWdu
b3JlZCkKLSAgICAgICAgICAgICwgbV9zaXplQXZhaWxhYmxlKGZhbHNlKQotICAgICAgICAgICAg
LCBtX21heE51bVBpeGVscygtMSkKLSAgICAgICAgICAgICwgbV9pc0FsbERhdGFSZWNlaXZlZChm
YWxzZSkKLSAgICAgICAgICAgICwgbV9mYWlsZWQoZmFsc2UpIHsgfQorICAgICAgICB7CisgICAg
ICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSB7IH0KKyAgICAgICAgdmly
dHVhbCB+SW1hZ2VEZWNvZGVyKCkKKyAgICAgICAgeworICAgICAgICB9CiAKICAgICAgICAgLy8g
UmV0dXJucyBhIGNhbGxlci1vd25lZCBkZWNvZGVyIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLiAg
UmV0dXJucyAwIGlmCiAgICAgICAgIC8vIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5cGUg
ZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKQEAgLTI1NCwxMSArMjU0LDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2ZhaWxlZCkKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhOworICAgICAgICAgICAg
bV9kYXRhID0gJmRhdGE7CiAgICAgICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0
YVJlY2VpdmVkOwogICAgICAgICB9CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIHNpemVzLiAgVGhpcyBkb2VzIE5PVCBkaWZmZXIgZnJvbSBzaXpl
KCkgZm9yIEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwogICAgICAgICAvLyBjb21wb3NpdGVzIGFu
eSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZyYW1lcyB0byBjcmVhdGUgZnVsbC0K
ICAgICAgICAgLy8gc2l6ZSBmcmFtZXMuCi0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNp
emVBdEluZGV4KHNpemVfdCkgY29uc3QKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIGZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gc2l6ZSgpOwogICAgICAgICB9CkBAIC0zMTAsMTYgKzMxMCwyNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2Rlci1vd25lZCBwb2ludGVy
LgogICAgICAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3Qp
ID0gMDsKIAorICAgICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25z
dDsKKwogICAgICAgICAvLyBNYWtlIHRoZSBiZXN0IGVmZm9ydCBndWVzcyB0byBjaGVjayBpZiB0
aGUgcmVxdWVzdGVkIGZyYW1lIGhhcyBhbHBoYSBjaGFubmVsLgotICAgICAgICB2aXJ0dWFsIGJv
b2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgYm9vbCBmcmFt
ZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgICAgIC8vIE51bWJlciBvZiBi
eXRlcyBpbiB0aGUgZGVjb2RlZCBmcmFtZSByZXF1ZXN0ZWQuIFJldHVybiAwIGlmIG5vdCB5ZXQg
ZGVjb2RlZC4KLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXpl
X3QpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QpIGNv
bnN0OworICAgICAgICAKKyAgICAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90
KSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAKICAgICAgICAgdm9p
ZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsgbV9pZ25vcmVHYW1t
YUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRD
b2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
OyB9CiAKLSAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgICAg
IAorICAgICAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgZW51bSB7IGljY0NvbG9yUHJvZmlsZUhl
YWRlckxlbmd0aCA9IDEyOCB9OwogCkBAIC0zMzAsNiArMzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0YVsxNl0sICJSR0Ig
IiwgNCk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRv
RGV0ZXJtaW5lUHJvcGVydGllcygpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgCisgICAgICAgIHN0
YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCwgU3Vi
c2FtcGxpbmdMZXZlbCkgeyByZXR1cm4gMDsgfQorCiAgICAgICAgIHN0YXRpYyBib29sIGlucHV0
RGV2aWNlQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25lZCBwcm9m
aWxlTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHByb2ZpbGVM
ZW5ndGgsIHByb2ZpbGVMZW5ndGggPj0gaWNjQ29sb3JQcm9maWxlSGVhZGVyTGVuZ3RoKTsKQEAg
LTM1NCwxMyArMzY2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBjb21wb3Np
dGluZykuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
KSB7IH0KIAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgICAg
IHZvaWQgc2V0TWF4TnVtUGl4ZWxzKGludCBtKSB7IG1fbWF4TnVtUGl4ZWxzID0gbTsgfQotI2Vu
ZGlmCi0KICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3Rv
cmVzIGl0IGluIHRoZSBhcmd1bWVudAogICAgICAgICAvLyBhbmQgcmV0dXJucyB0cnVlLiBPdGhl
cndpc2UgcmV0dXJucyBmYWxzZS4KLSAgICAgICAgdmlydHVhbCBib29sIGhvdFNwb3QoSW50UG9p
bnQmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIE9wdGlvbmFsPElu
dFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gTnVsbG9wdDsgfQogCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICB2b2lkIHByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMzc0
LDcgKzM4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVmVjdG9yPEltYWdlRnJh
bWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZTsKICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQg
bV9jb2xvclByb2ZpbGUgYW55IG1vcmUsIGZvciBhbnkgcG9ydD8KICAgICAgICAgQ29sb3JQcm9m
aWxlIG1fY29sb3JQcm9maWxlOwotICAgICAgICBib29sIG1fc2NhbGVkOworICAgICAgICBib29s
IG1fc2NhbGVkIHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5z
OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZFJvd3M7CiAgICAgICAgIGJvb2wgbV9wcmVt
dWx0aXBseUFscGhhOwpAQCAtMzkyLDEwICs0MDAsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB9CiAKICAgICAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIGJvb2wgbV9zaXpl
QXZhaWxhYmxlOwotICAgICAgICBpbnQgbV9tYXhOdW1QaXhlbHM7Ci0gICAgICAgIGJvb2wgbV9p
c0FsbERhdGFSZWNlaXZlZDsKLSAgICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAgICAgICAgYm9vbCBt
X3NpemVBdmFpbGFibGUgeyBmYWxzZSB9OworI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05f
U0FNUExJTkcpCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbV9tYXhOdW1QaXhlbHMgeyAxMDI0
ICogMTAyNCB9OworI2Vsc2UKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVs
cyB7IC0xIH07CisjZW5kaWYKKyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkIHsgZmFs
c2UgfTsKKyAgICAgICAgYm9vbCBtX2ZhaWxlZCB7IGZhbHNlIH07CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAzZDc2YmMy
YTk3NGRlYWY3MzE4ZDU3MGIxZWVjMzE2MjYwOTk4MDY1Li5jYWYzNWM5N2YxN2VkZDM0YmM5ZGY4
OWFiMDllODcwMGFlZTZjN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcs
MTQgKzQ3LDE0IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEltYWdlU291cmNl
OjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6
OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQg
Qk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBJ
bWFnZURlY29kZXI6OnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBpZiAobV9y
ZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKGRhdGEpOworICAgICAgICBtX3JlYWRl
ci0+c2V0RGF0YSgmZGF0YSk7CiB9CiAKIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFp
bGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IDFjODgyZTEzOTk1MmU0NzQ4MzJi
Y2JjMjIwNTBhNjBmYjRmZmJiOTcuLmIyYzQ3ODk1NjE5YmVjYWYyNWQxMGEzMGMyZTgzYWUzNTU4
ODc2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFs
IFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJibXAiOyB9Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7
CiAgICAgICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBp
bmRleCk7CiAgICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVy
fC4gIEJlIGNhcmVmdWwgdG8gYXZvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
Y2Q1NmU2N2ViOTE4YjE2OTNjNGVjY2Y3NDBhZjgwYzg1OTM2YTc5OC4uNzkxNTE1NjA3MmQ3MTcw
NDQzNzI1NzMwNmIwOTU5MDhmMzQ5ODkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAK
QEAgLTQyLDE0ICs0MiwxNCBAQCBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKQog
ewogfQogCi12b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShkYXRhLCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgIGlmIChtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXItPnNl
dERhdGEoZGF0YSk7CisgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKCZkYXRhKTsKIH0KIAogYm9v
bCBHSUZJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCkBAIC0zMDMsNyArMzAzLDcgQEAg
dm9pZCBHSUZJbWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYWx0QXRGcmFtZSwgR0lGUXVl
cnkgcXVlcnkpCiAKICAgICBpZiAoIW1fcmVhZGVyKSB7CiAgICAgICAgIG1fcmVhZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxHSUZJbWFnZVJlYWRlcj4odGhpcyk7Ci0gICAgICAgIG1fcmVhZGVyLT5z
ZXREYXRhKG1fZGF0YSk7CisgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7
CiAgICAgfQogCiAgICAgaWYgKHF1ZXJ5ID09IEdJRlNpemVRdWVyeSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5oCmluZGV4IDQwNjEwODk1Mzk1ZDliMTJjYzY5ZDE5MWNjMzA1MjIwOWNjMDY4NzIu
LmM0YzQ5YWMzNGU4YzgyY2EyOTAzOGFjZWRjMDM5ZjU5MGYzODFiZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IHsgcmV0dXJuICJnaWYiOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKICAgICAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKICAg
ICAgICAgdmlydHVhbCBzaXplX3QgZnJhbWVDb3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApp
bmRleCBmYjg3OGVkMDhlMjhkNDAyZWVmMzcwZGNhMzkyY2Y5ZjI2ZWQwNDY5Li5lYTQyYjExYTc4
YzM4ZWJlNjVjMmMyOGI5MWM4YWZiNjI2MzVhOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApA
QCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXRE
YXRhKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhKSB7IG1fZGF0YSA9IGRh
dGE7IH0KKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBkYXRhKSB7IG1f
ZGF0YSA9IGRhdGE7IH0KICAgICAvLyBGSVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNpemVf
dC4KICAgICBib29sIGRlY29kZShXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1
bnNpZ25lZCBoYWx0QXRGcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
NTZhYzkyMWNkMDg0NjgyM2I4MTExOGVhNmYzYWRmMjExZGE3YTA4NS4uYTYwM2ExMDc2ZjlkZmNk
MTk0ZTZiZDljZjJiODFkNGIzYjlkYjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkKIHsK
IH0KIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgp
KQogICAgICAgICByZXR1cm47CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVy
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKICAg
ICBmb3IgKEJNUFJlYWRlcnM6Oml0ZXJhdG9yIGkobV9ibXBSZWFkZXJzLmJlZ2luKCkpOyBpICE9
IG1fYm1wUmVhZGVycy5lbmQoKTsgKytpKSB7CiAgICAgICAgIGlmICgqaSkKLSAgICAgICAgICAg
ICgqaSktPnNldERhdGEoZGF0YSk7CisgICAgICAgICAgICAoKmkpLT5zZXREYXRhKCZkYXRhKTsK
ICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BuZ0RlY29kZXJzLnNpemUoKTsg
KytpKQogICAgICAgICBzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoaSk7CkBAIC0xMjgsMjEg
KzEyOCwyMCBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKICAgICByZXR1cm4g
SW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKTsKIH0KIAotYm9vbCBJQ09JbWFnZURlY29kZXI6Omhv
dFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CitPcHRpb25hbDxJbnRQb2ludD4gSUNPSW1h
Z2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKIHsKICAgICAvLyBXaGVuIHVuc3BlY2lmaWVkLCB0
aGUgZGVmYXVsdCBmcmFtZSBpcyBhbHdheXMgZnJhbWUgMC4gVGhpcyBpcyBjb25zaXN0ZW50IHdp
dGgKICAgICAvLyBCaXRtYXBJbWFnZSB3aGVyZSBjdXJyZW50RnJhbWUoKSBzdGFydHMgYXQgMCBh
bmQgb25seSBpbmNyZWFzZXMgd2hlbiBhbmltYXRpb24gaXMKICAgICAvLyByZXF1ZXN0ZWQuCi0g
ICAgcmV0dXJuIGhvdFNwb3RBdEluZGV4KDAsIGhvdFNwb3QpOworICAgIHJldHVybiBob3RTcG90
QXRJbmRleCgwKTsKIH0KIAotYm9vbCBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3RBdEluZGV4KHNp
emVfdCBpbmRleCwgSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CitPcHRpb25hbDxJbnRQb2ludD4g
SUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAg
ICAgaWYgKGluZGV4ID49IG1fZGlyRW50cmllcy5zaXplKCkgfHwgbV9maWxlVHlwZSAhPSBDVVJT
T1IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAKLSAg
ICBob3RTcG90ID0gbV9kaXJFbnRyaWVzW2luZGV4XS5tX2hvdFNwb3Q7Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIG1fZGlyRW50cmllc1tpbmRleF0ubV9ob3RTcG90OwogfQogCiAKQEAg
LTE2NSw3ICsxNjQsNyBAQCB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29k
ZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIGNvcHkgYnkg
bWFraW5nIHRoZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2UgYW4KICAgICAvLyBvcHRpb25hbCBv
ZmZzZXQuCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6
ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCkpOwotICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhd
LT5zZXREYXRhKHBuZ0RhdGEuZ2V0KCksIGlzQWxsRGF0YVJlY2VpdmVkKCkpOworICAgIG1fcG5n
RGVjb2RlcnNbaW5kZXhdLT5zZXREYXRhKCpwbmdEYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsK
IH0KIAogdm9pZCBJQ09JbWFnZURlY29kZXI6OmRlY29kZShzaXplX3QgaW5kZXgsIGJvb2wgb25s
eVNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5kZXggMTQ5NDc5N2E5YmYzMWMzZTY0Yjgx
ZGI2Y2UzMzNkOTEyN2ZiODlkOC4uOWY0N2EwOGQzOTQ2NjVkMGNkYjdiMzE4NTM1MTYwMGM3ZDdj
NjNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIHZpcnR1YWwg
U3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gImljbyI7IH0KLSAgICAg
ICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsK
ICAgICAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBJ
bnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKQEAgLTU2LDcgKzU2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBhdm9pZCBhY2Nlc3NpbmcgZGVsZXRlZCBt
ZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbQogICAgICAgICAvLyBpbnNp
ZGUgQk1QSW1hZ2VSZWFkZXIhCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRGYWlsZWQoKTsKLSAg
ICAgICAgdmlydHVhbCBib29sIGhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgZW51bSBJbWFnZVR5cGUgewpAQCAtMTE2LDkgKzExNiw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gY291bGQgYmUgZGVjb2RlZC4KICAgICAgICAgYm9vbCBwcm9j
ZXNzRGlyZWN0b3J5RW50cmllcygpOwogCi0gICAgICAgIC8vIFN0b3JlcyB0aGUgaG90LXNwb3Qg
Zm9yIHxpbmRleHwgaW4gfGhvdFNwb3R8IGFuZCByZXR1cm5zIHRydWUsCi0gICAgICAgIC8vIG9y
IHJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm9uZS4KLSAgICAgICAgYm9vbCBob3RTcG90QXRJ
bmRleChzaXplX3QgaW5kZXgsIEludFBvaW50JiBob3RTcG90KSBjb25zdDsKKyAgICAgICAgLy8g
UmV0dXJucyB0aGUgaG90LXNwb3QgZm9yIHxpbmRleHwsIHJldHVybnMgTnVsbG9wdCBpZiB0aGVy
ZSBpcyBub25lLgorICAgICAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdEF0SW5kZXgoc2l6
ZV90KSBjb25zdDsKIAogICAgICAgICAvLyBSZWFkcyBhbmQgcmV0dXJucyBhIGRpcmVjdG9yeSBl
bnRyeSBmcm9tIHRoZSBjdXJyZW50IG9mZnNldCBpbnRvCiAgICAgICAgIC8vIHxkYXRhfC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBjMGU5NWFmYWQwOTQyMjcxYjk2YjNhZGM4YmQzNWVhYjA2ZDNhNGY0Li4xZDdhYzA5NDdh
ZTJmNzQzOTQ3NTlmYjJlNDE4ZDJmNTE4YTRiODBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTYtMDQtMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKwor
ICAgICAgICBNZXJnZSBDRyBJbWFnZVNvdXJjZSBhbmQgbm9uIENHIEltYWdlU291cmNlIGltcGxl
bWVudGF0aW9uIGluIG9uZSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTU0NTYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KyAgICAgICAgCisgICAgICAgIEFkZCBhIHRlc3QgZm9yIGltYWdlIHN1Yi1zYW1wbGluZy4gVGhl
IGltYWdlIHN1YnNhbXBsaW5nIGlzIGVuYWJsZWQgYnkKKyAgICAgICAgZGVmYXVsdCBmb3IgaU9T
IHBsYXRmb3JtIG9ubHkuIEJ1dCBpdCBjYW4gYmUgZXhwbGljaXRseSBlbmFibGVkIHRocm91Z2gK
KyAgICAgICAgdGhlIHNldHRpbmcgSW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQuCisKKyAgICAgICAg
KiBmYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sOiBBZGRlZC4KKwogMjAx
Ni0wNC0wOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5OTI2OC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQwMzEzYmViOGRiNzk0MTk1YTZiZWMyMmRmMGI4MTFjN2IyMzA5MmIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c3R5bGU+CisgICAgICAgIGRpdiB7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7Cisg
ICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgbWFyZ2luOiAxMHB4OworICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICB9CisgICAgPC9zdHlsZT4K
KzxoZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGNyZWF0ZURpdihjb2xvcikg
eworICAgICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICBkaXZFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yOworICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdkVsZW1lbnQpOworICAgIH0KKworICAg
IGNyZWF0ZURpdigicmVkIik7CisgICAgY3JlYXRlRGl2KCJncmVlbiIpOworICAgIGNyZWF0ZURp
digiYmx1ZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjhhZTNiZTlk
ZjUzMDFkYjJhMThkODI5MzRlNzNiYTVkOTg5NDdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbApAQCAtMCwwICsxLDQzIEBA
Cis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBk
aXYgeworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICAgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgfQorICAgICAgICBpbWcgeworICAgICAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+
Cis8aGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZVN1YnNhbXBsaW5nRW5hYmxl
ZCh0cnVlKTsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUltYWdlKGNvbG9yKSB7CisgICAgICAgIHZh
ciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICAgICAgY2Fu
dmFzLndpZHRoID0gMTAyNCAqIDM7CisgICAgICAgIGNhbnZhcy5oZWlnaHQgPSAxMDI0ICogMzsK
KyAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICBjdHgu
ZmlsbFN0eWxlID0gY29sb3I7CisgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lk
dGgsIGNhbnZhcy5oZWlnaHQpOworCisgICAgICAgIHZhciBpbWdFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgIGltZ0VsZW1lbnQuc3JjID0gY2FudmFzLnRv
RGF0YVVSTCgiaW1hZ2UvcG5nIik7CisKKyAgICAgICAgdmFyIGRpdkVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZGl2RWxlbWVudC5hcHBlbmRDaGlsZChp
bWdFbGVtZW50KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXZFbGVtZW50
KTsKKyAgICB9CisgICAgCisgICAgY3JlYXRlSW1hZ2UoInJlZCIpOworICAgIGNyZWF0ZUltYWdl
KCJncmVlbiIpOworICAgIGNyZWF0ZUltYWdlKCJibHVlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276126</attachid>
            <date>2016-04-10 20:27:41 -0700</date>
            <delta_ts>2016-04-10 20:42:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160410202753.patch</filename>
            <type>text/plain</type>
            <size>65629</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTViMjJmYWY4YzVmZWYw
OGEzOGVkYjk1YzM4ZmM0MTI4YTRkMjcwNC4uOGM5MTAzN2E3OGYzMDk2NWE0ZGE0ZWUyN2YyNWYz
ZDhhOWZiNWNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NiBAQAorMjAxNi0wNC0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIElt
YWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4gQWxs
IHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJbWFn
ZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNhbiBo
YXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0IHJp
ZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0L2lt
YWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5kIGFk
ZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL0N1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1p
bmVIb3RTcG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aG90U3BvdCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmhvdFNwb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldEhvdFNwb3QpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgZ2V0SG90
U3BvdCgpIHRvIGhvdFNwb3QoKSBhbmQgY2hhbmdlIGl0IHRvIHJldHVybiBPcHRpb25hbDxJbnRQ
b2ludD4uCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1v
dmUgY2xlYXIodHJ1ZSkgY2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxs
cyBJbWFnZURlY29kZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hp
Y2ggd2lsbCBkbyBub3RoaW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIq
IHRvCisgICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJ
bWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29u
c3Qgc3RhdGljIGludCBDRyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0
CisgICAgICAgIGJhc2VkIG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVm
ZmVyJiB0byB0aGUgdW5kZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0
dXJucyB0aGUgbWF4aW11bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBh
biBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2Ft
cGxpbmdMZXZlbEZvclNjYWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1
YnNhbXBsaW5nTGV2ZWwgdGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwgZm9yCisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKTogUmV0dXJucyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hp
Y2ggY2FuIGRldGVybWluZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisg
ICAgICAgIHplcm8uIEZvciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNv
cnJlY3RlZCBsYXRlci4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
aXNTaXplQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBl
cnMgZm9yIHRoZSBJbWFnZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rp
b25zCisgICAgICAgIGlzIHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisg
ICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJv
bSBCaXRtYXBJbWFnZTo6ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpnZXRIb3RTcG90KTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpzZXRBbGxvd1N1YnNhbXBsaW5nKTogQ2FsbGVkIGZyb20gQml0bWFwSW1hZ2U6OnNldEFsbG93
U3Vic2FtcGxpbmcoKS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICBTZXR0aW5nIG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSB3YXMgbW92ZWQgdG8gdGhlIG5vbiBD
RyBJbWFnZURlY29kZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
RGF0YSk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKTogRGVsZXRl
ZC4KKyAgICAgICAgVGhlIGNvZGUgd2FzIG1vdmVkIHRvIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoKS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKTogTWFrZSB0aGUgcHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgc3VpdGFi
bGUgZm9yIENHIGFuZCBub24gQ0cgY2FzZXMuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEVtcHR5IGZ1bmN0aW9ucyBmb3IgQ0cuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KTogQSBtZXcgZnVuY3Rpb24gdG8gcmV0dXJuCisgICAgICAgIHdoZXRoZXIg
dGhlIGZyYW1lIGRlY29kaW5nIGlzIGNvbXBsZXRlIG9yIG5vdC4KKyAgICAgICAgCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KTogU2ltcGxpZnkg
dGhlIGxvZ2ljLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOiBUaGUgY29kZSB3YXMgbW92ZWQgZnJvbQorICAgICAgICBJbWFn
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoKSBpbiBJbWFnZVNvdXJjZS5jcHAuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCk6IFRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6IEluaXRpYWxpemUgdGhlIG1lbWJl
cnMgaW4gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6On5JbWFnZURlY29k
ZXIpOiBGaXggdGhlIGJyYWNlcyBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6c2V0RGF0YSk6IENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgYXJndW1lbnQgZnJvbQorICAgICAg
ICBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOiBBZGQgdGhlIGFyZ3VtZW50IFN1YnNhbXBsaW5n
TGV2ZWwKKyAgICAgICAgc28gaXQgY2FuIGhhdmUgdGhlIHNhbWUgcHJvdG90eXBlIGFzIENHLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbkF0SW5kZXgpOiBSZW5h
bWUgaXQgdG8gdGhlIHNhbWUgb2YgQ0cuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUp
OiBBZGQgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGFuZCByZXR1cm4gdGhlIGRlZmF1bHQgdmFs
dWVzIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGFkZCBkaXJlY3RpdmUgY29tcGlsZWQKKyAgICAgICAg
bm9uIENHIGJsb2NrcyBpbiBJbWFnZVNvdXJjZS5jcHAuCisKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6aG90U3BvdCk6IFJldHVybiBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAg
IAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscyk6IERlbGV0
ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKEdJ
RkltYWdlUmVhZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgIFVzZSByZWZlcmVuY2UgU2hhcmVkQnVmZmVyIGluc3Rl
YWQgb2YgcG9pbnRlciBTaGFyZWRCdWZmZXIuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
SUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6aG90U3BvdEF0SW5kZXgpOgorICAgICAgICBDaGFuZ2UgaG90U3BvdCgpIHRvIHJldHVy
biBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgpOgorICAgICAg
ICBSZWNlaXZlIHRoZSByZXR1cm4gb2YgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSBpbiBSZWYgaW5z
dGVhZCBvZiBSZWZQdHIuCisKKzIwMTYtMDQtMDggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBUaW1pbmcgYXR0YWNrIG9uIFNWRyBmZUNvbXBv
c2l0ZSBmaWx0ZXIgY2lyY3VtdmVudHMgc2FtZS1vcmlnaW4gcG9saWN5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzMzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBPbGl2ZXIgSHVudC4KKworICAgICAgICBFbnN1cmUgdGhlIEZFQ29tcG9zaXRlIGFy
aXRobWV0aWMgZmlsdGVyIGlzIGNsYW1waW5nIHRoZSByZXN1bHRlZCBjb2xvcgorICAgICAgICBj
b21wb25lbnRzIGluIGEgY29uc3RhbnQgdGltZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXBCeXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVBcml0aG1ldGljUGl4ZWxzKToKKwogMjAxNi0w
NC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgYnVp
bGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGY1YzY2MzVjYzExZDNmY2YzNGZiNmZkMzM5NTJh
NTcwYWY5NjhkM2MuLmRiMTg2NzI1YjkzMDY4M2RlY2Y4ZWE2NTlmZWM0YmI3Mzc0M2IzMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjEzLDYgKzIyMTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlv
bi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9JbnRQb2ludC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZQppbmRleCBjNjcyY2M3MDdmYTg3ODViYTUyNzQ0MmU5MDRiMWNmYWRiMjUx
NWFjLi4wOWM4MDk0ZTc3YzRiZjMyYWNmNDdhYTkzZTlkYmFlOTk2Mjk3ZTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTcyLDcgKzcyLDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0dXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CmluZGV4IGI3MmYyZTE1YzhiNTJlYWUxYTNlNmQ2YTRlYTZhZDEyYjEyYTI4ZTguLmFlYTM1NzEw
NTkwOWI3YzdlZTIwNTUyNzU5ZWFjOTlmNDU2ZDVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC00MDYsNyArNDA2LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lu
dFJlY3RDRy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA2NWY2Mjg2YjYzNDlkMmY5NDc1OWUyYTNiNGUwMzcwMmUyOTdiMDBj
Li4yNTg5YzM1MWVhNTk3NTk5ZWU4YTA3MDExZTYwZmIzYTc1YTIyM2NjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTg2LDcg
KzQ5ODYsNiBAQAogCQlCMjc1MzU1QTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkMw
QjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NUIwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNp
emVDRy5jcHAgKi87IH07CiAJCUIyNzUzNTVFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMw
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLzsgfTsKLQkJQjI3NTM1NUYwQjA1Mzgx
NDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291
cmNlQ0cuY3BwICovOyB9OwogCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRD
Ry5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1
MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYx
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJl
Y3RDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplQ0cu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1
MzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi87IH07CkBAIC0xMjg3Nyw3ICsx
Mjg3Niw2IEBACiAJCUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRSZWN0Q0cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUyRDBCMDUzODE0MDAyQ0U2NEYgLyog
RmxvYXRTaXplQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZs
b2F0U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzAwQjA1
MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjc1
MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRQb2ludENHLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzMwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFJlY3RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzQwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
Nzg1LDcgKzIxNzgzLDYgQEAKIAkJCQlCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VD
Ry5jcHAgKi8sCiAJCQkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNH
LmNwcCAqLywKIAkJCQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
aCAqLywKLQkJCQlCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAg
Ki8sCiAJCQkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywK
IAkJCQk0QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywK
IAkJCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0z
MDAwNCw3ICszMDAwMSw2IEBACiAJCQkJMkQ1QTU5MkYxNTI1MjUyMzAwMzZFRTUxIC8qIEltYWdl
T3JpZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUxQTJGNDExN0Q3RDVERTAwNzI1
MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYz
QzcyNUUxOTc0ODc0QjAwQUVERDBDIC8qIEltYWdlU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxp
Y2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFOTYxQzU0MThBRDMzODUwMEQw
N0RDNSAvKiBJbmJhbmREYXRhVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cnNvci5jcHAKaW5kZXggNjBhNjE5YWNkYTEzYWE0N2JhMTJlYjAzYjRlMjI1ZjI0
MWZjM2IyYi4uOWM1OTJmMzc0YjM0ZTdmOTY3OWU5ZGZmNDhmYTEwYWU2ODAwZTMxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCkBAIC00NCwxMCArNDQsMTAgQEAgSW50UG9pbnQgZGV0
ZXJtaW5lSG90U3BvdChJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBzcGVjaWZpZWRIb3RT
cG90KQogICAgICAgICByZXR1cm4gc3BlY2lmaWVkSG90U3BvdDsKIAogICAgIC8vIElmIGhvdCBz
cG90IGlzIG5vdCBzcGVjaWZpZWQgZXh0ZXJuYWxseSwgaXQgY2FuIGJlIGV4dHJhY3RlZCBmcm9t
IHNvbWUgaW1hZ2UgZm9ybWF0cyAoZS5nLiAuY3VyKS4KLSAgICBJbnRQb2ludCBpbnRyaW5zaWNI
b3RTcG90OwotICAgIGJvb2wgaW1hZ2VIYXNJbnRyaW5zaWNIb3RTcG90ID0gaW1hZ2UtPmdldEhv
dFNwb3QoaW50cmluc2ljSG90U3BvdCk7Ci0gICAgaWYgKGltYWdlSGFzSW50cmluc2ljSG90U3Bv
dCAmJiBpbWFnZVJlY3QuY29udGFpbnMoaW50cmluc2ljSG90U3BvdCkpCi0gICAgICAgIHJldHVy
biBpbnRyaW5zaWNIb3RTcG90OworICAgIGlmIChhdXRvIGludHJpbnNpY0hvdFNwb3QgPSBpbWFn
ZS0+aG90U3BvdCgpKSB7CisgICAgICAgIGlmIChpbWFnZVJlY3QuY29udGFpbnMoaW50cmluc2lj
SG90U3BvdC52YWx1ZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBpbnRyaW5zaWNIb3RTcG90LnZh
bHVlKCk7CisgICAgfQogCiAgICAgcmV0dXJuIEludFBvaW50KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYTQ3YTk3Mjk1
Mjg1MWFhNTRkMzYxOWU2OGE2ZTA5NjAzMDM2NTNlZS4uN2M3OGQzNjVjMWE0MDJlNmVjMTk0Yjc3
MmY1NWE5ZWRiZDZjZGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMjU0LDkgKzI1NCw5IEBAIEludFNpemUgQml0bWFwSW1h
Z2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAogICAgIHJldHVybiBtX3NpemVS
ZXNwZWN0aW5nT3JpZW50YXRpb247CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmdldEhvdFNwb3Qo
SW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CitPcHRpb25hbDxJbnRQb2ludD4gQml0bWFwSW1hZ2U6
OmhvdFNwb3QoKSBjb25zdAogewotICAgIGJvb2wgcmVzdWx0ID0gbV9zb3VyY2UuZ2V0SG90U3Bv
dChob3RTcG90KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc291cmNlLmhvdFNwb3QoKTsKICAgICBk
aWREZWNvZGVQcm9wZXJ0aWVzKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDUxMTNkNWQ1Mjc3
ODE1NGVhZmNmOWEzNDI3YjUyZWIxNWNmZTk2OWMuLjdjOGVjYWNmYzZjNjFjOTQ0NGQ2MWFkZDRl
Mjc5NzZjYjIwMjFkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUg
c2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRh
dGlvbigpIGNvbnN0OwogCi0gICAgYm9vbCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCBjMzE0
MmFkZWM3YTI1Yzg0NjBlMjlhZjM1MDJiOTQxNDdiNzA2YzdjLi41MGY3N2UzMTYyMTA3MzQ2YTA3
NTA2MjFjZDM3ZTJlZjQ3OWQ2NDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAj
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgi
CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAg
LTEwNyw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJl
dHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpOyB9CiAgICAgZmxvYXQgd2lkdGgo
KSBjb25zdCB7IHJldHVybiBzaXplKCkud2lkdGgoKTsgfQogICAgIGZsb2F0IGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIHNpemUoKS5oZWlnaHQoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBnZXRIb3RT
cG90KEludFBvaW50JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIE9wdGlv
bmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gTnVsbG9wdDsgfQogCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgRmxvYXRTaXplIG9yaWdpbmFsU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIHNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDBkMTAwOTYxZmYyNzYxNTM2OTk1MGZjYmJmZTFlYzVl
YzgzMTg0ZmYuLjdlZDlmZDFkMDc2NzkzZGZmNGRmN2NkMjNkNzdmNTgxYjhkYWEyOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTAsIDIwMTEsIDIwMTIs
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28udWs+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYwpAQCAtMjksMTkgKzI5LDE2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKIAotI2lmICFV
U0UoQ0cpCi0KKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKKyNlbHNl
CiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKIAogI2luY2x1ZGUgIkltYWdlT3Jp
ZW50YXRpb24uaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotdW5zaWdu
ZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlID0gMTAyNCAqIDEwMjQ7
Ci0jZW5kaWYKLQogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9hbHBoYU9wdGlvbihhbHBoYU9w
dGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24oZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCkBAIC01MCwxNCArNDcsMjEgQEAgSW1hZ2VTb3VyY2U6OkltYWdlU291cmNl
KEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW0K
IAogSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiB7Ci0gICAgY2xlYXIodHJ1ZSk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVm
b3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lk
IEltYWdlU291cmNlOjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJh
bWUpCit7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9k
ZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVGcmFtZSk7Cit9CisKK3Zv
aWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1lcywgc2l6ZV90IGNsZWFy
QmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7
Ci0gICAgaWYgKCFkZXN0cm95QWxsKSB7Ci0gICAgICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAg
ICAgICBtX2RlY29kZXItPmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsK
KyAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheSB0aGUgZGVjb2RlciB1bmxlc3Mg
d2UncmUgZXhwbGljaXRseSBhc2tlZAorICAgIC8vIHRvIGRlc3Ryb3kgYWxsIG9mIHRoZSBmcmFt
ZXMuCisgICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKSB7CisgICAgICAgIGNsZWFyRnJhbWVCdWZm
ZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NjcsMjAgKzcxLDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwg
c2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlcioKICAgICAgICAgc2V0RGF0YShk
YXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlU291cmNlOjplbnN1cmVEZWNv
ZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OmVuc3Vy
ZURlY29kZXJJc0NyZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChp
bml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgLy8gTWFrZSB0aGUgZGVj
b2RlciBieSBzbmlmZmluZyB0aGUgYnl0ZXMuCi0gICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBleGFt
aW5lIHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlh
dGUgZGVjb2RlciBwbHVnaW4uCi0gICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBhdmFp
bGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3aWxs
IGJlCi0gICAgLy8gbWFkZS4KLSAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZSgq
ZGF0YSwgbV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0jaWYg
RU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBpZiAobV9kZWNvZGVyICYm
IHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKQotICAgICAgICBtX2RlY29kZXItPnNldE1heE51
bVBpeGVscyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7Ci0jZW5kaWYKKyAgICBtX2RlY29k
ZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBtX2FscGhhT3B0aW9uLCBtX2dhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAtODgsNyArODQsNyBAQCB2
b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZW5z
dXJlRGVjb2RlcklzQ3JlYXRlZChkYXRhKTsKKyAgICBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKCpk
YXRhKTsKICAgICAKICAgICBpZiAoIWluaXRpYWxpemVkKCkpIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC05NiwyNSArOTIsNDggQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAogICAg
IGlmIChtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0YShkYXRhLCBhbGxEYXRh
UmVjZWl2ZWQpOworICAgICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNl
aXZlZCk7CiB9CiAKLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25z
dAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2FsY3VsYXRlTWF4aW11bVN1YnNhbXBs
aW5nTGV2ZWwoKSBjb25zdAogewotICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZp
bGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKKyAgICBpZiAoIW1fYWxsb3dTdWJzYW1wbGlu
ZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KDApKQorICAgICAgICByZXR1cm4g
MDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhpcyB2YWx1ZSB3YXMgY2hvc2VuIHRvIGJlIGFwcHJv
cHJpYXRlIGZvciBpT1Mgc2luY2UgdGhlIGltYWdlCisgICAgLy8gc3Vic2FtcGxpbmcgaXMgb25s
eSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gaU9TLiBDaG9vc2UgYSBkaWZmZXJlbnQgdmFsdWUKKyAg
ICAvLyBpZiBpbWFnZSBzdWJzYW1wbGluZyBpcyBlbmFibGVkIG9uIG90aGVyIHBsYXRmb3JtLgor
ICAgIGNvbnN0IGludCBtYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAy
NCAqIDEwMjQ7CisgICAgY29uc3QgU3Vic2FtcGxpbmdMZXZlbCBtYXhTdWJzYW1wbGluZ0xldmVs
ID0gMzsKKyAgICAKKyAgICBmb3IgKFN1YnNhbXBsaW5nTGV2ZWwgbGV2ZWwgPSAwOyBsZXZlbCA8
IG1heFN1YnNhbXBsaW5nTGV2ZWw7ICsrbGV2ZWwpIHsKKyAgICAgICAgaWYgKGZyYW1lU2l6ZUF0
SW5kZXgoMCwgbGV2ZWwpLmFyZWEoKSA8IG1heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGlu
ZykKKyAgICAgICAgICAgIHJldHVybiBsZXZlbDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG1h
eFN1YnNhbXBsaW5nTGV2ZWw7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1
YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCkgY29uc3QKK1N1YnNhbXBsaW5nTGV2ZWwgSW1h
Z2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gMDsKKyAgICBpZiAoIShzY2FsZSA+IDAgJiYgc2NhbGUgPD0gMSkpCisgICAg
ICAgIHJldHVybiAwOworICAgIAorICAgIFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBs
aW5nTGV2ZWwgPSBjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpOworICAgIGlmICgh
bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gVGhl
cmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4y
NXgsIDMgPSAwLjEyNXguCisgICAgU3Vic2FtcGxpbmdMZXZlbCByZXN1bHQgPSBzdGQ6OmNlaWwo
c3RkOjpsb2cyKDEgLyBzY2FsZSkpOworICAgIHJldHVybiBzdGQ6Om1pbihyZXN1bHQsIG1heGlt
dW1TdWJzYW1wbGluZ0xldmVsKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1w
bGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QKK3NpemVfdCBJbWFnZVNvdXJjZTo6Ynl0
ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKIHsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVz
KCk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCitib29sIEltYWdl
U291cmNlOjppc1NpemVBdmFpbGFibGUoKSBjb25zdAogewogICAgIHJldHVybiBpbml0aWFsaXpl
ZCgpICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCk7CiB9CkBAIC0xMjksOTcgKzE0OCw3
MSBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29u
c3QKICAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbik7CiB9CiAKLUludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0CitzaXplX3QgSW1hZ2VTb3VyY2U6OmZy
YW1lQ291bnQoKSBjb25zdAogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0
dXJuIHsgfTsKLQotICAgIEludFNpemUgc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRl
eChpbmRleCk7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IG1fZGVjb2Rlci0+
b3JpZW50YXRpb24oKTsKLSAgICAKLSAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50
YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRo
QXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7CisgICAgcmV0dXJuIGlu
aXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLWJvb2wgSW1h
Z2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CitpbnQgSW1hZ2VT
b3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYg
bV9kZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8g
bV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Ob25lOwogfQogCi1zaXpl
X3QgSW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0
CitTdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVF
eHRlbnNpb24oKSA6IFN0cmluZygpOwogfQogCi1pbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25D
b3VudCgpCitPcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VTb3VyY2U6OmhvdFNwb3QoKSBjb25zdAog
ewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQo
KSA6IGNBbmltYXRpb25Ob25lOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVy
LT5ob3RTcG90KCkgOiBOdWxsb3B0OwogfQogCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291
bnQoKSBjb25zdAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXpl
X3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1l
Q291bnQoKSA6IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5mcmFt
ZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3Vy
Y2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0
cy4gIElmIHdlIGhhdmUgYW4KLSAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFp
bC4KLSAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChp
bmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1l
OjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gIWluaXRp
YWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Cit9CiAK
LSAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gIEZv
ciBzb21lIHBvcnRzLCB0aGUgZGF0YQotICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUgY29u
dGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgotICAgIHJldHVy
biBidWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKTsKK2Jvb2wgSW1hZ2VTb3VyY2U6OmFsbG93U3Vi
c2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5hbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5k
ZXgoaW5kZXgpOwogfQogCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgo
c2l6ZV90IGluZGV4KQorSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAogewog
ICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biB7IH07CiAKLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVy
QXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJ
bWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gMDsKKyAgICBJbnRTaXplIHNp
emUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwp
OworICAgIGlmIChzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAhPSBSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbikKKyAgICAgICAgcmV0dXJuIHNpemU7CiAKLSAgICAvLyBNYW55IGFubm95aW5n
IGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNr
bHkgYXMgcG9zc2libGUuCi0gICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQg
dXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQotICAg
IC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4g
YW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgotICAgIC8vIGZvciBtb3JlIGluZm9ybWF0
aW9uLgotICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyLT5kdXJhdGlvbigpIC8gMTAw
MC4wZjsKLSAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCi0gICAgICAgIHJldHVybiAwLjEwMGY7
Ci0gICAgcmV0dXJuIGR1cmF0aW9uOworICAgIHJldHVybiBvcmllbnRhdGlvbkF0SW5kZXgoaW5k
ZXgpLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOwog
fQogCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6
ZV90KSBjb25zdAordW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAogewotICAg
IHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbigpIDogSW1hZ2VP
cmllbnRhdGlvbigpOworICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKS5hcmVhKCkgKiA0OwogfQogCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0Fs
cGhhQXRJbmRleChzaXplX3QgaW5kZXgpCitmbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiAhaW5pdGlhbGl6ZWQoKSB8fCBt
X2RlY29kZXItPmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gaW5pdGlh
bGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpIDogMDsKIH0K
IAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgp
CitJbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90
IGluZGV4KSBjb25zdAogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZl
ckF0SW5kZXgoaW5kZXgpOwotICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLT5zdGF0dXMoKSA9
PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8g
bV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogSW1hZ2VPcmllbnRhdGlvbigp
OwogfQotCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAorICAgIAorTmF0aXZlSW1hZ2VQdHIgSW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9k
ZWNvZGVyLT5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCkgOiAwOworICAgIHJldHVybiBpbml0aWFs
aXplZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2Ft
cGxpbmdMZXZlbCkgOiBudWxscHRyOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRT
dHJlYW0mIHRzKSBjb25zdApAQCAtMjMzLDUgKzIyNiwzIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmR1
bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB9CiAgICAgCiB9Ci0KLSNlbmRpZiAvLyBVU0UoQ0cp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRl
eCBjZDliMzlkYWExYzg1ZTE4MGYyYzY0MTVhMGVkMjNmM2U0ZDc3N2E0Li5hODk4MDc2MWI0NDE3
MmE2ODgzMzVhYjk3OTBiODk0OGQ3MzEwM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAsIDIw
MTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtMjgsMTggKzI4LDE1IEBACiAjZGVmaW5lIEltYWdlU291cmNlX2gKIAogI2luY2x1ZGUgIklt
YWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIk5hdGl2
ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi10eXBlZGVm
IHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwotdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEltYWdlT3JpZW50YXRpb247CkBAIC04Myw3ICs4MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkCiAgICAgfTsKIAotICAgIEltYWdlU291
cmNlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uID0gQWxwaGFQcmVtdWx0aXBsaWVkLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdhbW1hQW5k
Q29sb3JQcm9maWxlQXBwbGllZCk7CisgICAgSW1hZ2VTb3VyY2UoQWxwaGFPcHRpb24gPSBBbHBo
YVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xv
clByb2ZpbGVBcHBsaWVkKTsKICAgICB+SW1hZ2VTb3VyY2UoKTsKIAogICAgIC8vIFRlbGxzIHRo
ZSBJbWFnZVNvdXJjZSB0aGF0IHRoZSBJbWFnZSBubyBsb25nZXIgY2FyZXMgYWJvdXQgZGVjb2Rl
ZCBmcmFtZQpAQCAtMTA3LDc2ICsxMDQsNjEgQEAgcHVibGljOgogICAgIC8vIHdobyBzZXQgfGRl
c3Ryb3lBbGx8IHRvIHRydWUgaWYgdGhleSB3aXNoIHRvIGJlIGFibGUgdG8gY29udGludWUgdXNp
bmcKICAgICAvLyB0aGUgSW1hZ2VTb3VyY2UuICBUaGlzIHdheSBpbXBsZW1lbnRhdGlvbnMgd2hp
Y2ggY2hvb3NlIHRvIGRlc3Ryb3kgdGhlaXIKICAgICAvLyBkZWNvZGVycyBpbiBzb21lIGNhc2Vz
IGNhbiByZWNvbnN0cnVjdCB0aGVtIGNvcnJlY3RseS4KLSAgICB2b2lkIGNsZWFyKGJvb2wgZGVz
dHJveUFsbCwKLSAgICAgICAgICAgICAgIHNpemVfdCBjbGVhckJlZm9yZUZyYW1lID0gMCwKLSAg
ICAgICAgICAgICAgIFNoYXJlZEJ1ZmZlciogZGF0YSA9IE5VTEwsCi0gICAgICAgICAgICAgICBi
b29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKKyAgICB2b2lkIGNsZWFyKGJvb2wgZGVzdHJv
eUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLCBTaGFyZWRCdWZmZXIqIGRhdGEgPSBu
dWxscHRyLCBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKIAogICAgIGJvb2wgaW5pdGlh
bGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICBTdHJp
bmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKIAogICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdDsKLSAgICBib29sIGFsbG93U3Vic2Ft
cGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAgIHZvaWQgc2V0QWxsb3dTdWJz
YW1wbGluZyhib29sIGFsbG93U3Vic2FtcGxpbmcpIHsgbV9hbGxvd1N1YnNhbXBsaW5nID0gYWxs
b3dTdWJzYW1wbGluZzsgfQotICAgIFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5n
TGV2ZWwoKSBjb25zdDsKLQotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CisgICAgc3RhdGlj
IHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKICAgICAKKyAgICBi
b29sIGlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0OwogICAgIC8vIEFsd2F5cyBvcmlnaW5hbCBzaXpl
LCB3aXRob3V0IHN1YnNhbXBsaW5nLgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgIElu
dFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0OwotICAgIAotICAgIC8vIFNp
emUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNpemUgZnJhbWVTaXpl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdDsKLQotICAgIGJv
b2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OwotCi0gICAgc2l6ZV90IGJ5dGVzRGVjb2Rl
ZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0OwotCi0gICAgaW50IHJlcGV0aXRpb25Db3Vu
dCgpOwogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKKyAgICBpbnQgcmVwZXRpdGlv
bkNvdW50KCk7CisgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CisgICAgT3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKIAotICAgIC8vIENhbGxlcnMgc2hvdWxk
IG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7
Ci0gICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7
Ci0KLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwotICAgIGJvb2wgZnJh
bWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFj
dHVhbGx5IHVzZWQgYW55IGFscGhhLgogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVk
LgotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7
IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KLQorICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55
IGFscGhhLgorICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkg
Y29uc3Q7CisgICAgCisgICAgLy8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUu
CisgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50
YXRpb24pIGNvbnN0OworICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGlu
IHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUgaXMgbm90IHlldAogICAgIC8vIGRlY29k
ZWQgdGhlbiByZXR1cm4gMC4KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVS
X0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIG1heFBpeGVsc1BlckRlY29kZWRJ
bWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOyB9Ci0gICAgc3RhdGlj
IHZvaWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2lnbmVkIG1heFBpeGVscykgeyBz
X21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsgfQotI2VuZGlmCi0KKyAgICAK
KyAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOworICAgIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3Jp
ZW50YXRpb24KKyAgICAKKyAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVy
IGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OworICAgIC8vIHNlZSBjb21tZW50
cyBvbiBjbGVhcigpIGFib3ZlLgorICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBj
bGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KTsKKyAgICB2b2lkIGVuc3VyZURlY29kZXJJc0Ny
ZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBjYWxjdWxh
dGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0OwogICAgIHZvaWQgZHVtcChUZXh0U3Ry
ZWFtJikgY29uc3Q7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgIAorCisgICAgLy8gVGhlIGRlZmF1bHQgdmFsdWUgb2YgbV9hbGxvd1N1YnNh
bXBsaW5nIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBkZWZhdWx0SW1hZ2VTdWJzYW1wbGluZ0VuYWJs
ZWQgaW4gU2V0dGluZ3MuY3BwCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9hbGxvd1N1
YnNhbXBsaW5nIHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyB7
IGZhbHNlIH07CiAjZW5kaWYKIAotI2lmICFVU0UoQ0cpCiAgICAgQWxwaGFPcHRpb24gbV9hbHBo
YU9wdGlvbjsKICAgICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uOwotI2VuZGlmCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKLSAgICBzdGF0aWMgdW5zaWduZWQgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7Ci0j
ZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA3ZmJkMzQxYjk4OGRjMjVkNmQxZjExZDhl
YTM2N2EzNjlkMGRkYjQ1Li4yNTI1OWRhYWY5MjM5MWY2Y2U3MTk3YTA3ZDU3MmNiNGNiMjQ2MmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwCkBAIC0xMjIsMTUgKzEyMiw2IEBAIEltYWdlRGVjb2Rlcjo6SW1hZ2VE
ZWNvZGVyKCkKICAgICBtX25hdGl2ZURlY29kZXIgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVh
dGVJbmNyZW1lbnRhbChudWxscHRyKSk7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VEZWNv
ZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2
ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vi
c2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXgu
Ci0gICAgZmxvYXQgY2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBzdGQ6Om1p
bjxmbG9hdD4oMSwgc2NhbGUpKTsKLSAgICBTdWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9IGNlaWxm
KGxvZzJmKDEgLyBjbGFtcGVkU2NhbGUpKTsKLSAgICBBU1NFUlQocmVzdWx0ID49MCAmJiByZXN1
bHQgPD0gMyk7Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNhbXBsaW5n
TGV2ZWwpOwotfQotCiBzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWlu
ZVByb3BlcnRpZXMoKQogewogICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcgbWFsbG9jL2NhbGxv
YyBjYWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCkBAIC0yMTAsMjYgKzIwMSwyNSBAQCBp
bnQgSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQoKSBjb25zdAogICAgIHJldHVybiBjQW5p
bWF0aW9uTm9uZTsKIH0KIAotYm9vbCBJbWFnZURlY29kZXI6OmhvdFNwb3QoSW50UG9pbnQmIGhv
dFNwb3QpIGNvbnN0CitPcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkg
Y29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRv
cHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5n
ZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKICAgICBpZiAoIXByb3BlcnRp
ZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAg
CiAgICAgaW50IHggPSAtMSwgeSA9IC0xOwogICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJl
clJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBDRlNUUigiaG90c3Bv
dFgiKSk7CiAgICAgaWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJ
bnRUeXBlLCAmeCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CiAgICAgCiAgICAgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHBy
b3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WSIpKTsKICAgICBpZiAoIW51bSB8fCAhQ0ZO
dW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ5KSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICAKICAgICBpZiAoeCA8IDAgfHwg
eSA8IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAg
ICAgCi0gICAgaG90U3BvdCA9IEludFBvaW50KHgsIHkpOwotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBJbnRQb2ludCh4LCB5KTsKIH0KIAogSW50U2l6ZSBJbWFnZURlY29kZXI6OmZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwpIGNvbnN0CkBAIC0zODYsMjEgKzM3NiwyMSBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0
YShDRkRhdGFSZWYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgQ0dJbWFnZVNvdXJj
ZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLCBhbGxEYXRhUmVjZWl2ZWQp
OwogfQogCi12b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUg
c2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdl
LgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGlu
c2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMK
ICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIHNldERhdGEo
ZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgc2V0RGF0
YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAg
ICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0g
ICAgZGF0YS0+cmVmKCk7CisgICAgZGF0YS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5
dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25l
IGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBs
b2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92
ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBv
aW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlk
ZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwg
c2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChkYXRhLCBk
YXRhLT5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURp
cmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1h
Z2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJv
dmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDhj
NmE5ZTIyNzgwNDNmYTVhYzcyMTI2MTdmMWUwOTMxNDcxZmQ0YjQuLjM3NGI4YjY3MzgwZTU3OTll
NDI3NDkzNGRiZWYxNmMxYWUyYTE0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMjksMTkgKzI5LDIzIEBACiAj
aW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKIAorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0lt
YWdlU291cmNlUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZURlY29kZXIgewogcHVibGljOgog
ICAgIEltYWdlRGVjb2RlcigpOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VEZWNvZGVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNv
ZGVyPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiwgSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9u
LCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZURlY29kZXI+KCk7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7Ci0g
ICAgc3RhdGljIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0
IHNjYWxlLCBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKTsKICAgICAK
ICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKICAgICBib29sIGlzU2l6ZUF2
YWlsYWJsZSgpIGNvbnN0OwpAQCAtNTAsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBz
aXplKCkgY29uc3Q7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKICAgICBpbnQgcmVw
ZXRpdGlvbkNvdW50KCkgY29uc3Q7Ci0gICAgYm9vbCBob3RTcG90KEludFBvaW50JiBob3RTcG90
KSBjb25zdDsKKyAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OwogICAgIAog
ICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNv
bnN0OwogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0OwpAQCAt
NjQsNyArNjgsOSBAQCBwdWJsaWM6CiAgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsKICAgICAKICAgICB2b2lk
IHNldERhdGEoQ0ZEYXRhUmVmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIAorICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAg
bXV0YWJsZSBJbnRTaXplIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ5ZDRlMTVjOWZmZTc5MGMyZTY4NTI0NmZlOGY4NWViNTYxNjA4M2EuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
MTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SW1hZ2VTb3VyY2UuaCIKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgi
Ci0KLSNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRp
b24uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uLCBJbWFn
ZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi17Ci0gICAgLy8gRklYTUU6IEFs
cGhhT3B0aW9uIGFuZCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBhcmUgaWdub3JlZC4KLX0K
LQotSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCi17Ci0gICAgY2xlYXIodHJ1ZSk7Ci19Ci0K
LXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1lcywgc2l6ZV90LCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotICAgIC8vIFJlY2Vu
dCB2ZXJzaW9ucyBvZiBJbWFnZUlPIGRpc2NhcmQgcHJldmlvdXNseSBkZWNvZGVkIGltYWdlIGZy
YW1lcyBpZiB0aGUgY2xpZW50Ci0gICAgLy8gYXBwbGljYXRpb24gbm8gbG9uZ2VyIGhvbGRzIHJl
ZmVyZW5jZXMgdG8gdGhlbSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHRocm93IGF3YXkKLSAgICAv
LyB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZCB0byBkZXN0cm95IGFs
bCBvZiB0aGUgZnJhbWVzLgotICAgIGlmICghZGVzdHJveUFsbEZyYW1lcykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9kZWNvZGVyID0gbnVsbHB0cjsKLSAgICAKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwotfQotICAgIAotdm9pZCBJbWFn
ZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqKQotewotICAgIGlm
IChpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kZWNvZGVyID0gSW1hZ2VE
ZWNvZGVyOjpjcmVhdGUoKTsKLX0KLQotdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotICAgIGlmICghZGF0YSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoZGF0YSk7Ci0g
ICAgCi0gICAgaWYgKCFpbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIG1fZGVjb2Rlci0+c2V0RGF0
YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwotfQotCi1TdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVu
YW1lRXh0ZW5zaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVj
b2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwotfQotICAgIAotU3Vic2FtcGxp
bmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBj
b25zdAotewotICAgIGlmICghbV9hbGxvd1N1YnNhbXBsaW5nIHx8ICFhbGxvd1N1YnNhbXBsaW5n
T2ZGcmFtZUF0SW5kZXgoMCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVmFsdWVzIGNo
b3NlbiB0byBiZSBhcHByb3ByaWF0ZSBmb3IgaU9TLgotICAgIGNvbnN0IGludCBjTWF4aW11bUlt
YWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nID0gNSAqIDEwMjQgKiAxMDI0OwotICAgIGNvbnN0IFN1
YnNhbXBsaW5nTGV2ZWwgbWF4U3Vic2FtcGxpbmdMZXZlbCA9IDM7Ci0KLSAgICBTdWJzYW1wbGlu
Z0xldmVsIGN1cnJlbnRMZXZlbCA9IDA7Ci0gICAgZm9yICggOyBjdXJyZW50TGV2ZWwgPD0gbWF4
U3Vic2FtcGxpbmdMZXZlbDsgKytjdXJyZW50TGV2ZWwpIHsKLSAgICAgICAgSW50U2l6ZSBmcmFt
ZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KDAsIGN1cnJlbnRMZXZlbCk7Ci0gICAgICAgIGlmIChm
cmFtZVNpemUuYXJlYSgpIDwgY01heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZykKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBjdXJyZW50TGV2ZWw7Ci19Ci0g
ICAgCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCgpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBjYWxjdWxhdGVNYXhp
bXVtU3Vic2FtcGxpbmdMZXZlbCgpOwotI2VuZGlmCi0gICAgcmV0dXJuIDA7Ci19Ci0KLVN1YnNh
bXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBz
Y2FsZSkgY29uc3QKLXsKLSAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVs
Rm9yU2NhbGUoc2NhbGUsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkpOwotfQotCi1ib29sIElt
YWdlU291cmNlOjppc1NpemVBdmFpbGFibGUoKQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgp
ICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCk7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6
OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5hbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoaW5kZXgpOwotfQotCi1JbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVB
dEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24p
IGNvbnN0Ci17Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4geyB9Owot
ICAgIAotICAgIEludFNpemUgc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9
IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKLSAgICAKLSAgICByZXR1cm4g
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24g
JiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUo
KSA6IHNpemU7Ci19Ci0KLUltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9u
QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkg
PyBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCkgOiBJbWFnZU9yaWVudGF0aW9u
KCk7Ci19Ci0KLUludFNpemUgSW1hZ2VTb3VyY2U6OnNpemUoKSBjb25zdAotewotICAgIHJldHVy
biBmcmFtZVNpemVBdEluZGV4KDAsIDApOwotfQotICAgIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6
c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1lU2l6
ZUF0SW5kZXgoMCwgMCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwotfQotCi1ib29sIEltYWdl
U291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAotewotICAgIHJldHVy
biBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aG90U3BvdChob3RTcG90KTsKLX0KLQotc2l6
ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25z
dAotewotICAgIHJldHVybiBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJv
cGVydGllcygpOwotfQotICAgIAotaW50IEltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQoKQot
ewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQo
KSA6IGNBbmltYXRpb25Mb29wT25jZTsKLX0KLQotc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNv
dW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJh
bWVDb3VudCgpIDogMDsKLX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlU291cmNlOjpj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0
cjsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qg
aW5kZXgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5mcmFtZUlz
Q29tcGxldGVBdEluZGV4KGluZGV4KTsKLX0KLQotZmxvYXQgSW1hZ2VTb3VyY2U6OmZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpIDogMDsKLX0KLQotYm9vbCBJ
bWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJl
dHVybiAhaW5pdGlhbGl6ZWQoKSB8fCBtX2RlY29kZXItPmZyYW1lSGFzQWxwaGFBdEluZGV4KGlu
ZGV4KTsKLX0KLQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAotewotICAg
IEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdM
ZXZlbCk7Ci0gICAgcmV0dXJuIGZyYW1lU2l6ZS5hcmVhKCkgKiA0OwotfQotICAgIAotdm9pZCBJ
bWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICBpZiAobV9hbGxv
d1N1YnNhbXBsaW5nKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImFsbG93LXN1YnNhbXBsaW5n
IiwgbV9hbGxvd1N1YnNhbXBsaW5nKTsKLSAgICAKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uID0gb3JpZW50YXRpb25BdEluZGV4KDApOwotICAgIGlmIChvcmllbnRhdGlvbiAhPSBP
cmlnaW5Ub3BMZWZ0KQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm9yaWVudGF0aW9uIiwgb3Jp
ZW50YXRpb24pOwotfQotCi19Ci0KLSNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCA2ZmUyOTBlMjI2MThmYmQ3NmM3NWM4NDQ5MjQ0NzJlMzE5N2ZmZjg3Li5jZjExNzVkNDkzNjhk
NDk2MTk2YzA0NzAyMzk1MDNiNmIzNzk4ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTEsNCArMSw1
IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTI3MCwxMyArMjcxLDE2IEBAIHRlbXBsYXRlIDxNYXRj
aFR5cGUgdHlwZT4gaW50IGdldFNjYWxlZFZhbHVlKGNvbnN0IFZlY3RvcjxpbnQ+JiBzY2FsZWRW
YWx1ZXMsIGluCiAKIH0KIAotYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hl
LnNpemUoKSA8PSBpbmRleCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKG1fZnJhbWVC
dWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkK
LSAgICAgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uaGFzQWxwaGEoKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2ZyYW1l
QnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7
Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5k
ZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFmcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSB8
fCBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmhhc0FscGhhKCk7CiB9CiAKIHVuc2lnbmVkIElt
YWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdApAQCAtMjg3
LDYgKzI5MSw0MiBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QKICAgICByZXR1cm4gbV9zaXplLmFyZWEoKSAqIHNpemVvZihJbWFn
ZUZyYW1lOjpQaXhlbERhdGEpOwogfQogCitmbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRp
b25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNh
Y2hlLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAobV9mcmFt
ZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkgYSAw
IGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4K
KyAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlvbiBv
ZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5CisgICAgLy8gYSBkdXJhdGlvbiBv
ZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJr
aXQub3JnL2IvMzYwODI+CisgICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgY29uc3Qg
ZmxvYXQgZHVyYXRpb24gPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmR1cmF0aW9uKCkgLyAx
MDAwLjBmOworICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKKyAgICAgICAgcmV0dXJuIDAuMTAw
ZjsKKyAgICByZXR1cm4gZHVyYXRpb247Cit9CisKK05hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rl
cjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
KSBjb25zdAoreworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4g
Y2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuIElmIHdlIGhhdmUgYW4KKyAgICAvLyBlbXB0
eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KKyAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlW2lu
ZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZl
IGltYWdlLiBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKKyAgICAvLyBpcyBhbHJlYWR5IGluIGEg
bmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNyZW1lbnRzIGl0cyByZWZjb3VudC4K
KyAgICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5hc05ld05hdGl2ZUltYWdlKCk7
Cit9CisKIHZvaWQgSW1hZ2VEZWNvZGVyOjpwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKQog
ewogICAgIG1fc2NhbGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDUzNDdhNDdiNzIzY2Q1ZjAz
YjYyZDNiMzUyY2Y5NDUxNDdkYTBlYWEuLjViYzZiMDI1NDJkYjRiMTUwNDg0YmZhOGNkYzNhZmYx
NTg5MTI0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
MjM1LDE1ICsyMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbWFnZURlY29kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CiAgICAgICAgIEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICAgICAgICAgIDogbV9zY2FsZWQoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6
QWxwaGFQcmVtdWx0aXBsaWVkKQorICAgICAgICAgICAgOiBtX3ByZW11bHRpcGx5QWxwaGEoYWxw
aGFPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKICAgICAgICAgICAg
ICwgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biA9PSBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkKQotICAgICAgICAg
ICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbWF4TnVtUGl4ZWxz
KC0xKQotICAgICAgICAgICAgLCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQotICAgICAgICAg
ICAgLCBtX2ZhaWxlZChmYWxzZSkgeyB9CisgICAgICAgIHsKKyAgICAgICAgfQogCi0gICAgICAg
IHZpcnR1YWwgfkltYWdlRGVjb2RlcigpIHsgfQorICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29k
ZXIoKQorICAgICAgICB7CisgICAgICAgIH0KIAogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVy
LW93bmVkIGRlY29kZXIgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBSZXR1cm5zIDAgaWYKICAg
ICAgICAgLy8gd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRl
ZCBkYXRhIChwb3NzaWJseQpAQCAtMjU0LDExICsyNTQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
QWxsRGF0YVJlY2VpdmVkOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKKyAgICAgICAgdmlydHVhbCB2b2lk
IHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKG1fZmFpbGVkKQogICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGE7CisgICAgICAgICAgICBtX2RhdGEgPSAmZGF0YTsK
ICAgICAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAgICAg
ICAgIH0KIApAQCAtMjgyLDcgKzI4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ly8gc2l6ZXMuICBUaGlzIGRvZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBmb3IgR0lGLCBzaW5j
ZSBkZWNvZGluZyBHSUZzCiAgICAgICAgIC8vIGNvbXBvc2l0ZXMgYW55IHNtYWxsZXIgZnJhbWVz
IGFnYWluc3QgcHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQogICAgICAgICAvLyBzaXpl
IGZyYW1lcy4KLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90
KSBjb25zdAorICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBz
aXplKCk7CiAgICAgICAgIH0KQEAgLTMxMCwxNiArMzEwLDI0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50ZXIuCiAgICAgICAgIHZpcnR1
YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgPSAwOwogCisgICAgICAg
IGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0OworCiAgICAgICAgIC8v
IE1ha2UgdGhlIGJlc3QgZWZmb3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0ZWQgZnJh
bWUgaGFzIGFscGhhIGNoYW5uZWwuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBmcmFtZUhhc0FscGhh
QXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCkgY29uc3Q7CiAKICAgICAgICAgLy8gTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNv
ZGVkIGZyYW1lIHJlcXVlc3RlZC4gUmV0dXJuIDAgaWYgbm90IHlldCBkZWNvZGVkLgotICAgICAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAg
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIAor
ICAgICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAg
ICAKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsKIAogICAgICAgICB2b2lkIHNldElnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
ID0gZmxhZzsgfQogICAgICAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KIAotICAgICAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlv
bjsgfQorICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3Qp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wg
YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgICAgICBlbnVtIHsgaWNjQ29sb3JQcm9maWxlSGVhZGVyTGVuZ3RoID0gMTI4
IH07CiAKQEAgLTMzMCw2ICszMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzE2XSwgIlJHQiAiLCA0KTsKICAgICAgICAg
fQogCisgICAgICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0
aWVzKCkgeyByZXR1cm4gMDsgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0LCBTdWJzYW1wbGluZ0xldmVsKSB7
IHJldHVybiAwOyB9CisKICAgICAgICAgc3RhdGljIGJvb2wgaW5wdXREZXZpY2VDb2xvclByb2Zp
bGUoY29uc3QgY2hhciogcHJvZmlsZURhdGEsIHVuc2lnbmVkIHByb2ZpbGVMZW5ndGgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvZmlsZUxlbmd0aCwgcHJvZmlsZUxl
bmd0aCA+PSBpY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpOwpAQCAtMzU0LDEzICszNjYsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGNvbXBvc2l0aW5nKS4KICAgICAgICAg
dmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQogCi0jaWYgRU5B
QkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICAgICAgdm9pZCBzZXRNYXhOdW1Q
aXhlbHMoaW50IG0pIHsgbV9tYXhOdW1QaXhlbHMgPSBtOyB9Ci0jZW5kaWYKLQogICAgICAgICAv
LyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFy
Z3VtZW50CiAgICAgICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZh
bHNlLgotICAgICAgICB2aXJ0dWFsIGJvb2wgaG90U3BvdChJbnRQb2ludCYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Qo
KSBjb25zdCB7IHJldHVybiBOdWxsb3B0OyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZv
aWQgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0zNzQsNyArMzgyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1
ZmZlckNhY2hlOwogICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBh
bnkgbW9yZSwgZm9yIGFueSBwb3J0PwogICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2Zp
bGU7Ci0gICAgICAgIGJvb2wgbV9zY2FsZWQ7CisgICAgICAgIGJvb2wgbV9zY2FsZWQgeyBmYWxz
ZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CiAgICAgICAgIFZlY3Rv
cjxpbnQ+IG1fc2NhbGVkUm93czsKICAgICAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CkBA
IC0zOTIsMTAgKzQwMCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAg
ICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICAgICAgYm9vbCBtX3NpemVBdmFpbGFibGU7Ci0gICAg
ICAgIGludCBtX21heE51bVBpeGVsczsKLSAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVk
OwotICAgICAgICBib29sIG1fZmFpbGVkOworICAgICAgICBib29sIG1fc2l6ZUF2YWlsYWJsZSB7
IGZhbHNlIH07CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IDEwMjQgKiAxMDI0IH07CisjZWxz
ZQorICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4ZWxzIHsgLTEgfTsKKyNlbmRp
ZgorICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OworICAgICAgICBi
b29sIG1fZmFpbGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDNkNzZiYzJhOTc0ZGVhZjczMThkNTcw
YjFlZWMzMTYyNjA5OTgwNjUuLmNhZjM1Yzk3ZjE3ZWRkMzRiYzlkZjg5YWIwOWU4NzAwYWVlNmM3
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC00NywxNCArNDcsMTQgQEAgQk1Q
SW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6
OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAg
ICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEltYWdlRGVjb2Rlcjo6c2V0
RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGlmIChtX3JlYWRlcikKLSAgICAgICAg
bV9yZWFkZXItPnNldERhdGEoZGF0YSk7CisgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKCZkYXRh
KTsKIH0KIAogYm9vbCBCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VEZWNvZGVyLmgKaW5kZXggMWM4ODJlMTM5OTUyZTQ3NDgzMmJjYmMyMjA1MGE2MGZiNGZm
YmI5Ny4uYjJjNDc4OTU2MTliZWNhZjI1ZDEwYTMwYzJlODNhZTM1NTg4NzZjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZURlY29kZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gImJtcCI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lk
IHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKICAgICAgICAgdmlydHVh
bCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KTsKICAgICAgICAg
Ly8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFkZXJ8LiAgQmUgY2FyZWZ1bCB0
byBhdm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjZDU2ZTY3ZWI5MThiMTY5
M2M0ZWNjZjc0MGFmODBjODU5MzZhNzk4Li43OTE1MTU2MDcyZDcxNzA0NDM3MjU3MzA2YjA5NTkw
OGYzNDk4OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDIsMTQgKzQyLDE0
IEBAIEdJRkltYWdlRGVjb2Rlcjo6fkdJRkltYWdlRGVjb2RlcigpCiB7CiB9CiAKLXZvaWQgR0lG
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7
CiAgICAgaWYgKG1fcmVhZGVyKQotICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShkYXRhKTsKKyAg
ICAgICAgbV9yZWFkZXItPnNldERhdGEoJmRhdGEpOwogfQogCiBib29sIEdJRkltYWdlRGVjb2Rl
cjo6aXNTaXplQXZhaWxhYmxlKCkKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIEdJRkltYWdlRGVj
b2Rlcjo6ZGVjb2RlKHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZRdWVyeSBxdWVyeSkKIAogICAg
IGlmICghbV9yZWFkZXIpIHsKICAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJ
RkltYWdlUmVhZGVyPih0aGlzKTsKLSAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhKTsK
KyAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAgICB9CiAKICAgICBp
ZiAocXVlcnkgPT0gR0lGU2l6ZVF1ZXJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
NDA2MTA4OTUzOTVkOWIxMmNjNjlkMTkxY2MzMDUyMjA5Y2MwNjg3Mi4uYzRjNDlhYzM0ZThjODJj
YTI5MDM4YWNlZGMwMzlmNTkwZjM4MWJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAt
NDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNv
ZGVyCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyBy
ZXR1cm4gImdpZiI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRT
aXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwogICAgICAgICB2aXJ0dWFsIHNp
emVfdCBmcmFtZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IGZiODc4ZWQwOGUy
OGQ0MDJlZWYzNzBkY2EzOTJjZjlmMjZlZDA0NjkuLmVhNDJiMTFhNzhjMzhlYmU2NWMyYzI4Yjkx
YzhhZmI2MjYzNWE5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yNDYsNyArMjQ2LDcg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQorICAgIHZvaWQg
c2V0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQog
ICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVj
b2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA1NmFjOTIxY2QwODQ2ODIz
YjgxMTE4ZWE2ZjNhZGYyMTFkYTdhMDg1Li5iZGM3MmRjNDc5MDJmMWM1YzNjMGNmYzQ4YjM5ZTUy
MGU2ZWQzOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTUsNyArNTUsNyBA
QCBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFnZURlY29kZXIoKQogewogfQogCi12b2lkIElDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgIGZvciAoQk1QUmVhZGVy
czo6aXRlcmF0b3IgaShtX2JtcFJlYWRlcnMuYmVnaW4oKSk7IGkgIT0gbV9ibXBSZWFkZXJzLmVu
ZCgpOyArK2kpIHsKICAgICAgICAgaWYgKCppKQotICAgICAgICAgICAgKCppKS0+c2V0RGF0YShk
YXRhKTsKKyAgICAgICAgICAgICgqaSktPnNldERhdGEoJmRhdGEpOwogICAgIH0KICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fcG5nRGVjb2RlcnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHNl
dERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChpKTsKQEAgLTEyOCwyMSArMTI4LDIwIEBAIGJvb2wg
SUNPSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OnNl
dEZhaWxlZCgpOwogfQogCi1ib29sIElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdChJbnRQb2ludCYg
aG90U3BvdCkgY29uc3QKK09wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNw
b3QoKSBjb25zdAogewogICAgIC8vIFdoZW4gdW5zcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGZyYW1l
IGlzIGFsd2F5cyBmcmFtZSAwLiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aAogICAgIC8vIEJpdG1h
cEltYWdlIHdoZXJlIGN1cnJlbnRGcmFtZSgpIHN0YXJ0cyBhdCAwIGFuZCBvbmx5IGluY3JlYXNl
cyB3aGVuIGFuaW1hdGlvbiBpcwogICAgIC8vIHJlcXVlc3RlZC4KLSAgICByZXR1cm4gaG90U3Bv
dEF0SW5kZXgoMCwgaG90U3BvdCk7CisgICAgcmV0dXJuIGhvdFNwb3RBdEluZGV4KDApOwogfQog
Ci1ib29sIElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdEF0SW5kZXgoc2l6ZV90IGluZGV4LCBJbnRQ
b2ludCYgaG90U3BvdCkgY29uc3QKK09wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6
OmhvdFNwb3RBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPj0g
bV9kaXJFbnRyaWVzLnNpemUoKSB8fCBtX2ZpbGVUeXBlICE9IENVUlNPUikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKIAotICAgIGhvdFNwb3QgPSBtX2Rp
ckVudHJpZXNbaW5kZXhdLm1faG90U3BvdDsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
bV9kaXJFbnRyaWVzW2luZGV4XS5tX2hvdFNwb3Q7CiB9CiAKIApAQCAtMTY0LDcgKzE2Myw3IEBA
IHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoc2l6ZV90
IGluZGV4KQogICAgIC8vIENvcHkgb3V0IFBORyBkYXRhIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGFu
ZCBzZW5kIHRvIHRoZSBQTkcgZGVjb2Rlci4KICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIGNvcHkg
YnkgbWFraW5nIHRoZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2UgYW4KICAgICAvLyBvcHRpb25h
bCBvZmZzZXQuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+
c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCkpOworICAgIFJlZjxTaGFyZWRCdWZmZXI+
IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2RpckVudHJ5Lm1f
aW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQpKTsK
ICAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YShwbmdEYXRhLmdldCgpLCBpc0FsbERh
dGFSZWNlaXZlZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IDE0OTQ3OTdh
OWJmMzFjM2U2NGI4MWRiNmNlMzMzZDkxMjdmYjg5ZDguLjlmNDdhMDhkMzk0NjY1ZDBjZGI3YjMx
ODUzNTE2MDBjN2Q3YzYzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgogICAg
ICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJp
Y28iOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXpl
QXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCkgY29uc3Q7CkBAIC01
Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gYXZvaWQgYWNjZXNz
aW5nIGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20KICAg
ICAgICAgLy8gaW5zaWRlIEJNUEltYWdlUmVhZGVyIQogICAgICAgICB2aXJ0dWFsIGJvb2wgc2V0
RmFpbGVkKCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBob3RTcG90KEludFBvaW50JikgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIGVudW0gSW1hZ2VUeXBlIHsKQEAgLTExNiw5ICsxMTYsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGNvdWxkIGJlIGRlY29kZWQuCiAgICAg
ICAgIGJvb2wgcHJvY2Vzc0RpcmVjdG9yeUVudHJpZXMoKTsKIAotICAgICAgICAvLyBTdG9yZXMg
dGhlIGhvdC1zcG90IGZvciB8aW5kZXh8IGluIHxob3RTcG90fCBhbmQgcmV0dXJucyB0cnVlLAot
ICAgICAgICAvLyBvciByZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vbmUuCi0gICAgICAgIGJv
b2wgaG90U3BvdEF0SW5kZXgoc2l6ZV90IGluZGV4LCBJbnRQb2ludCYgaG90U3BvdCkgY29uc3Q7
CisgICAgICAgIC8vIFJldHVybnMgdGhlIGhvdC1zcG90IGZvciB8aW5kZXh8LCByZXR1cm5zIE51
bGxvcHQgaWYgdGhlcmUgaXMgbm9uZS4KKyAgICAgICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNw
b3RBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKICAgICAgICAgLy8gUmVhZHMgYW5kIHJldHVybnMg
YSBkaXJlY3RvcnkgZW50cnkgZnJvbSB0aGUgY3VycmVudCBvZmZzZXQgaW50bwogICAgICAgICAv
LyB8ZGF0YXwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYzBlOTVhZmFkMDk0MjI3MWI5NmIzYWRjOGJkMzVlYWIwNmQzYTRm
NC4uMWQ3YWMwOTQ3YWUyZjc0Mzk0NzU5ZmIyZTQxOGQyZjUxOGE0YjgwYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE2LTA0LTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZSxjb20+CisKKyAgICAgICAgTWVyZ2UgQ0cgSW1hZ2VTb3VyY2UgYW5kIG5vbiBDRyBJbWFn
ZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBpbiBvbmUgZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisgICAgICAgIAorICAgICAgICBBZGQgYSB0ZXN0IGZvciBpbWFnZSBzdWIt
c2FtcGxpbmcuIFRoZSBpbWFnZSBzdWJzYW1wbGluZyBpcyBlbmFibGVkIGJ5CisgICAgICAgIGRl
ZmF1bHQgZm9yIGlPUyBwbGF0Zm9ybSBvbmx5LiBCdXQgaXQgY2FuIGJlIGV4cGxpY2l0bHkgZW5h
YmxlZCB0aHJvdWdoCisgICAgICAgIHRoZSBzZXR0aW5nIEltYWdlU3Vic2FtcGxpbmdFbmFibGVk
LgorCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbDog
QWRkZWQuCisKIDIwMTYtMDQtMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTkyNjguCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40MDMxM2JlYjhkYjc5NDE5NWE2YmVjMjJkZjBiODExYzdiMjMwOTJi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2Ft
cGxpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBkaXYgeworICAgICAgICAgICAgd2lk
dGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIG1hcmdp
bjogMTBweDsKKyAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgfQor
ICAgIDwvc3R5bGU+Cis8aGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBjcmVh
dGVEaXYoY29sb3IpIHsKKyAgICAgICAgdmFyIGRpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgZGl2RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3Ig
PSBjb2xvcjsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXZFbGVtZW50KTsK
KyAgICB9CisKKyAgICBjcmVhdGVEaXYoInJlZCIpOworICAgIGNyZWF0ZURpdigiZ3JlZW4iKTsK
KyAgICBjcmVhdGVEaXYoImJsdWUiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjI4YWUzYmU5ZGY1MzAxZGIyYTE4ZDgyOTM0ZTczYmE1ZDk4OTQ3YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwKQEAg
LTAsMCArMSw0MyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHls
ZT4KKyAgICAgICAgZGl2IHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIH0KKyAgICAgICAgaW1nIHsKKyAgICAgICAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIH0K
KyAgICA8L3N0eWxlPgorPGhlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VTdWJz
YW1wbGluZ0VuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJbWFnZShjb2xvcikg
eworICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
CisgICAgICAgIGNhbnZhcy53aWR0aCA9IDEwMjQgKiAzOworICAgICAgICBjYW52YXMuaGVpZ2h0
ID0gMTAyNCAqIDM7CisgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsK
KyAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9yOworICAgICAgICBjdHguZmlsbFJlY3QoMCwg
MCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAgICAgICB2YXIgaW1nRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICBpbWdFbGVtZW50LnNy
YyA9IGNhbnZhcy50b0RhdGFVUkwoImltYWdlL3BuZyIpOworCisgICAgICAgIHZhciBkaXZFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdkVsZW1lbnQu
YXBwZW5kQ2hpbGQoaW1nRWxlbWVudCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZGl2RWxlbWVudCk7CisgICAgfQorICAgIAorICAgIGNyZWF0ZUltYWdlKCJyZWQiKTsKKyAg
ICBjcmVhdGVJbWFnZSgiZ3JlZW4iKTsKKyAgICBjcmVhdGVJbWFnZSgiYmx1ZSIpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276127</attachid>
            <date>2016-04-10 20:42:38 -0700</date>
            <delta_ts>2016-04-10 21:47:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160410204249.patch</filename>
            <type>text/plain</type>
            <size>65045</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTViMjJmYWY4YzVmZWYw
OGEzOGVkYjk1YzM4ZmM0MTI4YTRkMjcwNC4uZWZlOTYwOWYwY2Q1NjkyNGY2ZmNjODY1Y2FkN2Yz
ZmY3NGQ0ZGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAxNi0wNC0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIElt
YWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4gQWxs
IHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJbWFn
ZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNhbiBo
YXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0IHJp
ZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0L2lt
YWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5kIGFk
ZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL0N1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1p
bmVIb3RTcG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aG90U3BvdCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmhvdFNwb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldEhvdFNwb3QpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgZ2V0SG90
U3BvdCgpIHRvIGhvdFNwb3QoKSBhbmQgY2hhbmdlIGl0IHRvIHJldHVybiBPcHRpb25hbDxJbnRQ
b2ludD4uCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1v
dmUgY2xlYXIodHJ1ZSkgY2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxs
cyBJbWFnZURlY29kZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hp
Y2ggd2lsbCBkbyBub3RoaW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIq
IHRvCisgICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJ
bWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29u
c3Qgc3RhdGljIGludCBDRyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0
CisgICAgICAgIGJhc2VkIG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVm
ZmVyJiB0byB0aGUgdW5kZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0
dXJucyB0aGUgbWF4aW11bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBh
biBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2Ft
cGxpbmdMZXZlbEZvclNjYWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1
YnNhbXBsaW5nTGV2ZWwgdGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwgZm9yCisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKTogUmV0dXJucyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hp
Y2ggY2FuIGRldGVybWluZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisg
ICAgICAgIHplcm8uIEZvciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNv
cnJlY3RlZCBsYXRlci4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
aXNTaXplQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBl
cnMgZm9yIHRoZSBJbWFnZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rp
b25zCisgICAgICAgIGlzIHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisg
ICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJv
bSBCaXRtYXBJbWFnZTo6ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpnZXRIb3RTcG90KTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpzZXRBbGxvd1N1YnNhbXBsaW5nKTogQ2FsbGVkIGZyb20gQml0bWFwSW1hZ2U6OnNldEFsbG93
U3Vic2FtcGxpbmcoKS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICBTZXR0aW5nIG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSB3YXMgbW92ZWQgdG8gdGhlIG5vbiBD
RyBJbWFnZURlY29kZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
RGF0YSk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKTogRGVsZXRl
ZC4KKyAgICAgICAgVGhlIGNvZGUgd2FzIG1vdmVkIHRvIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoKS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKTogTWFrZSB0aGUgcHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgc3VpdGFi
bGUgZm9yIENHIGFuZCBub24gQ0cgY2FzZXMuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEVtcHR5IGZ1bmN0aW9ucyBmb3IgQ0cuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KTogQSBtZXcgZnVuY3Rpb24gdG8gcmV0dXJuCisgICAgICAgIHdoZXRoZXIg
dGhlIGZyYW1lIGRlY29kaW5nIGlzIGNvbXBsZXRlIG9yIG5vdC4KKyAgICAgICAgCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KTogU2ltcGxpZnkg
dGhlIGxvZ2ljLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOiBUaGUgY29kZSB3YXMgbW92ZWQgZnJvbQorICAgICAgICBJbWFn
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoKSBpbiBJbWFnZVNvdXJjZS5jcHAuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCk6IFRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6IEluaXRpYWxpemUgdGhlIG1lbWJl
cnMgaW4gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6On5JbWFnZURlY29k
ZXIpOiBGaXggdGhlIGJyYWNlcyBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6c2V0RGF0YSk6IENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgYXJndW1lbnQgZnJvbQorICAgICAg
ICBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOiBBZGQgdGhlIGFyZ3VtZW50IFN1YnNhbXBsaW5n
TGV2ZWwKKyAgICAgICAgc28gaXQgY2FuIGhhdmUgdGhlIHNhbWUgcHJvdG90eXBlIGFzIENHLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbkF0SW5kZXgpOiBSZW5h
bWUgaXQgdG8gdGhlIHNhbWUgb2YgQ0cuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUp
OiBBZGQgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGFuZCByZXR1cm4gdGhlIGRlZmF1bHQgdmFs
dWVzIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGFkZCBkaXJlY3RpdmUgY29tcGlsZWQKKyAgICAgICAg
bm9uIENHIGJsb2NrcyBpbiBJbWFnZVNvdXJjZS5jcHAuCisKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6aG90U3BvdCk6IFJldHVybiBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAg
IAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscyk6IERlbGV0
ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKEdJ
RkltYWdlUmVhZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgIFVzZSByZWZlcmVuY2UgU2hhcmVkQnVmZmVyIGluc3Rl
YWQgb2YgcG9pbnRlciBTaGFyZWRCdWZmZXIuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
SUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6aG90U3BvdEF0SW5kZXgpOgorICAgICAgICBDaGFuZ2UgaG90U3BvdCgpIHRvIHJldHVy
biBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgpOgorICAgICAg
ICBQYXNzIHJlZmVyZW5jZSBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBwb2ludGVyIFNoYXJlZEJ1
ZmZlci4KKwogMjAxNi0wNC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEZpeCB0aGUgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGY1YzY2MzVjYzExZDNm
Y2YzNGZiNmZkMzM5NTJhNTcwYWY5NjhkM2MuLmRiMTg2NzI1YjkzMDY4M2RlY2Y4ZWE2NTlmZWM0
YmI3Mzc0M2IzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjEzLDYgKzIyMTMsNyBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VPcmllbnRhdGlvbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCBjNjcyY2M3MDdmYTg3ODViYTUyNzQ0
MmU5MDRiMWNmYWRiMjUxNWFjLi4wOWM4MDk0ZTc3YzRiZjMyYWNmNDdhYTkzZTlkYmFlOTk2Mjk3
ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTcyLDcgKzcyLDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9p
bnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IGI3MmYyZTE1YzhiNTJlYWUxYTNlNmQ2YTRlYTZhZDEyYjEy
YTI4ZTguLmFlYTM1NzEwNTkwOWI3YzdlZTIwNTUyNzU5ZWFjOTlmNDU2ZDVhMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC00MDYsNyArNDA2LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMu
bW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NWY2Mjg2YjYzNDlkMmY5NDc1OWUyYTNi
NGUwMzcwMmUyOTdiMDBjLi4yNTg5YzM1MWVhNTk3NTk5ZWU4YTA3MDExZTYwZmIzYTc1YTIyM2Nj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00OTg2LDcgKzQ5ODYsNiBAQAogCQlCMjc1MzU1QTBCMDUzODE0MDAyQ0U2NEYgLyog
RmxvYXRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLzsgfTsK
IAkJQjI3NTM1NUIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTJEMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi87IH07CiAJCUIyNzUzNTVFMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLzsgfTsKLQkJ
QjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzEwQjA1MzgxNDAwMkNF
NjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovOyB9OwogCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2
NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi87
IH07CiAJCUIyNzUzNTYxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzMwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYyMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbnRTaXplQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi87IH07
CkBAIC0xMjg3Nyw3ICsxMjg3Niw2IEBACiAJCUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBG
bG9hdFJlY3RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxv
YXRSZWN0Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUyRDBCMDUz
ODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZsb2F0U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAv
KiBJbnRQb2ludENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnRQb2ludENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzMwQjA1
MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW50UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50U2l6ZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxNzg1LDcgKzIxNzgzLDYgQEAKIAkJCQlCMjc1MzUzMDBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8sCiAJCQkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8q
IEltYWdlRGVjb2RlckNHLmNwcCAqLywKIAkJCQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyog
SW1hZ2VEZWNvZGVyQ0cuaCAqLywKLQkJCQlCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1h
Z2VTb3VyY2VDRy5jcHAgKi8sCiAJCQkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3Vy
Y2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRD
Ry5jcHAgKi8sCkBAIC0zMDAwNCw3ICszMDAwMSw2IEBACiAJCQkJMkQ1QTU5MkYxNTI1MjUyMzAw
MzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUxQTJG
NDExN0Q3RDVERTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYzQzcyNUUxOTc0ODc0QjAwQUVERDBDIC8qIEltYWdlU291cmNlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJj
ZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJ
bWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZFMURBNzAw
QkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFOTYx
QzU0MThBRDMzODUwMEQwN0RDNSAvKiBJbmJhbmREYXRhVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAKaW5kZXggNjBhNjE5YWNkYTEzYWE0N2Jh
MTJlYjAzYjRlMjI1ZjI0MWZjM2IyYi4uOWM1OTJmMzc0YjM0ZTdmOTY3OWU5ZGZmNDhmYTEwYWU2
ODAwZTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCkBAIC00NCwxMCArNDQsMTAg
QEAgSW50UG9pbnQgZGV0ZXJtaW5lSG90U3BvdChJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBzcGVjaWZpZWRIb3RTcG90KQogICAgICAgICByZXR1cm4gc3BlY2lmaWVkSG90U3BvdDsKIAog
ICAgIC8vIElmIGhvdCBzcG90IGlzIG5vdCBzcGVjaWZpZWQgZXh0ZXJuYWxseSwgaXQgY2FuIGJl
IGV4dHJhY3RlZCBmcm9tIHNvbWUgaW1hZ2UgZm9ybWF0cyAoZS5nLiAuY3VyKS4KLSAgICBJbnRQ
b2ludCBpbnRyaW5zaWNIb3RTcG90OwotICAgIGJvb2wgaW1hZ2VIYXNJbnRyaW5zaWNIb3RTcG90
ID0gaW1hZ2UtPmdldEhvdFNwb3QoaW50cmluc2ljSG90U3BvdCk7Ci0gICAgaWYgKGltYWdlSGFz
SW50cmluc2ljSG90U3BvdCAmJiBpbWFnZVJlY3QuY29udGFpbnMoaW50cmluc2ljSG90U3BvdCkp
Ci0gICAgICAgIHJldHVybiBpbnRyaW5zaWNIb3RTcG90OworICAgIGlmIChhdXRvIGludHJpbnNp
Y0hvdFNwb3QgPSBpbWFnZS0+aG90U3BvdCgpKSB7CisgICAgICAgIGlmIChpbWFnZVJlY3QuY29u
dGFpbnMoaW50cmluc2ljSG90U3BvdC52YWx1ZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBpbnRy
aW5zaWNIb3RTcG90LnZhbHVlKCk7CisgICAgfQogCiAgICAgcmV0dXJuIEludFBvaW50KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAK
aW5kZXggYTQ3YTk3Mjk1Mjg1MWFhNTRkMzYxOWU2OGE2ZTA5NjAzMDM2NTNlZS4uN2M3OGQzNjVj
MWE0MDJlNmVjMTk0Yjc3MmY1NWE5ZWRiZDZjZGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMjU0LDkgKzI1NCw5IEBAIElu
dFNpemUgQml0bWFwSW1hZ2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAogICAg
IHJldHVybiBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CiB9CiAKLWJvb2wgQml0bWFwSW1h
Z2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CitPcHRpb25hbDxJbnRQb2lu
dD4gQml0bWFwSW1hZ2U6OmhvdFNwb3QoKSBjb25zdAogewotICAgIGJvb2wgcmVzdWx0ID0gbV9z
b3VyY2UuZ2V0SG90U3BvdChob3RTcG90KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc291cmNlLmhv
dFNwb3QoKTsKICAgICBkaWREZWNvZGVQcm9wZXJ0aWVzKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmlu
ZGV4IDUxMTNkNWQ1Mjc3ODE1NGVhZmNmOWEzNDI3YjUyZWIxNWNmZTk2OWMuLjdjOGVjYWNmYzZj
NjFjOTQ0NGQ2MWFkZDRlMjc5NzZjYjIwMjFkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoK
ICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEludFNpemUgc2l6ZVJl
c3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0OwogCi0gICAgYm9vbCBnZXRIb3RTcG90KEludFBv
aW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9kZWNvZGVkU2l6ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAppbmRleCBjMzE0MmFkZWM3YTI1Yzg0NjBlMjlhZjM1MDJiOTQxNDdiNzA2YzdjLi41MGY3
N2UzMTYyMTA3MzQ2YTA3NTA2MjFjZDM3ZTJlZjQ3OWQ2NDdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJHcmFw
aGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5h
dGl2ZUltYWdlUHRyLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTEwNyw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IHJl
Y3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpOyB9CiAg
ICAgZmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBzaXplKCkud2lkdGgoKTsgfQogICAgIGZs
b2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS5oZWlnaHQoKTsgfQotICAgIHZpcnR1
YWwgYm9vbCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gTnVs
bG9wdDsgfQogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgRmxvYXRTaXplIG9yaWdp
bmFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDBkMTAwOTYxZmYyNzYxNTM2
OTk1MGZjYmJmZTFlYzVlYzgzMTg0ZmYuLjdlZDlmZDFkMDc2NzkzZGZmNGRmN2NkMjNkNzdmNTgx
YjhkYWEyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MTAsIDIwMTEsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEu
Y28udWs+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYwpAQCAt
MjksMTkgKzI5LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2UuaCIKIAotI2lmICFVU0UoQ0cpCi0KKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVyQ0cuaCIKKyNlbHNlCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKIAogI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NB
TVBMSU5HKQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdl
ID0gMTAyNCAqIDEwMjQ7Ci0jZW5kaWYKLQogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdl
U291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9hbHBo
YU9wdGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24o
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCkBAIC01MCwxNCArNDcsMjEgQEAgSW1hZ2VTb3Vy
Y2U6OkltYWdlU291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1h
Z2VTb3VyY2U6OkdhbW0KIAogSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiB7Ci0gICAgY2xl
YXIodHJ1ZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwg
c2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
IGNsZWFyQmVmb3JlRnJhbWUpCit7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJCZWZvcmVG
cmFtZSk7Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1l
cywgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7Ci0gICAgaWYgKCFkZXN0cm95QWxsKSB7Ci0gICAgICAgIGlmIChtX2Rl
Y29kZXIpCi0gICAgICAgICAgICBtX2RlY29kZXItPmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVh
ckJlZm9yZUZyYW1lKTsKKyAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheSB0aGUg
ZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZAorICAgIC8vIHRvIGRlc3Ryb3kg
YWxsIG9mIHRoZSBmcmFtZXMuCisgICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKSB7CisgICAgICAg
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNjcsMjAgKzcxLDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJv
b2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlcioKICAg
ICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlU291
cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1h
Z2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIGlmIChpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
Ly8gTWFrZSB0aGUgZGVjb2RlciBieSBzbmlmZmluZyB0aGUgYnl0ZXMuCi0gICAgLy8gVGhpcyBt
ZXRob2Qgd2lsbCBleGFtaW5lIHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBv
ZiB0aGUgYXBwcm9wcmlhdGUgZGVjb2RlciBwbHVnaW4uCi0gICAgLy8gSWYgaW5zdWZmaWNpZW50
IGJ5dGVzIGFyZSBhdmFpbGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNv
ZGVyIHBsdWdpbiB3aWxsIGJlCi0gICAgLy8gbWFkZS4KLSAgICBtX2RlY29kZXIgPSBJbWFnZURl
Y29kZXI6OmNyZWF0ZSgqZGF0YSwgbV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBp
ZiAobV9kZWNvZGVyICYmIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKQotICAgICAgICBtX2Rl
Y29kZXItPnNldE1heE51bVBpeGVscyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7Ci0jZW5k
aWYKKyAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBtX2FscGhhT3B0
aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJj
ZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAt
ODgsNyArODQsNyBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChkYXRhKTsKKyAgICBlbnN1cmVEZWNv
ZGVySXNDcmVhdGVkKCpkYXRhKTsKICAgICAKICAgICBpZiAoIWluaXRpYWxpemVkKCkpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05NiwyNSArOTIsNDggQEAgdm9pZCBJbWFn
ZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIH0KIAogICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0
YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICBtX2RlY29kZXItPnNldERhdGEoKmRh
dGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2FsY3VsYXRl
TWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAogewotICAgIHJldHVybiBtX2RlY29kZXIg
PyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKKyAgICBpZiAoIW1f
YWxsb3dTdWJzYW1wbGluZyB8fCAhYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KDApKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhpcyB2YWx1ZSB3YXMgY2hv
c2VuIHRvIGJlIGFwcHJvcHJpYXRlIGZvciBpT1Mgc2luY2UgdGhlIGltYWdlCisgICAgLy8gc3Vi
c2FtcGxpbmcgaXMgb25seSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gaU9TLiBDaG9vc2UgYSBkaWZm
ZXJlbnQgdmFsdWUKKyAgICAvLyBpZiBpbWFnZSBzdWJzYW1wbGluZyBpcyBlbmFibGVkIG9uIG90
aGVyIHBsYXRmb3JtLgorICAgIGNvbnN0IGludCBtYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2Ft
cGxpbmcgPSA1ICogMTAyNCAqIDEwMjQ7CisgICAgY29uc3QgU3Vic2FtcGxpbmdMZXZlbCBtYXhT
dWJzYW1wbGluZ0xldmVsID0gMzsKKyAgICAKKyAgICBmb3IgKFN1YnNhbXBsaW5nTGV2ZWwgbGV2
ZWwgPSAwOyBsZXZlbCA8IG1heFN1YnNhbXBsaW5nTGV2ZWw7ICsrbGV2ZWwpIHsKKyAgICAgICAg
aWYgKGZyYW1lU2l6ZUF0SW5kZXgoMCwgbGV2ZWwpLmFyZWEoKSA8IG1heGltdW1JbWFnZUFyZWFC
ZWZvcmVTdWJzYW1wbGluZykKKyAgICAgICAgICAgIHJldHVybiBsZXZlbDsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIG1heFN1YnNhbXBsaW5nTGV2ZWw7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwg
SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCkgY29uc3QKK1N1YnNh
bXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBz
Y2FsZSkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIShzY2FsZSA+IDAgJiYgc2Nh
bGUgPD0gMSkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFN1YnNhbXBsaW5nTGV2ZWwg
bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgPSBjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCgpOworICAgIGlmICghbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCisgICAgICAgIHJldHVybiAw
OworCisgICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEg
PSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCisgICAgU3Vic2FtcGxpbmdMZXZlbCByZXN1
bHQgPSBzdGQ6OmNlaWwoc3RkOjpsb2cyKDEgLyBzY2FsZSkpOworICAgIHJldHVybiBzdGQ6Om1p
bihyZXN1bHQsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJj
ZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QKK3NpemVfdCBJ
bWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKIHsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRl
cm1pbmVQcm9wZXJ0aWVzKCk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJs
ZSgpCitib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUoKSBjb25zdAogewogICAgIHJl
dHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCk7CiB9CkBA
IC0xMjksOTcgKzE0OCw3MSBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09y
aWVudGF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbik7CiB9CiAKLUludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0CitzaXplX3Qg
SW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogewotICAgIGlmICghaW5pdGlhbGl6ZWQo
KSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIEludFNpemUgc2l6ZSA9IG1fZGVjb2Rlci0+
ZnJhbWVTaXplQXRJbmRleChpbmRleCk7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
biA9IG1fZGVjb2Rlci0+b3JpZW50YXRpb24oKTsKLSAgICAKLSAgICByZXR1cm4gc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gJiYgb3JpZW50
YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7
CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7
CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNv
bnN0CitpbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCiB7Ci0gICAgcmV0dXJuIGlu
aXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOworICAgIHJldHVybiBp
bml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25O
b25lOwogfQogCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJv
cGVydGllcygpIGNvbnN0CitTdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVj
b2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwogfQogCi1pbnQgSW1hZ2VTb3Vy
Y2U6OnJlcGV0aXRpb25Db3VudCgpCitPcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VTb3VyY2U6Omhv
dFNwb3QoKSBjb25zdAogewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5y
ZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Ob25lOworICAgIHJldHVybiBpbml0aWFsaXpl
ZCgpID8gbV9kZWNvZGVyLT5ob3RTcG90KCkgOiBOdWxsb3B0OwogfQogCi1zaXplX3QgSW1hZ2VT
b3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBt
X2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYg
bV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKIH0KIAotTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVt
cyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KLSAgICAvLyBlbXB0eSBpbWFnZSBkaW1l
bnNpb24sIGp1c3QgYmFpbC4KLSAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1l
QnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMo
KSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRl
eChpbmRleCk7Cit9CiAKLSAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5h
dGl2ZSBpbWFnZS4gIEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQotICAgIC8vIGlzIGFscmVhZHkg
aW4gYSBuYXRpdmUgY29udGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNv
dW50LgotICAgIHJldHVybiBidWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKTsKK2Jvb2wgSW1hZ2VT
b3VyY2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5hbGxvd1N1YnNhbXBs
aW5nT2ZGcmFtZUF0SW5kZXgoaW5kZXgpOwogfQogCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVE
dXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVT
aXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKSBjb25zdAogewogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29k
ZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVy
LT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gMDsK
KyAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOworICAgIGlmIChzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAh
PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgcmV0dXJuIHNpemU7CiAKLSAgICAv
LyBNYW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdl
IGZsYXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCi0gICAgLy8gV2UgZm9sbG93IEZpcmVmb3gn
cyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRo
YXQgc3BlY2lmeQotICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3By
b2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgotICAgIC8vIGZv
ciBtb3JlIGluZm9ybWF0aW9uLgotICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyLT5k
dXJhdGlvbigpIC8gMTAwMC4wZjsKLSAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCi0gICAgICAg
IHJldHVybiAwLjEwMGY7Ci0gICAgcmV0dXJuIGR1cmF0aW9uOworICAgIHJldHVybiBvcmllbnRh
dGlvbkF0SW5kZXgoaW5kZXgpLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRT
aXplKCkgOiBzaXplOwogfQogCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRh
dGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdAordW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
KSBjb25zdAogewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRh
dGlvbigpIDogSW1hZ2VPcmllbnRhdGlvbigpOworICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4
KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKS5hcmVhKCkgKiA0OwogfQogCi1ib29sIEltYWdlU291
cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCitmbG9hdCBJbWFnZVNvdXJj
ZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiAhaW5p
dGlhbGl6ZWQoKSB8fCBtX2RlY29kZXItPmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAg
ICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0SW5kZXgo
aW5kZXgpIDogMDsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eChzaXplX3QgaW5kZXgpCitJbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNv
ZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIHJldHVybiBidWZmZXIgJiYgYnVm
ZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAgIHJldHVybiBp
bml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogSW1h
Z2VPcmllbnRhdGlvbigpOwogfQotCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAorICAgIAorTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBpbml0
aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCkgOiAwOworICAg
IHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOwogfQogCiB2b2lkIEltYWdlU291
cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdApAQCAtMjMzLDUgKzIyNiwzIEBAIHZvaWQg
SW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB9CiAgICAgCiB9Ci0KLSNl
bmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaAppbmRleCBjZDliMzlkYWExYzg1ZTE4MGYyYzY0MTVhMGVkMjNmM2U0ZDc3N2E0
Li5hODk4MDc2MWI0NDE3MmE2ODgzMzVhYjk3OTBiODk0OGQ3MzEwM2Y5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMTAsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMjgsMTggKzI4LDE1IEBACiAjZGVmaW5lIEltYWdlU291cmNlX2gK
IAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgog
I2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBV
U0UoQ0cpCi10eXBlZGVmIHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwot
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKLSNlbmRpZgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlT3JpZW50YXRpb247CkBAIC04Myw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkCiAgICAgfTsK
IAotICAgIEltYWdlU291cmNlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uID0gQWxwaGFQcmVtdWx0
aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiA9IEdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCk7CisgICAgSW1hZ2VTb3VyY2UoQWxw
aGFPcHRpb24gPSBBbHBoYVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
ID0gR2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKTsKICAgICB+SW1hZ2VTb3VyY2UoKTsKIAog
ICAgIC8vIFRlbGxzIHRoZSBJbWFnZVNvdXJjZSB0aGF0IHRoZSBJbWFnZSBubyBsb25nZXIgY2Fy
ZXMgYWJvdXQgZGVjb2RlZCBmcmFtZQpAQCAtMTA3LDc2ICsxMDQsNjEgQEAgcHVibGljOgogICAg
IC8vIHdobyBzZXQgfGRlc3Ryb3lBbGx8IHRvIHRydWUgaWYgdGhleSB3aXNoIHRvIGJlIGFibGUg
dG8gY29udGludWUgdXNpbmcKICAgICAvLyB0aGUgSW1hZ2VTb3VyY2UuICBUaGlzIHdheSBpbXBs
ZW1lbnRhdGlvbnMgd2hpY2ggY2hvb3NlIHRvIGRlc3Ryb3kgdGhlaXIKICAgICAvLyBkZWNvZGVy
cyBpbiBzb21lIGNhc2VzIGNhbiByZWNvbnN0cnVjdCB0aGVtIGNvcnJlY3RseS4KLSAgICB2b2lk
IGNsZWFyKGJvb2wgZGVzdHJveUFsbCwKLSAgICAgICAgICAgICAgIHNpemVfdCBjbGVhckJlZm9y
ZUZyYW1lID0gMCwKLSAgICAgICAgICAgICAgIFNoYXJlZEJ1ZmZlciogZGF0YSA9IE5VTEwsCi0g
ICAgICAgICAgICAgICBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKKyAgICB2b2lkIGNs
ZWFyKGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLCBTaGFyZWRC
dWZmZXIqIGRhdGEgPSBudWxscHRyLCBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsKIAog
ICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0K
IAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKLSAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKIAogICAgIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdDsKLSAgICBi
b29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAgIHZv
aWQgc2V0QWxsb3dTdWJzYW1wbGluZyhib29sIGFsbG93U3Vic2FtcGxpbmcpIHsgbV9hbGxvd1N1
YnNhbXBsaW5nID0gYWxsb3dTdWJzYW1wbGluZzsgfQotICAgIFN1YnNhbXBsaW5nTGV2ZWwgbWF4
aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdDsKLQotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxl
KCk7CisgICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMo
KTsKICAgICAKKyAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0OwogICAgIC8vIEFsd2F5
cyBvcmlnaW5hbCBzaXplLCB3aXRob3V0IHN1YnNhbXBsaW5nLgogICAgIEludFNpemUgc2l6ZSgp
IGNvbnN0OwogICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0Owot
ICAgIAotICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIElu
dFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBj
b25zdDsKLQotICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OwotCi0gICAgc2l6
ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0OwotCi0gICAgaW50
IHJlcGV0aXRpb25Db3VudCgpOwogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKKyAg
ICBpbnQgcmVwZXRpdGlvbkNvdW50KCk7CisgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkg
Y29uc3Q7CisgICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKIAotICAgIC8v
IENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGgg
YSBoaWdoZXIgaW5kZXg7Ci0gICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gMCk7Ci0KLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qp
OwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBu
b3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgogICAgIGJvb2wgZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29t
cGxldGVseSBkZWNvZGVkLgotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4
KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KLQorICAgIGJvb2wgZnJh
bWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFj
dHVhbGx5IHVzZWQgYW55IGFscGhhLgorICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgCisgICAgLy8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1
YnNhbXBsZWQgZnJhbWUuCisgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVz
cGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OworICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVt
YmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUgaXMgbm90IHll
dAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKLQotI2lmIEVOQUJM
RShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGljIHVuc2lnbmVkIG1heFBp
eGVsc1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdl
OyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2lnbmVk
IG1heFBpeGVscykgeyBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsgfQot
I2VuZGlmCi0KKyAgICAKKyAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwor
ICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8v
IEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KKyAgICAKKyAgICAvLyBDYWxsZXJzIHNob3VsZCBub3Qg
Y2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OworICAg
IC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgorICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAg
IAogcHJpdmF0ZToKLSAgICB2b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVy
Kik7CisgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KTsKKyAgICB2b2lkIGVu
c3VyZURlY29kZXJJc0NyZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgU3Vic2FtcGxp
bmdMZXZlbCBjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0OwogICAgIHZv
aWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Q7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgIAorCisgICAgLy8gVGhlIGRlZmF1bHQgdmFsdWUg
b2YgbV9hbGxvd1N1YnNhbXBsaW5nIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBkZWZhdWx0SW1hZ2VT
dWJzYW1wbGluZ0VuYWJsZWQgaW4gU2V0dGluZ3MuY3BwCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29sIG1fYWxs
b3dTdWJzYW1wbGluZyB7IGZhbHNlIH07CiAjZW5kaWYKIAotI2lmICFVU0UoQ0cpCiAgICAgQWxw
aGFPcHRpb24gbV9hbHBoYU9wdGlvbjsKICAgICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBt
X2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOwotI2VuZGlmCi0jaWYgRU5BQkxFKElNQUdFX0RF
Q09ERVJfRE9XTl9TQU1QTElORykKLSAgICBzdGF0aWMgdW5zaWduZWQgc19tYXhQaXhlbHNQZXJE
ZWNvZGVkSW1hZ2U7Ci0jZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA3ZmJkMzQxYjk4
OGRjMjVkNmQxZjExZDhlYTM2N2EzNjlkMGRkYjQ1Li4yNTI1OWRhYWY5MjM5MWY2Y2U3MTk3YTA3
ZDU3MmNiNGNiMjQ2MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0xMjIsMTUgKzEyMiw2IEBAIEltYWdl
RGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKCkKICAgICBtX25hdGl2ZURlY29kZXIgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDcmVhdGVJbmNyZW1lbnRhbChudWxscHRyKSk7CiB9CiAKLVN1YnNhbXBsaW5n
TGV2ZWwgSW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUs
IFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCi17Ci0gICAgLy8gVGhl
cmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4y
NXgsIDMgPSAwLjEyNXguCi0gICAgZmxvYXQgY2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+
KDAuMTI1LCBzdGQ6Om1pbjxmbG9hdD4oMSwgc2NhbGUpKTsKLSAgICBTdWJzYW1wbGluZ0xldmVs
IHJlc3VsdCA9IGNlaWxmKGxvZzJmKDEgLyBjbGFtcGVkU2NhbGUpKTsKLSAgICBBU1NFUlQocmVz
dWx0ID49MCAmJiByZXN1bHQgPD0gMyk7Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4
aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwotfQotCiBzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0Rl
Y29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewogICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNp
bmcgbWFsbG9jL2NhbGxvYyBjYWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCkBAIC0yMTAs
MjYgKzIwMSwyNSBAQCBpbnQgSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQoKSBjb25zdAog
ICAgIHJldHVybiBjQW5pbWF0aW9uTm9uZTsKIH0KIAotYm9vbCBJbWFnZURlY29kZXI6OmhvdFNw
b3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CitPcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNv
ZGVyOjpob3RTcG90KCkgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBw
cm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1f
bmF0aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKICAg
ICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CiAgICAgCiAgICAgaW50IHggPSAtMSwgeSA9IC0xOwogICAgIENGTnVtYmVyUmVm
IG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgp
LCBDRlNUUigiaG90c3BvdFgiKSk7CiAgICAgaWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUo
bnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmeCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgCiAgICAgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlv
bmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WSIpKTsKICAgICBp
ZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ5KSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICAKICAg
ICBpZiAoeCA8IDAgfHwgeSA8IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CiAgICAgCi0gICAgaG90U3BvdCA9IEludFBvaW50KHgsIHkpOwotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBJbnRQb2ludCh4LCB5KTsKIH0KIAogSW50U2l6ZSBJbWFn
ZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CkBAIC0zODYsMjEgKzM3NiwyMSBAQCB2b2lkIEltYWdl
RGVjb2Rlcjo6c2V0RGF0YShDRkRhdGFSZWYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLCBh
bGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXI6OnNl
dERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJl
ZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVm
ZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRv
IHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0
aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVy
LgotICAgIHNldERhdGEoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgc2V0RGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2
ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBT
aGFyZWRCdWZmZXIuCi0gICAgZGF0YS0+cmVmKCk7CisgICAgZGF0YS5yZWYoKTsKICAgICAvLyBX
ZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0
Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJv
dmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRo
YXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2lu
ZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RD
YWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5
dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZURpcmVjdChkYXRhLCBkYXRhLT5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJl
dGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNr
cykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVy
LmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5oCmluZGV4IDhjNmE5ZTIyNzgwNDNmYTVhYzcyMTI2MTdmMWUwOTMxNDcxZmQ0YjQuLjM3
NGI4YjY3MzgwZTU3OTllNDI3NDkzNGRiZWYxNmMxYWUyYTE0MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMjks
MTkgKzI5LDIzIEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1ZGUgIkludFNp
emUuaCIKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCit0eXBlZGVmIHN0cnVjdCBDR0lt
YWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRh
dGEqIENGRGF0YVJlZjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZURlY29k
ZXIgewogcHVibGljOgogICAgIEltYWdlRGVjb2RlcigpOwogICAgIAotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiwgSW1hZ2VTb3Vy
Y2U6OkFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZURlY29kZXI+KCk7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQ
cm9wZXJ0aWVzKCk7Ci0gICAgc3RhdGljIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bEZvclNjYWxlKGZsb2F0IHNjYWxlLCBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1wbGlu
Z0xldmVsKTsKICAgICAKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKICAg
ICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0OwpAQCAtNTAsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25z
dDsKICAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7Ci0gICAgYm9vbCBob3RTcG90KElu
dFBvaW50JiBob3RTcG90KSBjb25zdDsKKyAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgp
IGNvbnN0OwogICAgIAogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwpIGNvbnN0OwogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXpl
X3QpIGNvbnN0OwpAQCAtNjQsNyArNjgsOSBAQCBwdWJsaWM6CiAgICAgTmF0aXZlSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsK
ICAgICAKICAgICB2b2lkIHNldERhdGEoQ0ZEYXRhUmVmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
KyAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwor
ICAgIAorICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9CiAgICAgCiBw
cm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5ZDRlMTVjOWZmZTc5MGMyZTY4NTI0NmZlOGY4NWViNTYx
NjA4M2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlICJJ
bWFnZVNvdXJjZUNHLmgiCi0KLSNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgotI2luY2x1ZGUg
IkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFs
cGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi17Ci0g
ICAgLy8gRklYTUU6IEFscGhhT3B0aW9uIGFuZCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBh
cmUgaWdub3JlZC4KLX0KLQotSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCi17Ci0gICAgY2xl
YXIodHJ1ZSk7Ci19Ci0KLXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZy
YW1lcywgc2l6ZV90LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQot
ewotICAgIC8vIFJlY2VudCB2ZXJzaW9ucyBvZiBJbWFnZUlPIGRpc2NhcmQgcHJldmlvdXNseSBk
ZWNvZGVkIGltYWdlIGZyYW1lcyBpZiB0aGUgY2xpZW50Ci0gICAgLy8gYXBwbGljYXRpb24gbm8g
bG9uZ2VyIGhvbGRzIHJlZmVyZW5jZXMgdG8gdGhlbSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHRo
cm93IGF3YXkKLSAgICAvLyB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tl
ZCB0byBkZXN0cm95IGFsbCBvZiB0aGUgZnJhbWVzLgotICAgIGlmICghZGVzdHJveUFsbEZyYW1l
cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kZWNvZGVyID0gbnVsbHB0cjsKLSAgICAKLSAg
ICBpZiAoZGF0YSkKLSAgICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwotfQot
ICAgIAotdm9pZCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZm
ZXIqKQotewotICAgIGlmIChpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9k
ZWNvZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKTsKLX0KLQotdm9pZCBJbWFnZVNvdXJjZTo6
c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotICAg
IGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGVuc3VyZURlY29kZXJJc0Ny
ZWF0ZWQoZGF0YSk7Ci0gICAgCi0gICAgaWYgKCFpbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIG1f
ZGVjb2Rlci0+c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwotfQotCi1TdHJpbmcgSW1h
Z2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlh
bGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwotfQot
ICAgIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2FsY3VsYXRlTWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwoKSBjb25zdAotewotICAgIGlmICghbV9hbGxvd1N1YnNhbXBsaW5nIHx8ICFh
bGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoMCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgLy8gVmFsdWVzIGNob3NlbiB0byBiZSBhcHByb3ByaWF0ZSBmb3IgaU9TLgotICAgIGNvbnN0
IGludCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nID0gNSAqIDEwMjQgKiAxMDI0
OwotICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgbWF4U3Vic2FtcGxpbmdMZXZlbCA9IDM7Ci0K
LSAgICBTdWJzYW1wbGluZ0xldmVsIGN1cnJlbnRMZXZlbCA9IDA7Ci0gICAgZm9yICggOyBjdXJy
ZW50TGV2ZWwgPD0gbWF4U3Vic2FtcGxpbmdMZXZlbDsgKytjdXJyZW50TGV2ZWwpIHsKLSAgICAg
ICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KDAsIGN1cnJlbnRMZXZlbCk7
Ci0gICAgICAgIGlmIChmcmFtZVNpemUuYXJlYSgpIDwgY01heGltdW1JbWFnZUFyZWFCZWZvcmVT
dWJzYW1wbGluZykKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBjdXJy
ZW50TGV2ZWw7Ci19Ci0gICAgCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjptYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVy
biBjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpOwotI2VuZGlmCi0gICAgcmV0dXJu
IDA7Ci19Ci0KLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxG
b3JTY2FsZShmbG9hdCBzY2FsZSkgY29uc3QKLXsKLSAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpz
dWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoc2NhbGUsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkp
OwotfQotCi1ib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUoKQotewotICAgIHJldHVy
biBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCk7Ci19Ci0KLWJv
b2wgSW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QgaW5k
ZXgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5hbGxv
d1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoaW5kZXgpOwotfQotCi1JbnRTaXplIEltYWdlU291
cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24pIGNvbnN0Ci17Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAg
ICByZXR1cm4geyB9OwotICAgIAotICAgIEludFNpemUgc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVT
aXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbiA9IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKLSAg
ICAKLSAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdElt
YWdlT3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUu
dHJhbnNwb3NlZFNpemUoKSA6IHNpemU7Ci19Ci0KLUltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3Vy
Y2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCkgOiBJ
bWFnZU9yaWVudGF0aW9uKCk7Ci19Ci0KLUludFNpemUgSW1hZ2VTb3VyY2U6OnNpemUoKSBjb25z
dAotewotICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDApOwotfQotICAgIAotSW50U2l6
ZSBJbWFnZVNvdXJjZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwot
fQotCi1ib29sIEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25z
dAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aG90U3BvdChob3RT
cG90KTsKLX0KLQotc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVBy
b3BlcnRpZXMoKSBjb25zdAotewotICAgIHJldHVybiBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2Rl
ZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwotfQotICAgIAotaW50IEltYWdlU291cmNlOjpyZXBl
dGl0aW9uQ291bnQoKQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5y
ZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Mb29wT25jZTsKLX0KLQotc2l6ZV90IEltYWdl
U291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKLX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+
IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQo
KSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5n
TGV2ZWwpIDogbnVsbHB0cjsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9k
ZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKLX0KLQotZmxvYXQgSW1hZ2VT
b3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICByZXR1cm4g
aW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpIDog
MDsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQotewotICAgIHJldHVybiAhaW5pdGlhbGl6ZWQoKSB8fCBtX2RlY29kZXItPmZyYW1lSGFz
QWxwaGFBdEluZGV4KGluZGV4KTsKLX0KLQotdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
KSBjb25zdAotewotICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAgcmV0dXJuIGZyYW1lU2l6ZS5hcmVhKCkgKiA0Owot
fQotICAgIAotdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsK
LSAgICBpZiAobV9hbGxvd1N1YnNhbXBsaW5nKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImFs
bG93LXN1YnNhbXBsaW5nIiwgbV9hbGxvd1N1YnNhbXBsaW5nKTsKLSAgICAKLSAgICBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uID0gb3JpZW50YXRpb25BdEluZGV4KDApOwotICAgIGlmIChv
cmllbnRhdGlvbiAhPSBPcmlnaW5Ub3BMZWZ0KQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm9y
aWVudGF0aW9uIiwgb3JpZW50YXRpb24pOwotfQotCi19Ci0KLSNlbmRpZiAvLyBVU0UoQ0cpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCA2ZmUyOTBlMjI2MThmYmQ3NmM3NWM4NDQ5MjQ0NzJlMzE5N2ZmZjg3
Li5jZjExNzVkNDkzNjhkNDk2MTk2YzA0NzAyMzk1MDNiNmIzNzk4ODI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBN
b2JpbGUsIEluYy4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTI3MCwxMyArMjcxLDE2IEBA
IHRlbXBsYXRlIDxNYXRjaFR5cGUgdHlwZT4gaW50IGdldFNjYWxlZFZhbHVlKGNvbnN0IFZlY3Rv
cjxpbnQ+JiBzY2FsZWRWYWx1ZXMsIGluCiAKIH0KIAotYm9vbCBJbWFnZURlY29kZXI6OmZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpm
cmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAobV9m
cmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVDb21wbGV0ZSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0u
aGFzQWxwaGEoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6
OkZyYW1lQ29tcGxldGU7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJ
bmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFmcmFtZUlzQ29tcGxldGVB
dEluZGV4KGluZGV4KSB8fCBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmhhc0FscGhhKCk7CiB9
CiAKIHVuc2lnbmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdApAQCAtMjg3LDYgKzI5MSw0MiBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1l
Qnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICByZXR1cm4gbV9zaXplLmFyZWEo
KSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpOwogfQogCitmbG9hdCBJbWFnZURlY29k
ZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAo
bV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1l
OjpGcmFtZUVtcHR5KQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIE1hbnkgYW5ub3lpbmcg
YWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2ts
eSBhcyBwb3NzaWJsZS4KKyAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1
c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5CisgICAg
Ly8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBh
bmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+CisgICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRp
b24uCisgICAgY29uc3QgZmxvYXQgZHVyYXRpb24gPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhd
LmR1cmF0aW9uKCkgLyAxMDAwLjBmOworICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKKyAgICAg
ICAgcmV0dXJuIDAuMTAwZjsKKyAgICByZXR1cm4gZHVyYXRpb247Cit9CisKK05hdGl2ZUltYWdl
UHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsKSBjb25zdAoreworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6
ZSgpIDw9IGluZGV4KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFplcm8taGVp
Z2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuIElmIHdlIGhhdmUg
YW4KKyAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KKyAgICBpZiAoc2l6
ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAobV9mcmFt
ZUJ1ZmZlckNhY2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRl
bnRzIGFzIGEgbmF0aXZlIGltYWdlLiBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKKyAgICAvLyBp
cyBhbHJlYWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNyZW1lbnRz
IGl0cyByZWZjb3VudC4KKyAgICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5hc05l
d05hdGl2ZUltYWdlKCk7Cit9CisKIHZvaWQgSW1hZ2VEZWNvZGVyOjpwcmVwYXJlU2NhbGVEYXRh
SWZOZWNlc3NhcnkoKQogewogICAgIG1fc2NhbGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDUz
NDdhNDdiNzIzY2Q1ZjAzYjYyZDNiMzUyY2Y5NDUxNDdkYTBlYWEuLjViYzZiMDI1NDJkYjRiMTUw
NDg0YmZhOGNkYzNhZmYxNTg5MTI0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlBs
YXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtMjM1LDE1ICsyMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZURlY29kZXIpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICAgICAgICAgIDogbV9zY2Fs
ZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9
PSBJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVkKQorICAgICAgICAgICAgOiBtX3ByZW11
bHRpcGx5QWxwaGEoYWxwaGFPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGll
ZCkKICAgICAgICAgICAgICwgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25v
cmVkKQotICAgICAgICAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgICAgICAgICAs
IG1fbWF4TnVtUGl4ZWxzKC0xKQotICAgICAgICAgICAgLCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZh
bHNlKQotICAgICAgICAgICAgLCBtX2ZhaWxlZChmYWxzZSkgeyB9CisgICAgICAgIHsKKyAgICAg
ICAgfQogCi0gICAgICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpIHsgfQorICAgICAgICB2aXJ0
dWFsIH5JbWFnZURlY29kZXIoKQorICAgICAgICB7CisgICAgICAgIH0KIAogICAgICAgICAvLyBS
ZXR1cm5zIGEgY2FsbGVyLW93bmVkIGRlY29kZXIgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBS
ZXR1cm5zIDAgaWYKICAgICAgICAgLy8gd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBm
cm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQpAQCAtMjU0LDExICsyNTQsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IHNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fZmFpbGVkKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGE7CisgICAgICAgICAgICBt
X2RhdGEgPSAmZGF0YTsKICAgICAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRh
UmVjZWl2ZWQ7CiAgICAgICAgIH0KIApAQCAtMjgyLDcgKzI4Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gc2l6ZXMuICBUaGlzIGRvZXMgTk9UIGRpZmZlciBmcm9tIHNpemUo
KSBmb3IgR0lGLCBzaW5jZSBkZWNvZGluZyBHSUZzCiAgICAgICAgIC8vIGNvbXBvc2l0ZXMgYW55
IHNtYWxsZXIgZnJhbWVzIGFnYWluc3QgcHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQog
ICAgICAgICAvLyBzaXplIGZyYW1lcy4KLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXpl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBzaXplKCk7CiAgICAgICAgIH0KQEAgLTMxMCwxNiArMzEwLDI0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50ZXIu
CiAgICAgICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkg
PSAwOwogCisgICAgICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0
OworCiAgICAgICAgIC8vIE1ha2UgdGhlIGJlc3QgZWZmb3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRo
ZSByZXF1ZXN0ZWQgZnJhbWUgaGFzIGFscGhhIGNoYW5uZWwuCi0gICAgICAgIHZpcnR1YWwgYm9v
bCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICBib29sIGZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKICAgICAgICAgLy8gTnVtYmVyIG9mIGJ5
dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lIHJlcXVlc3RlZC4gUmV0dXJuIDAgaWYgbm90IHlldCBk
ZWNvZGVkLgotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVf
dCkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29u
c3Q7CisgICAgICAgIAorICAgICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qp
IGNvbnN0OworICAgICAgICAKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsKIAogICAgICAgICB2b2lk
IHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgICAgICBib29sIGlnbm9yZXNHYW1tYUFuZENv
bG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7
IH0KIAotICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9vcmllbnRhdGlvbjsgfQorICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
QXRJbmRleChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICAgICAg
CisgICAgICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICBlbnVtIHsgaWNjQ29sb3JQcm9maWxlSGVh
ZGVyTGVuZ3RoID0gMTI4IH07CiAKQEAgLTMzMCw2ICszMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzE2XSwgIlJHQiAi
LCA0KTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9E
ZXRlcm1pbmVQcm9wZXJ0aWVzKCkgeyByZXR1cm4gMDsgfQorICAgICAgICAKKyAgICAgICAgc3Rh
dGljIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0LCBTdWJz
YW1wbGluZ0xldmVsKSB7IHJldHVybiAwOyB9CisKICAgICAgICAgc3RhdGljIGJvb2wgaW5wdXRE
ZXZpY2VDb2xvclByb2ZpbGUoY29uc3QgY2hhciogcHJvZmlsZURhdGEsIHVuc2lnbmVkIHByb2Zp
bGVMZW5ndGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvZmlsZUxl
bmd0aCwgcHJvZmlsZUxlbmd0aCA+PSBpY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpOwpAQCAt
MzU0LDEzICszNjYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGNvbXBvc2l0
aW5nKS4KICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3Qp
IHsgfQogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICAgICAg
dm9pZCBzZXRNYXhOdW1QaXhlbHMoaW50IG0pIHsgbV9tYXhOdW1QaXhlbHMgPSBtOyB9Ci0jZW5k
aWYKLQogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9y
ZXMgaXQgaW4gdGhlIGFyZ3VtZW50CiAgICAgICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVy
d2lzZSByZXR1cm5zIGZhbHNlLgotICAgICAgICB2aXJ0dWFsIGJvb2wgaG90U3BvdChJbnRQb2lu
dCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50
UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBOdWxsb3B0OyB9CiAKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIHZvaWQgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0zNzQs
NyArMzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWZWN0b3I8SW1hZ2VGcmFt
ZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwogICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBt
X2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBwb3J0PwogICAgICAgICBDb2xvclByb2Zp
bGUgbV9jb2xvclByb2ZpbGU7Ci0gICAgICAgIGJvb2wgbV9zY2FsZWQ7CisgICAgICAgIGJvb2wg
bV9zY2FsZWQgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7
CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKICAgICAgICAgYm9vbCBtX3ByZW11
bHRpcGx5QWxwaGE7CkBAIC0zOTIsMTAgKzQwMCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIH0KIAogICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICAgICAgYm9vbCBtX3NpemVB
dmFpbGFibGU7Ci0gICAgICAgIGludCBtX21heE51bVBpeGVsczsKLSAgICAgICAgYm9vbCBtX2lz
QWxsRGF0YVJlY2VpdmVkOwotICAgICAgICBib29sIG1fZmFpbGVkOworICAgICAgICBib29sIG1f
c2l6ZUF2YWlsYWJsZSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IDEwMjQg
KiAxMDI0IH07CisjZWxzZQorICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4ZWxz
IHsgLTEgfTsKKyNlbmRpZgorICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxz
ZSB9OworICAgICAgICBib29sIG1fZmFpbGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDNkNzZiYzJh
OTc0ZGVhZjczMThkNTcwYjFlZWMzMTYyNjA5OTgwNjUuLmNhZjM1Yzk3ZjE3ZWRkMzRiYzlkZjg5
YWIwOWU4NzAwYWVlNmM3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC00Nywx
NCArNDcsMTQgQEAgQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoSW1hZ2VTb3VyY2U6
OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rlcjo6
c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBC
TVBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIElt
YWdlRGVjb2Rlcjo6c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGlmIChtX3Jl
YWRlcikKLSAgICAgICAgbV9yZWFkZXItPnNldERhdGEoZGF0YSk7CisgICAgICAgIG1fcmVhZGVy
LT5zZXREYXRhKCZkYXRhKTsKIH0KIAogYm9vbCBCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWls
YWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggMWM4ODJlMTM5OTUyZTQ3NDgzMmJj
YmMyMjA1MGE2MGZiNGZmYmI5Ny4uYjJjNDc4OTU2MTliZWNhZjI1ZDEwYTMwYzJlODNhZTM1NTg4
NzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIHZpcnR1YWwg
U3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gImJtcCI7IH0KLSAgICAg
ICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsK
ICAgICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGlu
ZGV4KTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFkZXJ8
LiAgQmUgY2FyZWZ1bCB0byBhdm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBj
ZDU2ZTY3ZWI5MThiMTY5M2M0ZWNjZjc0MGFmODBjODU5MzZhNzk4Li43OTE1MTU2MDcyZDcxNzA0
NDM3MjU3MzA2YjA5NTkwOGYzNDk4OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApA
QCAtNDIsMTQgKzQyLDE0IEBAIEdJRkltYWdlRGVjb2Rlcjo6fkdJRkltYWdlRGVjb2RlcigpCiB7
CiB9CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGRhdGEsIGFs
bERhdGFSZWNlaXZlZCk7CiAgICAgaWYgKG1fcmVhZGVyKQotICAgICAgICBtX3JlYWRlci0+c2V0
RGF0YShkYXRhKTsKKyAgICAgICAgbV9yZWFkZXItPnNldERhdGEoJmRhdGEpOwogfQogCiBib29s
IEdJRkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKQEAgLTMwMyw3ICszMDMsNyBAQCB2
b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZRdWVy
eSBxdWVyeSkKIAogICAgIGlmICghbV9yZWFkZXIpIHsKICAgICAgICAgbV9yZWFkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsKLSAgICAgICAgbV9yZWFkZXItPnNl
dERhdGEobV9kYXRhKTsKKyAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsK
ICAgICB9CiAKICAgICBpZiAocXVlcnkgPT0gR0lGU2l6ZVF1ZXJ5KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggNDA2MTA4OTUzOTVkOWIxMmNjNjlkMTkxY2MzMDUyMjA5Y2MwNjg3Mi4u
YzRjNDlhYzM0ZThjODJjYTI5MDM4YWNlZGMwMzlmNTkwZjM4MWJkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QgeyByZXR1cm4gImdpZiI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwogICAg
ICAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmlu
ZGV4IGZiODc4ZWQwOGUyOGQ0MDJlZWYzNzBkY2EzOTJjZjlmMjZlZDA0NjkuLmVhNDJiMTFhNzhj
MzhlYmU2NWMyYzI4YjkxYzhhZmI2MjYzNWE5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBA
IC0yNDYsNyArMjQ2LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERh
dGEoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEpIHsgbV9kYXRhID0gZGF0
YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGRhdGEpIHsgbV9k
YXRhID0gZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90
LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVu
c2lnbmVkIGhhbHRBdEZyYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA1
NmFjOTIxY2QwODQ2ODIzYjgxMTE4ZWE2ZjNhZGYyMTFkYTdhMDg1Li5hNjAzYTEwNzZmOWRmY2Qx
OTRlNmJkOWNmMmI4MWQ0YjNiOWRiNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApA
QCAtNTUsNyArNTUsNyBAQCBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFnZURlY29kZXIoKQogewog
fQogCi12b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBJQ09JbWFnZURlY29kZXI6
OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAg
IGZvciAoQk1QUmVhZGVyczo6aXRlcmF0b3IgaShtX2JtcFJlYWRlcnMuYmVnaW4oKSk7IGkgIT0g
bV9ibXBSZWFkZXJzLmVuZCgpOyArK2kpIHsKICAgICAgICAgaWYgKCppKQotICAgICAgICAgICAg
KCppKS0+c2V0RGF0YShkYXRhKTsKKyAgICAgICAgICAgICgqaSktPnNldERhdGEoJmRhdGEpOwog
ICAgIH0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG5nRGVjb2RlcnMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIHNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChpKTsKQEAgLTEyOCwyMSAr
MTI4LDIwIEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogICAgIHJldHVybiBJ
bWFnZURlY29kZXI6OnNldEZhaWxlZCgpOwogfQogCi1ib29sIElDT0ltYWdlRGVjb2Rlcjo6aG90
U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK09wdGlvbmFsPEludFBvaW50PiBJQ09JbWFn
ZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAogewogICAgIC8vIFdoZW4gdW5zcGVjaWZpZWQsIHRo
ZSBkZWZhdWx0IGZyYW1lIGlzIGFsd2F5cyBmcmFtZSAwLiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0
aAogICAgIC8vIEJpdG1hcEltYWdlIHdoZXJlIGN1cnJlbnRGcmFtZSgpIHN0YXJ0cyBhdCAwIGFu
ZCBvbmx5IGluY3JlYXNlcyB3aGVuIGFuaW1hdGlvbiBpcwogICAgIC8vIHJlcXVlc3RlZC4KLSAg
ICByZXR1cm4gaG90U3BvdEF0SW5kZXgoMCwgaG90U3BvdCk7CisgICAgcmV0dXJuIGhvdFNwb3RB
dEluZGV4KDApOwogfQogCi1ib29sIElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdEF0SW5kZXgoc2l6
ZV90IGluZGV4LCBJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK09wdGlvbmFsPEludFBvaW50PiBJ
Q09JbWFnZURlY29kZXI6OmhvdFNwb3RBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAg
ICBpZiAoaW5kZXggPj0gbV9kaXJFbnRyaWVzLnNpemUoKSB8fCBtX2ZpbGVUeXBlICE9IENVUlNP
UikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKIAotICAg
IGhvdFNwb3QgPSBtX2RpckVudHJpZXNbaW5kZXhdLm1faG90U3BvdDsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gbV9kaXJFbnRyaWVzW2luZGV4XS5tX2hvdFNwb3Q7CiB9CiAKIApAQCAt
MTY1LDcgKzE2NCw3IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2Rl
ckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgY29weSBieSBt
YWtpbmcgdGhlIFBORyBkZWNvZGVyIGFibGUgdG8gdGFrZSBhbgogICAgIC8vIG9wdGlvbmFsIG9m
ZnNldC4KICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbmdEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCZtX2RhdGEtPmRhdGEoKVtkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0XSwgbV9kYXRhLT5zaXpl
KCkgLSBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0KSk7Ci0gICAgbV9wbmdEZWNvZGVyc1tpbmRleF0t
PnNldERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CisgICAgbV9wbmdE
ZWNvZGVyc1tpbmRleF0tPnNldERhdGEoKnBuZ0RhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwog
fQogCiB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBpbmRleCwgYm9vbCBvbmx5
U2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAxNDk0Nzk3YTliZjMxYzNlNjRiODFk
YjZjZTMzM2Q5MTI3ZmI4OWQ4Li45ZjQ3YTA4ZDM5NDY2NWQwY2RiN2IzMTg1MzUxNjAwYzdkN2M2
M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBJbWFnZURlY29kZXIKICAgICAgICAgdmlydHVhbCBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiAiaWNvIjsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKICAgICAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwog
ICAgICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIElu
dFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QpIGNvbnN0OwpAQCAtNTYsNyArNTYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGF2b2lkIGFjY2Vzc2luZyBkZWxldGVkIG1l
bW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tCiAgICAgICAgIC8vIGluc2lk
ZSBCTVBJbWFnZVJlYWRlciEKICAgICAgICAgdmlydHVhbCBib29sIHNldEZhaWxlZCgpOwotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaG90U3BvdChJbnRQb2ludCYpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBlbnVtIEltYWdlVHlwZSB7CkBAIC0xMTYsOSArMTE2LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBjb3VsZCBiZSBkZWNvZGVkLgogICAgICAgICBib29sIHByb2Nl
c3NEaXJlY3RvcnlFbnRyaWVzKCk7CiAKLSAgICAgICAgLy8gU3RvcmVzIHRoZSBob3Qtc3BvdCBm
b3IgfGluZGV4fCBpbiB8aG90U3BvdHwgYW5kIHJldHVybnMgdHJ1ZSwKLSAgICAgICAgLy8gb3Ig
cmV0dXJucyBmYWxzZSBpZiB0aGVyZSBpcyBub25lLgotICAgICAgICBib29sIGhvdFNwb3RBdElu
ZGV4KHNpemVfdCBpbmRleCwgSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0OworICAgICAgICAvLyBS
ZXR1cm5zIHRoZSBob3Qtc3BvdCBmb3IgfGluZGV4fCwgcmV0dXJucyBOdWxsb3B0IGlmIHRoZXJl
IGlzIG5vbmUuCisgICAgICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90QXRJbmRleChzaXpl
X3QpIGNvbnN0OwogCiAgICAgICAgIC8vIFJlYWRzIGFuZCByZXR1cm5zIGEgZGlyZWN0b3J5IGVu
dHJ5IGZyb20gdGhlIGN1cnJlbnQgb2Zmc2V0IGludG8KICAgICAgICAgLy8gfGRhdGF8LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGMwZTk1YWZhZDA5NDIyNzFiOTZiM2FkYzhiZDM1ZWFiMDZkM2E0ZjQuLjFkN2FjMDk0N2Fl
MmY3NDM5NDc1OWZiMmU0MThkMmY1MThhNGI4MGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ni0wNC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisg
ICAgICAgIE1lcmdlIENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVt
ZW50YXRpb24gaW4gb25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
ICAgICAgICAKKyAgICAgICAgQWRkIGEgdGVzdCBmb3IgaW1hZ2Ugc3ViLXNhbXBsaW5nLiBUaGUg
aW1hZ2Ugc3Vic2FtcGxpbmcgaXMgZW5hYmxlZCBieQorICAgICAgICBkZWZhdWx0IGZvciBpT1Mg
cGxhdGZvcm0gb25seS4gQnV0IGl0IGNhbiBiZSBleHBsaWNpdGx5IGVuYWJsZWQgdGhyb3VnaAor
ICAgICAgICB0aGUgc2V0dGluZyBJbWFnZVN1YnNhbXBsaW5nRW5hYmxlZC4KKworICAgICAgICAq
IGZhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE2
LTA0LTA5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTk5MjY4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDAzMTNiZWI4ZGI3OTQxOTVhNmJlYzIyZGYwYjgxMWM3YjIzMDkyYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzdHlsZT4KKyAgICAgICAgZGl2IHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAg
ICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICBtYXJnaW46IDEwcHg7CisgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgor
PGhlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gY3JlYXRlRGl2KGNvbG9yKSB7
CisgICAgICAgIHZhciBkaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgICAgIGRpdkVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2RWxlbWVudCk7CisgICAgfQorCisgICAg
Y3JlYXRlRGl2KCJyZWQiKTsKKyAgICBjcmVhdGVEaXYoImdyZWVuIik7CisgICAgY3JlYXRlRGl2
KCJibHVlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyOGFlM2JlOWRm
NTMwMWRiMmExOGQ4MjkzNGU3M2JhNWQ5ODk0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCkBAIC0wLDAgKzEsNDMgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGRp
diB7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICAgICAgbWFyZ2luOiAxMHB4OworICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICB9CisgICAgICAgIGltZyB7CisgICAgICAgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4K
KzxoZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlU3Vic2FtcGxpbmdFbmFibGVk
KHRydWUpOworCisgICAgZnVuY3Rpb24gY3JlYXRlSW1hZ2UoY29sb3IpIHsKKyAgICAgICAgdmFy
IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgICAgICBjYW52
YXMud2lkdGggPSAxMDI0ICogMzsKKyAgICAgICAgY2FudmFzLmhlaWdodCA9IDEwMjQgKiAzOwor
ICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAgIGN0eC5m
aWxsU3R5bGUgPSBjb2xvcjsKKyAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0
aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICAgICAgdmFyIGltZ0VsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgaW1nRWxlbWVudC5zcmMgPSBjYW52YXMudG9E
YXRhVVJMKCJpbWFnZS9wbmciKTsKKworICAgICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBkaXZFbGVtZW50LmFwcGVuZENoaWxkKGlt
Z0VsZW1lbnQpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdkVsZW1lbnQp
OworICAgIH0KKyAgICAKKyAgICBjcmVhdGVJbWFnZSgicmVkIik7CisgICAgY3JlYXRlSW1hZ2Uo
ImdyZWVuIik7CisgICAgY3JlYXRlSW1hZ2UoImJsdWUiKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276128</attachid>
            <date>2016-04-10 21:47:09 -0700</date>
            <delta_ts>2016-04-11 12:28:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160410214721.patch</filename>
            <type>text/plain</type>
            <size>66675</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTViMjJmYWY4YzVmZWYw
OGEzOGVkYjk1YzM4ZmM0MTI4YTRkMjcwNC4uZWZlOTYwOWYwY2Q1NjkyNGY2ZmNjODY1Y2FkN2Yz
ZmY3NGQ0ZGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAxNi0wNC0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIElt
YWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4gQWxs
IHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJbWFn
ZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNhbiBo
YXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0IHJp
ZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0L2lt
YWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5kIGFk
ZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL0N1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1p
bmVIb3RTcG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aG90U3BvdCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmhvdFNwb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldEhvdFNwb3QpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgZ2V0SG90
U3BvdCgpIHRvIGhvdFNwb3QoKSBhbmQgY2hhbmdlIGl0IHRvIHJldHVybiBPcHRpb25hbDxJbnRQ
b2ludD4uCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1v
dmUgY2xlYXIodHJ1ZSkgY2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxs
cyBJbWFnZURlY29kZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hp
Y2ggd2lsbCBkbyBub3RoaW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIq
IHRvCisgICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJ
bWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29u
c3Qgc3RhdGljIGludCBDRyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0
CisgICAgICAgIGJhc2VkIG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVm
ZmVyJiB0byB0aGUgdW5kZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0
dXJucyB0aGUgbWF4aW11bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBh
biBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2Ft
cGxpbmdMZXZlbEZvclNjYWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1
YnNhbXBsaW5nTGV2ZWwgdGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwgZm9yCisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKTogUmV0dXJucyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hp
Y2ggY2FuIGRldGVybWluZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisg
ICAgICAgIHplcm8uIEZvciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNv
cnJlY3RlZCBsYXRlci4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
aXNTaXplQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBl
cnMgZm9yIHRoZSBJbWFnZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rp
b25zCisgICAgICAgIGlzIHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisg
ICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJv
bSBCaXRtYXBJbWFnZTo6ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpnZXRIb3RTcG90KTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpzZXRBbGxvd1N1YnNhbXBsaW5nKTogQ2FsbGVkIGZyb20gQml0bWFwSW1hZ2U6OnNldEFsbG93
U3Vic2FtcGxpbmcoKS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICBTZXR0aW5nIG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSB3YXMgbW92ZWQgdG8gdGhlIG5vbiBD
RyBJbWFnZURlY29kZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
RGF0YSk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKTogRGVsZXRl
ZC4KKyAgICAgICAgVGhlIGNvZGUgd2FzIG1vdmVkIHRvIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoKS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKTogTWFrZSB0aGUgcHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgc3VpdGFi
bGUgZm9yIENHIGFuZCBub24gQ0cgY2FzZXMuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEVtcHR5IGZ1bmN0aW9ucyBmb3IgQ0cuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KTogQSBtZXcgZnVuY3Rpb24gdG8gcmV0dXJuCisgICAgICAgIHdoZXRoZXIg
dGhlIGZyYW1lIGRlY29kaW5nIGlzIGNvbXBsZXRlIG9yIG5vdC4KKyAgICAgICAgCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KTogU2ltcGxpZnkg
dGhlIGxvZ2ljLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOiBUaGUgY29kZSB3YXMgbW92ZWQgZnJvbQorICAgICAgICBJbWFn
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoKSBpbiBJbWFnZVNvdXJjZS5jcHAuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCk6IFRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6IEluaXRpYWxpemUgdGhlIG1lbWJl
cnMgaW4gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6On5JbWFnZURlY29k
ZXIpOiBGaXggdGhlIGJyYWNlcyBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6c2V0RGF0YSk6IENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgYXJndW1lbnQgZnJvbQorICAgICAg
ICBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOiBBZGQgdGhlIGFyZ3VtZW50IFN1YnNhbXBsaW5n
TGV2ZWwKKyAgICAgICAgc28gaXQgY2FuIGhhdmUgdGhlIHNhbWUgcHJvdG90eXBlIGFzIENHLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbkF0SW5kZXgpOiBSZW5h
bWUgaXQgdG8gdGhlIHNhbWUgb2YgQ0cuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUp
OiBBZGQgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGFuZCByZXR1cm4gdGhlIGRlZmF1bHQgdmFs
dWVzIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGFkZCBkaXJlY3RpdmUgY29tcGlsZWQKKyAgICAgICAg
bm9uIENHIGJsb2NrcyBpbiBJbWFnZVNvdXJjZS5jcHAuCisKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6aG90U3BvdCk6IFJldHVybiBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAg
IAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscyk6IERlbGV0
ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKEdJ
RkltYWdlUmVhZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgIFVzZSByZWZlcmVuY2UgU2hhcmVkQnVmZmVyIGluc3Rl
YWQgb2YgcG9pbnRlciBTaGFyZWRCdWZmZXIuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
SUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6aG90U3BvdEF0SW5kZXgpOgorICAgICAgICBDaGFuZ2UgaG90U3BvdCgpIHRvIHJldHVy
biBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgpOgorICAgICAg
ICBQYXNzIHJlZmVyZW5jZSBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBwb2ludGVyIFNoYXJlZEJ1
ZmZlci4KKwogMjAxNi0wNC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEZpeCB0aGUgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODhiYTkzYjAwMWMxMWQ0NjA3N2U0MWM2
NTViYTRmY2RlZDA3NzhjYi4uYTQ0OTJiMWQ2NjI4ODlkY2JmOGEwMzc2MDZmYzBiZmMxNDhlOTFi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA0LTEwICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgTWVyZ2UgQ0cgSW1hZ2VT
b3VyY2UgYW5kIG5vbiBDRyBJbWFnZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBpbiBvbmUgZmlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDU2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAgICAgICAgKEV3a1ZpZXc6OnNldEN1cnNvcik6CisgICAg
ICAgIFJlcGxhY2UgdGhlIGNhbGwgdG8gSW1hZ2U6OmdldEhvdFNwb3QoKSBieSBJbWFnZTo6aG90
U3BvdCgpLgorCiAyMDE2LTA0LTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGN1c3RvbSB0YXJnZXQgcGlja2VyIGFjdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggZjVjNjYzNWNjMTFkM2ZjZjM0ZmI2ZmQzMzk1MmE1NzBhZjk2
OGQzYy4uZGIxODY3MjViOTMwNjgzZGVjZjhlYTY1OWZlYzRiYjczNzQzYjMwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTIyMTMsNiArMjIxMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2lu
LmNtYWtlCmluZGV4IGM2NzJjYzcwN2ZhODc4NWJhNTI3NDQyZTkwNGIxY2ZhZGIyNTE1YWMuLjA5
YzgwOTRlNzdjNGJmMzJhY2Y0N2FhOTNlOWRiYWU5OTYyOTdlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtNzIsNyArNzIsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
YjcyZjJlMTVjOGI1MmVhZTFhM2U2ZDZhNGVhNmFkMTJiMTJhMjhlOC4uYWVhMzU3MTA1OTA5Yjdj
N2VlMjA1NTI3NTllYWM5OWY0NTZkNWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAg
LTQwNiw3ICs0MDYsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ludFBvaW50Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENH
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDY1ZjYyODZiNjM0OWQyZjk0NzU5ZTJhM2I0ZTAzNzAyZTI5N2IwMGMuLjI1ODlj
MzUxZWE1OTc1OTllZThhMDcwMTFlNjBmYjNhNzVhMjIzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5ODYsNyArNDk4Niw2
IEBACiAJCUIyNzUzNTVBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyQzBCMDUzODE0
MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU1QjBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNw
cCAqLzsgfTsKIAkJQjI3NTM1NUUwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzAwQjA1Mzgx
NDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovOyB9OwotCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2
NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5j
cHAgKi87IH07CiAJCUIyNzUzNTYwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMyMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjEwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMzBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENHLmNw
cCAqLzsgfTsKIAkJQjI3NTM1NjIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzNDBCMDUz
ODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCAqLzsgfTsKQEAgLTEyODc3LDcgKzEyODc2LDYg
QEAKIAkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJlY3RDRy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNp
emVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRTaXpl
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMDBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNzUzNTMxMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbWFnZVNvdXJjZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFBvaW50Q0cuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMzBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVj
dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRSZWN0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzNDBCMDUzODE0MDAyQ0U2
NEYgLyogSW50U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRTaXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE3ODUsNyAr
MjE3ODMsNiBAQAogCQkJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAq
LywKIAkJCQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwICov
LAogCQkJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovLAot
CQkJCUIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLywKIAkJ
CQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovLAogCQkJCTRC
MzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovLAogCQkJCUIy
NzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLywKQEAgLTMwMDA0LDcg
KzMwMDAxLDYgQEAKIAkJCQkyRDVBNTkyRjE1MjUyNTIzMDAzNkVFNTEgLyogSW1hZ2VPcmllbnRh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTFBMkY0MTE3RDdENURFMDA3MjUxN0EgLyog
SW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNDNzI1RTE5
NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI3
NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0dNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkzMTZGRTExNzBFNkUxREE3MDBCRjYwODggLyogSW1wbGljaXRBbmlt
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU5NjFDNTQxOEFEMzM4NTAwRDA3REM1IC8q
IEluYmFuZERhdGFUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Vyc29yLmNwcAppbmRleCA2MGE2MTlhY2RhMTNhYTQ3YmExMmViMDNiNGUyMjVmMjQxZmMzYjJi
Li45YzU5MmYzNzRiMzRlN2Y5Njc5ZTlkZmY0OGZhMTBhZTY4MDBlMzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cnNvci5jcHAKQEAgLTQ0LDEwICs0NCwxMCBAQCBJbnRQb2ludCBkZXRlcm1pbmVI
b3RTcG90KEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHNwZWNpZmllZEhvdFNwb3QpCiAg
ICAgICAgIHJldHVybiBzcGVjaWZpZWRIb3RTcG90OwogCiAgICAgLy8gSWYgaG90IHNwb3QgaXMg
bm90IHNwZWNpZmllZCBleHRlcm5hbGx5LCBpdCBjYW4gYmUgZXh0cmFjdGVkIGZyb20gc29tZSBp
bWFnZSBmb3JtYXRzIChlLmcuIC5jdXIpLgotICAgIEludFBvaW50IGludHJpbnNpY0hvdFNwb3Q7
Ci0gICAgYm9vbCBpbWFnZUhhc0ludHJpbnNpY0hvdFNwb3QgPSBpbWFnZS0+Z2V0SG90U3BvdChp
bnRyaW5zaWNIb3RTcG90KTsKLSAgICBpZiAoaW1hZ2VIYXNJbnRyaW5zaWNIb3RTcG90ICYmIGlt
YWdlUmVjdC5jb250YWlucyhpbnRyaW5zaWNIb3RTcG90KSkKLSAgICAgICAgcmV0dXJuIGludHJp
bnNpY0hvdFNwb3Q7CisgICAgaWYgKGF1dG8gaW50cmluc2ljSG90U3BvdCA9IGltYWdlLT5ob3RT
cG90KCkpIHsKKyAgICAgICAgaWYgKGltYWdlUmVjdC5jb250YWlucyhpbnRyaW5zaWNIb3RTcG90
LnZhbHVlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGludHJpbnNpY0hvdFNwb3QudmFsdWUoKTsK
KyAgICB9CiAKICAgICByZXR1cm4gSW50UG9pbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBhNDdhOTcyOTUyODUxYWE1
NGQzNjE5ZTY4YTZlMDk2MDMwMzY1M2VlLi43Yzc4ZDM2NWMxYTQwMmU2ZWMxOTRiNzcyZjU1YTll
ZGJkNmNkZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC0yNTQsOSArMjU0LDkgQEAgSW50U2l6ZSBCaXRtYXBJbWFnZTo6c2l6
ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZVJlc3BlY3Rp
bmdPcmllbnRhdGlvbjsKIH0KIAotYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdChJbnRQb2lu
dCYgaG90U3BvdCkgY29uc3QKK09wdGlvbmFsPEludFBvaW50PiBCaXRtYXBJbWFnZTo6aG90U3Bv
dCgpIGNvbnN0CiB7Ci0gICAgYm9vbCByZXN1bHQgPSBtX3NvdXJjZS5nZXRIb3RTcG90KGhvdFNw
b3QpOworICAgIGF1dG8gcmVzdWx0ID0gbV9zb3VyY2UuaG90U3BvdCgpOwogICAgIGRpZERlY29k
ZVByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNTExM2Q1ZDUyNzc4MTU0ZWFm
Y2Y5YTM0MjdiNTJlYjE1Y2ZlOTY5Yy4uN2M4ZWNhY2ZjNmM2MWM5NDQ0ZDYxYWRkNGUyNzk3NmNi
MjAyMWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkg
Y29uc3Q7CiAKLSAgICBib29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
dW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IGMzMTQyYWRlYzdh
MjVjODQ2MGUyOWFmMzUwMmI5NDE0N2I3MDZjN2MuLjUwZjc3ZTMxNjIxMDczNDZhMDc1MDYyMWNk
MzdlMmVmNDc5ZDY0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTA3LDcg
KzEwOCw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSk7IH0KICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpOyB9CiAgICAgZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLmhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBib29sIGdldEhvdFNwb3QoSW50
UG9pbnQmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50
UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBOdWxsb3B0OyB9CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKaW5kZXggMGQxMDA5NjFmZjI3NjE1MzY5OTUwZmNiYmZlMWVjNWVjODMxODRm
Zi4uN2VkOWZkMWQwNzY3OTNkZmY0ZGY3Y2QyM2Q3N2Y1ODFiOGRhYTI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA3IEFscCBUb2tlciA8YWxwLnRva2VyQGNvbGxhYm9yYS5jby51az4KICAqIENvcHlyaWdodCAo
QykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jCkBAIC0yOSwxOSArMjksMTYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCi0jaWYgIVVTRShDRykK
LQorI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2Vsc2UKICNpbmNs
dWRlICJJbWFnZURlY29kZXIuaCIKKyNlbmRpZgogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi11bnNpZ25lZCBJbWFn
ZVNvdXJjZTo6c19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSAxMDI0ICogMTAyNDsKLSNlbmRp
ZgotCiBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX2FscGhhT3B0aW9uKGFscGhhT3B0aW9uKQog
ICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKQEAgLTUwLDE0ICs0NywyMSBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VT
b3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbQogCiBJbWFn
ZVNvdXJjZTo6fkltYWdlU291cmNlKCkKIHsKLSAgICBjbGVhcih0cnVlKTsKIH0KIAotdm9pZCBJ
bWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFt
ZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VT
b3VyY2U6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSkKK3sK
KyAgICBpZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2RlY29kZXIt
PmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKK30KKwordm9pZCBJbWFn
ZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3QgY2xlYXJCZWZvcmVG
cmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBp
ZiAoIWRlc3Ryb3lBbGwpIHsKLSAgICAgICAgaWYgKG1fZGVjb2RlcikKLSAgICAgICAgICAgIG1f
ZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJhbWUpOworICAgIC8v
IFRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5IHRoZSBkZWNvZGVyIHVubGVzcyB3ZSdyZSBl
eHBsaWNpdGx5IGFza2VkCisgICAgLy8gdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KKyAg
ICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpIHsKKyAgICAgICAgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KGNsZWFyQmVmb3JlRnJhbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NywyMCAr
NzEsMTIgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsLCBzaXplX3Qg
Y2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnVmZmVyKgogICAgICAgICBzZXREYXRhKGRhdGEsIGFs
bERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0Ny
ZWF0ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2Rl
cklzQ3JlYXRlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKGluaXRpYWxp
emVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICAvLyBNYWtlIHRoZSBkZWNvZGVyIGJ5
IHNuaWZmaW5nIHRoZSBieXRlcy4KLSAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIGV4YW1pbmUgdGhl
IGRhdGEgYW5kIGluc3RhbnRpYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBkZWNv
ZGVyIHBsdWdpbi4KLSAgICAvLyBJZiBpbnN1ZmZpY2llbnQgYnl0ZXMgYXJlIGF2YWlsYWJsZSB0
byBkZXRlcm1pbmUgdGhlIGltYWdlIHR5cGUsIG5vIGRlY29kZXIgcGx1Z2luIHdpbGwgYmUKLSAg
ICAvLyBtYWRlLgotICAgIG1fZGVjb2RlciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBt
X2FscGhhT3B0aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSNpZiBFTkFCTEUo
SU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAgIGlmIChtX2RlY29kZXIgJiYgc19tYXhQ
aXhlbHNQZXJEZWNvZGVkSW1hZ2UpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0TWF4TnVtUGl4ZWxz
KHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTsKLSNlbmRpZgorICAgIG1fZGVjb2RlciA9IElt
YWdlRGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCkBAIC04OCw3ICs4NCw3IEBAIHZvaWQgSW1h
Z2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBlbnN1cmVEZWNv
ZGVySXNDcmVhdGVkKGRhdGEpOworICAgIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoKmRhdGEpOwog
ICAgIAogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTk2LDI1ICs5Miw0OCBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgaWYgKG1f
ZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVyLT5zZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsK
IH0KIAotU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CitTdWJz
YW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVF
eHRlbnNpb24oKSA6IFN0cmluZygpOworICAgIGlmICghbV9hbGxvd1N1YnNhbXBsaW5nIHx8ICFh
bGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoMCkpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIC8vIEZJWE1FOiB0aGlzIHZhbHVlIHdhcyBjaG9zZW4gdG8gYmUgYXBwcm9wcmlhdGUg
Zm9yIGlPUyBzaW5jZSB0aGUgaW1hZ2UKKyAgICAvLyBzdWJzYW1wbGluZyBpcyBvbmx5IGVuYWJs
ZWQgYnkgZGVmYXVsdCBvbiBpT1MuIENob29zZSBhIGRpZmZlcmVudCB2YWx1ZQorICAgIC8vIGlm
IGltYWdlIHN1YnNhbXBsaW5nIGlzIGVuYWJsZWQgb24gb3RoZXIgcGxhdGZvcm0uCisgICAgY29u
c3QgaW50IG1heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAy
NDsKKyAgICBjb25zdCBTdWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwor
ICAgIAorICAgIGZvciAoU3Vic2FtcGxpbmdMZXZlbCBsZXZlbCA9IDA7IGxldmVsIDwgbWF4U3Vi
c2FtcGxpbmdMZXZlbDsgKytsZXZlbCkgeworICAgICAgICBpZiAoZnJhbWVTaXplQXRJbmRleCgw
LCBsZXZlbCkuYXJlYSgpIDwgbWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQorICAg
ICAgICAgICAgcmV0dXJuIGxldmVsOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbWF4U3Vic2Ft
cGxpbmdMZXZlbDsKIH0KIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxp
bmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJj
ZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0IHNjYWxlKSBjb25zdAogewotICAgIHJl
dHVybiAwOworICAgIGlmICghKHNjYWxlID4gMCAmJiBzY2FsZSA8PSAxKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgCisgICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCA9IGNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCk7CisgICAgaWYgKCFtYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBUaGVyZSBhcmUg
Zm91ciBzdWJzYW1wbGluZyBsZXZlbHM6IDAgPSAxeCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9
IDAuMTI1eC4KKyAgICBTdWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9IHN0ZDo6Y2VpbChzdGQ6Omxv
ZzIoMSAvIHNjYWxlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwpOwogfQogCi1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKIH0K
IAotYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKK2Jvb2wgSW1hZ2VTb3VyY2U6
OmlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYg
bV9kZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKTsKIH0KQEAgLTEyOSw5NyArMTQ4LDcxIEBAIElu
dFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAogICAg
IHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsK
IH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QKK3NpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3Vu
dCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4
KTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRh
dGlvbigpOwotICAgIAotICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9
PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdo
dCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6
ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotYm9vbCBJbWFnZVNvdXJj
ZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK2ludCBJbWFnZVNvdXJjZTo6
cmVwZXRpdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29k
ZXItPmhvdFNwb3QoaG90U3BvdCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29k
ZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CiB9CiAKLXNpemVfdCBJbWFn
ZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKK1N0cmlu
ZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAw
OworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lv
bigpIDogU3RyaW5nKCk7CiB9CiAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkK
K09wdGlvbmFsPEludFBvaW50PiBJbWFnZVNvdXJjZTo6aG90U3BvdCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0Fu
aW1hdGlvbk5vbmU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmhvdFNw
b3QoKSA6IE51bGxvcHQ7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNv
bnN0Citib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgp
IDogMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoaW5kZXgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQorYm9v
bCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAg
IGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBa
ZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiAgSWYg
d2UgaGF2ZSBhbgotICAgIC8vIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgotICAg
IGlmIChzaXplKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIElt
YWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsK
LSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1l
RW1wdHkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAhaW5pdGlhbGl6ZWQo
KSB8fCBtX2RlY29kZXItPmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKK30KIAotICAgIC8v
IFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUg
cG9ydHMsIHRoZSBkYXRhCi0gICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIs
IGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCi0gICAgcmV0dXJuIGJ1ZmZl
ci0+YXNOZXdOYXRpdmVJbWFnZSgpOworYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGlu
Z09mRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5pdGlh
bGl6ZWQoKSAmJiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRl
eCk7CiB9CiAKLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCitJbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0CiB7CiAgICAgaWYg
KCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4
KGluZGV4KTsKLSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJh
bWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJldHVybiAwOworICAgIEludFNpemUgc2l6ZSA9IG1f
ZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAg
aWYgKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICE9IFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKQorICAgICAgICByZXR1cm4gc2l6ZTsKIAotICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRzIHNw
ZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBhcyBw
b3NzaWJsZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBk
dXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5Ci0gICAgLy8gYSBk
dXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0
dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0g
ICAgY29uc3QgZmxvYXQgZHVyYXRpb24gPSBidWZmZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBmOwot
ICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAgcmV0dXJuIDAuMTAwZjsKLSAgICBy
ZXR1cm4gZHVyYXRpb247CisgICAgcmV0dXJuIG9yaWVudGF0aW9uQXRJbmRleChpbmRleCkudXNl
c1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7CiB9CiAKLUlt
YWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNv
bnN0Cit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uKCkgOiBJbWFnZU9yaWVudGF0
aW9uKCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwpLmFyZWEoKSAqIDQ7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdElu
ZGV4KHNpemVfdCBpbmRleCkKK2Zsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rl
ci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAgIHJldHVybiBpbml0aWFsaXplZCgp
ID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkgOiAwOwogfQogCi1ib29s
IEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKK0ltYWdl
T3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRl
eChpbmRleCk7Ci0gICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1cygpID09IEltYWdl
RnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29k
ZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CiB9Ci0K
LXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CisgICAgCitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
PmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KSA6IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkg
PyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYg
dHMpIGNvbnN0CkBAIC0yMzMsNSArMjI2LDMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0
U3RyZWFtJiB0cykgY29uc3QKIH0KICAgICAKIH0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGNkOWIz
OWRhYTFjODVlMTgwZjJjNjQxNWEwZWQyM2YzZTRkNzc3YTQuLmE4OTgwNzYxYjQ0MTcyYTY4ODMz
NWFiOTc5MGI4OTQ4ZDczMTAzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCwgMjAxMiwgMjAx
NCwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCwx
OCArMjgsMTUgQEAKICNkZWZpbmUgSW1hZ2VTb3VyY2VfaAogCiAjaW5jbHVkZSAiSW1hZ2VPcmll
bnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQ
dHIuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLXR5cGVkZWYgc3RydWN0
IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBf
X0NGRGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSW1hZ2VPcmllbnRhdGlvbjsKQEAgLTgzLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICBH
YW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQKICAgICB9OwogCi0gICAgSW1hZ2VTb3VyY2UoQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24gPSBBbHBoYVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xvclBy
b2ZpbGVBcHBsaWVkKTsKKyAgICBJbWFnZVNvdXJjZShBbHBoYU9wdGlvbiA9IEFscGhhUHJlbXVs
dGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmls
ZUFwcGxpZWQpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCiAgICAgLy8gVGVsbHMgdGhlIEltYWdl
U291cmNlIHRoYXQgdGhlIEltYWdlIG5vIGxvbmdlciBjYXJlcyBhYm91dCBkZWNvZGVkIGZyYW1l
CkBAIC0xMDcsNzYgKzEwNCw2MSBAQCBwdWJsaWM6CiAgICAgLy8gd2hvIHNldCB8ZGVzdHJveUFs
bHwgdG8gdHJ1ZSBpZiB0aGV5IHdpc2ggdG8gYmUgYWJsZSB0byBjb250aW51ZSB1c2luZwogICAg
IC8vIHRoZSBJbWFnZVNvdXJjZS4gIFRoaXMgd2F5IGltcGxlbWVudGF0aW9ucyB3aGljaCBjaG9v
c2UgdG8gZGVzdHJveSB0aGVpcgogICAgIC8vIGRlY29kZXJzIGluIHNvbWUgY2FzZXMgY2FuIHJl
Y29uc3RydWN0IHRoZW0gY29ycmVjdGx5LgotICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxs
LAotICAgICAgICAgICAgICAgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLAotICAgICAgICAg
ICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gTlVMTCwKLSAgICAgICAgICAgICAgIGJvb2wgYWxs
RGF0YVJlY2VpdmVkID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxsLCBz
aXplX3QgY2xlYXJCZWZvcmVGcmFtZSA9IDAsIFNoYXJlZEJ1ZmZlciogZGF0YSA9IG51bGxwdHIs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOwogCiAgICAgYm9vbCBpbml0aWFsaXplZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIFN0cmluZyBmaWxl
bmFtZUV4dGVuc2lvbigpIGNvbnN0OwogCiAgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09m
RnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbGxvd1N1YnNhbXBsaW5n
KGJvb2wgYWxsb3dTdWJzYW1wbGluZykgeyBtX2FsbG93U3Vic2FtcGxpbmcgPSBhbGxvd1N1YnNh
bXBsaW5nOyB9Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgp
IGNvbnN0OwotCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICBzdGF0aWMgc2l6ZV90
IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwogICAgIAorICAgIGJvb2wgaXNT
aXplQXZhaWxhYmxlKCkgY29uc3Q7CiAgICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhv
dXQgc3Vic2FtcGxpbmcuCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgSW50U2l6ZSBz
aXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gU2l6ZSBvZiBv
cHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwotCi0gICAgYm9vbCBnZXRI
b3RTcG90KEludFBvaW50JikgY29uc3Q7Ci0KLSAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRl
cm1pbmVQcm9wZXJ0aWVzKCkgY29uc3Q7Ci0KLSAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCk7CiAK
ICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OworICAgIGludCByZXBldGl0aW9uQ291bnQo
KTsKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICBPcHRpb25hbDxJ
bnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNh
bGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKLSAgICAv
LyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKLQotICAg
IGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7Ci0gICAgYm9vbCBmcmFtZUhhc0Fs
cGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkg
dXNlZCBhbnkgYWxwaGEuCiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7
IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBpcyBjb21wbGV0ZWx5IGRlY29kZWQuCi0gICAg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJ
RiBpbWFnZSBvcmllbnRhdGlvbgotCisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEu
CisgICAgYm9vbCBhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
KyAgICAKKyAgICAvLyBTaXplIG9mIG9wdGlvbmFsbHkgc3Vic2FtcGxlZCBmcmFtZS4KKyAgICBJ
bnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikg
Y29uc3Q7CisgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRl
Y29kZWQgZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0CiAgICAgLy8gZGVjb2RlZCB0aGVu
IHJldHVybiAwLgogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IDApIGNvbnN0OwotCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKLSAgICBzdGF0aWMgdW5zaWduZWQgbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKCkg
eyByZXR1cm4gc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UodW5zaWduZWQgbWF4UGl4ZWxzKSB7IHNfbWF4UGl4
ZWxzUGVyRGVjb2RlZEltYWdlID0gbWF4UGl4ZWxzOyB9Ci0jZW5kaWYKLQorICAgIAorICAgIGZs
b2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJRiBpbWFnZSBvcmllbnRhdGlv
bgorICAgIAorICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGlu
ZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CisgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNs
ZWFyKCkgYWJvdmUuCisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CisgICAgCiBwcml2YXRlOgotICAgIHZvaWQg
ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShzaXplX3QpOworICAgIHZvaWQgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBTdWJzYW1wbGluZ0xldmVsIGNhbGN1bGF0ZU1heGlt
dW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mKSBj
b25zdDsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7
Ci0gICAgCisKKyAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBtX2FsbG93U3Vic2FtcGxpbmcg
c2hvdWxkIGJlIHRoZSBzYW1lIGFzIGRlZmF1bHRJbWFnZVN1YnNhbXBsaW5nRW5hYmxlZCBpbiBT
ZXR0aW5ncy5jcHAKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2FsbG93U3Vic2FtcGxp
bmcgeyB0cnVlIH07CiAjZWxzZQogICAgIGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIHsgZmFsc2Ug
fTsKICNlbmRpZgogCi0jaWYgIVVTRShDRykKICAgICBBbHBoYU9wdGlvbiBtX2FscGhhT3B0aW9u
OwogICAgIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb247Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQot
ICAgIHN0YXRpYyB1bnNpZ25lZCBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsKLSNlbmRpZgog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDdmYmQzNDFiOTg4ZGMyNWQ2ZDFmMTFkOGVhMzY3YTM2
OWQwZGRiNDUuLjI1MjU5ZGFhZjkyMzkxZjZjZTcxOTdhMDdkNTcyY2I0Y2IyNDYyYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKQEAgLTEyMiwxNSArMTIyLDYgQEAgSW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIo
KQogICAgIG1fbmF0aXZlRGVjb2RlciA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3Jl
bWVudGFsKG51bGxwdHIpKTsKIH0KIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZURlY29kZXI6OnN1
YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhp
bXVtU3Vic2FtcGxpbmdMZXZlbCkKLXsKLSAgICAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1wbGlu
ZyBsZXZlbHM6IDAgPSAxeCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KLSAgICBm
bG9hdCBjbGFtcGVkU2NhbGUgPSBzdGQ6Om1heDxmbG9hdD4oMC4xMjUsIHN0ZDo6bWluPGZsb2F0
PigxLCBzY2FsZSkpOwotICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9nMmYo
MSAvIGNsYW1wZWRTY2FsZSkpOwotICAgIEFTU0VSVChyZXN1bHQgPj0wICYmIHJlc3VsdCA8PSAz
KTsKLSAgICByZXR1cm4gc3RkOjptaW4ocmVzdWx0LCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7
Ci19Ci0KIHNpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVy
dGllcygpCiB7CiAgICAgLy8gTWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2MvY2FsbG9jIGNhbGxz
IG9uIE1hYyBPUyAxMC42LjYsIHg4Nl82NC4KQEAgLTIxMCwyNiArMjAxLDI1IEBAIGludCBJbWFn
ZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNBbmltYXRpb25O
b25lOwogfQogCi1ib29sIEltYWdlRGVjb2Rlcjo6aG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkg
Y29uc3QKK09wdGlvbmFsPEludFBvaW50PiBJbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAog
ewogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCAw
LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwogICAgIGlmICghcHJvcGVydGllcykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICAKICAgICBp
bnQgeCA9IC0xLCB5ID0gLTE7CiAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIpKTsK
ICAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUs
ICZ4KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAg
ICAKICAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGll
cy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RZIikpOwogICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdl
dFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIAogICAgIGlmICh4IDwgMCB8fCB5IDwgMCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICAKLSAg
ICBob3RTcG90ID0gSW50UG9pbnQoeCwgeSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IEludFBvaW50KHgsIHkpOwogfQogCiBJbnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29u
c3QKQEAgLTM4NiwyMSArMzc2LDIxIEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKENGRGF0
YVJlZiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBDR0ltYWdlU291cmNlVXBkYXRl
RGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAK
LXZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8v
IE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRs
eSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAg
Ly8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENG
RGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8v
IHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgc2V0RGF0YShkYXRhLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBzZXREYXRhKGRhdGEu
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENy
ZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRh
LT5yZWYoKTsKKyAgICBkYXRhLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBv
c2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVz
ZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93
biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGlj
aAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBj
YWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxi
YWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRC
dWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGRhdGEsIGRhdGEtPnNp
emUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZk
YXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJj
ZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5n
ZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggOGM2YTllMjI3
ODA0M2ZhNWFjNzIxMjYxN2YxZTA5MzE0NzFmZDRiNC4uMzc0YjhiNjczODBlNTc5OWU0Mjc0OTM0
ZGJlZjE2YzFhZTJhMTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC0yOSwxOSArMjksMjMgQEAKICNpbmNsdWRl
ICJJbWFnZVNvdXJjZUNHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisKK3R5cGVkZWYgc3RydWN0IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3Vy
Y2VSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1h
Z2VEZWNvZGVyKCk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29k
ZXI+IGNyZWF0ZSgpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IGNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdl
U291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlRGVjb2Rlcj4oKTsKICAgICB9CiAgICAgCiAgICAgc3Rh
dGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLSAgICBzdGF0
aWMgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUs
IFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwogICAgIAogICAgIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwogICAgIGJvb2wgaXNTaXplQXZhaWxhYmxl
KCkgY29uc3Q7CkBAIC01MCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNpemUoKSBj
b25zdDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OwogICAgIGludCByZXBldGl0aW9u
Q291bnQoKSBjb25zdDsKLSAgICBib29sIGhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0
OworICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7CiAgICAgCiAgICAgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAg
ICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CkBAIC02NCw3ICs2
OCw5IEBAIHB1YmxpYzoKICAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0RGF0
YShDRkRhdGFSZWYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgCisgICAgdm9pZCBjbGVhckZy
YW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0KICAgICAKIHByb3RlY3RlZDoKICAgICBtdXRhYmxl
IEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDlkNGUxNWM5ZmZlNzkwYzJlNjg1MjQ2ZmU4Zjg1ZWI1NjE2MDgzYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZVNv
dXJjZS5oIgotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKLQotI2lu
Y2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUltYWdl
U291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdlU291cmNl
OjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLXsKLSAgICAvLyBGSVhNRTogQWxwaGFPcHRp
b24gYW5kIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGFyZSBpZ25vcmVkLgotfQotCi1JbWFn
ZVNvdXJjZTo6fkltYWdlU291cmNlKCkKLXsKLSAgICBjbGVhcih0cnVlKTsKLX0KLQotdm9pZCBJ
bWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3QsIFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi17Ci0gICAgLy8gUmVjZW50IHZlcnNp
b25zIG9mIEltYWdlSU8gZGlzY2FyZCBwcmV2aW91c2x5IGRlY29kZWQgaW1hZ2UgZnJhbWVzIGlm
IHRoZSBjbGllbnQKLSAgICAvLyBhcHBsaWNhdGlvbiBubyBsb25nZXIgaG9sZHMgcmVmZXJlbmNl
cyB0byB0aGVtLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheQotICAgIC8vIHRoZSBk
ZWNvZGVyIHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5IGFza2VkIHRvIGRlc3Ryb3kgYWxsIG9mIHRo
ZSBmcmFtZXMuCi0gICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2RlY29kZXIgPSBudWxscHRyOwotICAgIAotICAgIGlmIChkYXRhKQotICAgICAgICBz
ZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci19Ci0gICAgCi12b2lkIEltYWdlU291cmNl
OjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciopCi17Ci0gICAgaWYgKGluaXRp
YWxpemVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6
OmNyZWF0ZSgpOwotfQotCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi17Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChkYXRhKTsKLSAgICAKLSAg
ICBpZiAoIWluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgbV9kZWNvZGVyLT5zZXREYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7Ci19Ci0KLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5m
aWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7Ci19Ci0gICAgCi1TdWJzYW1wbGluZ0xldmVs
IEltYWdlU291cmNlOjpjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX2FsbG93U3Vic2FtcGxpbmcgfHwgIWFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleCgwKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBWYWx1ZXMgY2hvc2VuIHRv
IGJlIGFwcHJvcHJpYXRlIGZvciBpT1MuCi0gICAgY29uc3QgaW50IGNNYXhpbXVtSW1hZ2VBcmVh
QmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAgY29uc3QgU3Vic2FtcGxp
bmdMZXZlbCBtYXhTdWJzYW1wbGluZ0xldmVsID0gMzsKLQotICAgIFN1YnNhbXBsaW5nTGV2ZWwg
Y3VycmVudExldmVsID0gMDsKLSAgICBmb3IgKCA7IGN1cnJlbnRMZXZlbCA8PSBtYXhTdWJzYW1w
bGluZ0xldmVsOyArK2N1cnJlbnRMZXZlbCkgewotICAgICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9
IGZyYW1lU2l6ZUF0SW5kZXgoMCwgY3VycmVudExldmVsKTsKLSAgICAgICAgaWYgKGZyYW1lU2l6
ZS5hcmVhKCkgPCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIGN1cnJlbnRMZXZlbDsKLX0KLSAgICAKLVN1
YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6Om1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29u
c3QKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIGNhbGN1bGF0ZU1heGltdW1TdWJz
YW1wbGluZ0xldmVsKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gMDsKLX0KLQotU3Vic2FtcGxpbmdM
ZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0IHNjYWxlKSBj
b25zdAotewotICAgIHJldHVybiBJbWFnZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShzY2FsZSwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSk7Ci19Ci0KLWJvb2wgSW1hZ2VTb3Vy
Y2U6OmlzU2l6ZUF2YWlsYWJsZSgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9k
ZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dT
dWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKLXsKLSAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJ
bmRleChpbmRleCk7Ci19Ci0KLUludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QK
LXsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0gICAgCi0g
ICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsKTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNv
ZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwotICAgIAotICAgIHJldHVybiBzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6
ZTsKLX0KLQotSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVj
b2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KSA6IEltYWdlT3JpZW50YXRpb24oKTsKLX0K
LQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1l
U2l6ZUF0SW5kZXgoMCwgMCk7Ci19Ci0gICAgCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRl
eCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6
OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRp
YWxpemVkKCkgJiYgbV9kZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOwotfQotCi1zaXplX3QgSW1h
Z2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVz
KCk7Ci19Ci0gICAgCi1pbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCi17Ci0gICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0Fu
aW1hdGlvbkxvb3BPbmNlOwotfQotCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBj
b25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50
KCkgOiAwOwotfQotCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsKQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVG
cmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOwotfQot
Ci1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkK
LXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXgoaW5kZXgpOwotfQotCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNv
ZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkgOiAwOwotfQotCi1ib29sIEltYWdlU291
cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuICFp
bml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
fQotCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0Ci17Ci0gICAgSW50U2l6
ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsK
LSAgICByZXR1cm4gZnJhbWVTaXplLmFyZWEoKSAqIDQ7Ci19Ci0gICAgCi12b2lkIEltYWdlU291
cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIGlmIChtX2FsbG93U3Vic2Ft
cGxpbmcpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWxsb3ctc3Vic2FtcGxpbmciLCBtX2Fs
bG93U3Vic2FtcGxpbmcpOwotICAgIAotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24g
PSBvcmllbnRhdGlvbkF0SW5kZXgoMCk7Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IE9yaWdpblRv
cExlZnQpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgib3JpZW50YXRpb24iLCBvcmllbnRhdGlv
bik7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDZmZTI5
MGUyMjYxOGZiZDc2Yzc1Yzg0NDkyNDQ3MmUzMTk3ZmZmODcuLmNmMTE3NWQ0OTM2OGQ0OTYxOTZj
MDQ3MDIzOTUwM2I2YjM3OTg4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApAQCAtMSw0ICsxLDUgQEAKIC8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgpAQCAtMjcwLDEzICsyNzEsMTYgQEAgdGVtcGxhdGUgPE1hdGNoVHlwZSB0
eXBlPiBpbnQgZ2V0U2NhbGVkVmFsdWUoY29uc3QgVmVjdG9yPGludD4mIHNjYWxlZFZhbHVlcywg
aW4KIAogfQogCi1ib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
IGluZGV4KSBjb25zdAorYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
c2l6ZV90IGluZGV4KSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgp
IDw9IGluZGV4KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNh
Y2hlW2luZGV4XS5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQotICAgICAg
ICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5oYXNBbHBoYSgpOwotICAgIHJldHVy
biB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJD
YWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKK30KKwor
Ym9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIWZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpIHx8IG1fZnJh
bWVCdWZmZXJDYWNoZVtpbmRleF0uaGFzQWxwaGEoKTsKIH0KIAogdW5zaWduZWQgSW1hZ2VEZWNv
ZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CkBAIC0yODcsNiArMjkx
LDQyIEBAIHVuc2lnbmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAogICAgIHJldHVybiBtX3NpemUuYXJlYSgpICogc2l6ZW9mKEltYWdlRnJhbWU6
OlBpeGVsRGF0YSk7CiB9CiAKK2Zsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6
ZSgpIDw9IGluZGV4KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgLy8gTWFueSBhbm5veWluZyBhZHMgc3BlY2lmeSBhIDAgZHVyYXRp
b24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLgorICAgIC8v
IFdlIGZvbGxvdyBGaXJlZm94J3MgYmVoYXZpb3IgYW5kIHVzZSBhIGR1cmF0aW9uIG9mIDEwMCBt
cyBmb3IgYW55IGZyYW1lcyB0aGF0IHNwZWNpZnkKKyAgICAvLyBhIGR1cmF0aW9uIG9mIDw9IDEw
IG1zLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzc2ODkzMDA+IGFuZCA8aHR0cDovL3dlYmtpdC5vcmcv
Yi8zNjA4Mj4KKyAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICBjb25zdCBmbG9hdCBk
dXJhdGlvbiA9IG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uZHVyYXRpb24oKSAvIDEwMDAuMGY7
CisgICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQorICAgICAgICByZXR1cm4gMC4xMDBmOworICAg
IHJldHVybiBkdXJhdGlvbjsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0
Cit7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBw
cm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBhbgorICAgIC8vIGVtcHR5IGltYWdl
IGRpbWVuc2lvbiwganVzdCBiYWlsLgorICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0
YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgLy8gUmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMgYSBuYXRpdmUgaW1hZ2Uu
IEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQorICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUg
Y29udGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgorICAgIHJl
dHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmFzTmV3TmF0aXZlSW1hZ2UoKTsKK30KKwog
dm9pZCBJbWFnZURlY29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpCiB7CiAgICAg
bV9zY2FsZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggNTM0N2E0N2I3MjNjZDVmMDNiNjJkM2Iz
NTJjZjk0NTE0N2RhMGVhYS4uNWJjNmIwMjU0MmRiNGIxNTA0ODRiZmE4Y2RjM2FmZjE1ODkxMjRh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
SW1hZ2VEZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0yMzUsMTUg
KzIzNiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEltYWdlRGVjb2Rlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoK
ICAgICAgICAgSW1hZ2VEZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQotICAgICAgICAgICAgOiBtX3NjYWxlZChmYWxzZSkKLSAgICAgICAgICAg
ICwgbV9wcmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEltYWdlU291cmNlOjpBbHBoYVBy
ZW11bHRpcGxpZWQpCisgICAgICAgICAgICA6IG1fcHJlbXVsdGlwbHlBbHBoYShhbHBoYU9wdGlv
biA9PSBJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVkKQogICAgICAgICAgICAgLCBtX2ln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID09IElt
YWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQpCi0gICAgICAgICAgICAsIG1f
c2l6ZUF2YWlsYWJsZShmYWxzZSkKLSAgICAgICAgICAgICwgbV9tYXhOdW1QaXhlbHMoLTEpCi0g
ICAgICAgICAgICAsIG1faXNBbGxEYXRhUmVjZWl2ZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1f
ZmFpbGVkKGZhbHNlKSB7IH0KKyAgICAgICAgeworICAgICAgICB9CiAKLSAgICAgICAgdmlydHVh
bCB+SW1hZ2VEZWNvZGVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpCisg
ICAgICAgIHsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFJldHVybnMgYSBjYWxsZXItb3duZWQg
ZGVjb2RlciBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZS4gIFJldHVybnMgMCBpZgogICAgICAgICAv
LyB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEg
KHBvc3NpYmx5CkBAIC0yNTQsMTEgKzI1NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGxEYXRh
UmVjZWl2ZWQ7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9kYXRhID0gZGF0YTsKKyAgICAgICAgICAgIG1fZGF0YSA9ICZkYXRhOwogICAgICAg
ICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKICAgICAgICAgfQog
CkBAIC0yODIsNyArMjgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBzaXpl
cy4gIFRoaXMgZG9lcyBOT1QgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBHSUYsIHNpbmNlIGRlY29k
aW5nIEdJRnMKICAgICAgICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxlciBmcmFtZXMgYWdhaW5z
dCBwcmV2aW91cyBmcmFtZXMgdG8gY3JlYXRlIGZ1bGwtCiAgICAgICAgIC8vIHNpemUgZnJhbWVz
LgotICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QpIGNvbnN0
CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHNpemUoKTsK
ICAgICAgICAgfQpAQCAtMzEwLDE2ICszMTAsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvLyBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlci4KICAgICAgICAgdmlydHVhbCBJbWFn
ZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7CiAKKyAgICAgICAgYm9vbCBm
cmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CisKICAgICAgICAgLy8gTWFrZSB0
aGUgYmVzdCBlZmZvcnQgZ3Vlc3MgdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3RlZCBmcmFtZSBoYXMg
YWxwaGEgY2hhbm5lbC4KLSAgICAgICAgdmlydHVhbCBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCkgY29uc3Q7CisgICAgICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
KSBjb25zdDsKIAogICAgICAgICAvLyBOdW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQgZnJh
bWUgcmVxdWVzdGVkLiBSZXR1cm4gMCBpZiBub3QgeWV0IGRlY29kZWQuCi0gICAgICAgIHZpcnR1
YWwgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgdW5z
aWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICAgICAgCisgICAgICAg
IGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIAorICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xv
clByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBmbGFn
OyB9CiAgICAgICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQogCi0gICAgICAgIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Cisg
ICAgICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBhbGxvd1N1
YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgICAgIGVudW0geyBpY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGggPSAxMjggfTsKIApA
QCAtMzMwLDYgKzMzOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1
cm4gIW1lbWNtcCgmcHJvZmlsZURhdGFbMTZdLCAiUkdCICIsIDQpOwogICAgICAgICB9CiAKKyAg
ICAgICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSB7
IHJldHVybiAwOyB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJu
IDA7IH0KKwogICAgICAgICBzdGF0aWMgYm9vbCBpbnB1dERldmljZUNvbG9yUHJvZmlsZShjb25z
dCBjaGFyKiBwcm9maWxlRGF0YSwgdW5zaWduZWQgcHJvZmlsZUxlbmd0aCkKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49
IGljY0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7CkBAIC0zNTQsMTMgKzM2Niw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gY29tcG9zaXRpbmcpLgogICAgICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9CiAKLSNpZiBFTkFCTEUoSU1B
R0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAgICAgICB2b2lkIHNldE1heE51bVBpeGVscyhp
bnQgbSkgeyBtX21heE51bVBpeGVscyA9IG07IH0KLSNlbmRpZgotCiAgICAgICAgIC8vIElmIHRo
ZSBpbWFnZSBoYXMgYSBjdXJzb3IgaG90LXNwb3QsIHN0b3JlcyBpdCBpbiB0aGUgYXJndW1lbnQK
ICAgICAgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBob3RTcG90KEludFBvaW50JikgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICAgICAgdmlydHVhbCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0
IHsgcmV0dXJuIE51bGxvcHQ7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBwcmVw
YXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTM3NCw3ICszODIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFZlY3RvcjxJbWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2Fj
aGU7CiAgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIG1fY29sb3JQcm9maWxlIGFueSBtb3Jl
LCBmb3IgYW55IHBvcnQ/CiAgICAgICAgIENvbG9yUHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKLSAg
ICAgICAgYm9vbCBtX3NjYWxlZDsKKyAgICAgICAgYm9vbCBtX3NjYWxlZCB7IGZhbHNlIH07CiAg
ICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkQ29sdW1uczsKICAgICAgICAgVmVjdG9yPGludD4g
bV9zY2FsZWRSb3dzOwogICAgICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKQEAgLTM5Miwx
MCArNDAwLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIElu
dFNpemUgbV9zaXplOwotICAgICAgICBib29sIG1fc2l6ZUF2YWlsYWJsZTsKLSAgICAgICAgaW50
IG1fbWF4TnVtUGl4ZWxzOwotICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7Ci0gICAg
ICAgIGJvb2wgbV9mYWlsZWQ7CisgICAgICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlIHsgZmFsc2Ug
fTsKKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAgICBzdGF0
aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsKKyNlbHNlCisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgbV9tYXhOdW1QaXhlbHMgeyAtMSB9OworI2VuZGlmCisgICAg
ICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9m
YWlsZWQgeyBmYWxzZSB9OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggM2Q3NmJjMmE5NzRkZWFmNzMxOGQ1NzBiMWVlYzMx
NjI2MDk5ODA2NS4uY2FmMzVjOTdmMTdlZGQzNGJjOWRmODlhYjA5ZTg3MDBhZWU2YzdkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQCBCTVBJbWFnZURl
Y29kZXI6OkJNUEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sCiB7CiB9CiAKLXZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGRh
dGEsIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgaWYgKG1fcmVhZGVyKQotICAgICAgICBtX3JlYWRl
ci0+c2V0RGF0YShkYXRhKTsKKyAgICAgICAgbV9yZWFkZXItPnNldERhdGEoJmRhdGEpOwogfQog
CiBib29sIEJNUEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuaAppbmRleCAxYzg4MmUxMzk5NTJlNDc0ODMyYmNiYzIyMDUwYTYwZmI0ZmZiYjk3Li5i
MmM0Nzg5NTYxOWJlY2FmMjVkMTBhMzBjMmU4M2FlMzU1ODg3NmM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICAvLyBJbWFnZURlY29kZXIKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNp
b24oKSBjb25zdCB7IHJldHVybiAiYm1wIjsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgICAgICB2aXJ0dWFsIEltYWdl
RnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpOwogICAgICAgICAvLyBDQVVU
SU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuICBCZSBjYXJlZnVsIHRvIGF2b2lk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IGNkNTZlNjdlYjkxOGIxNjkzYzRlY2Nm
NzQwYWY4MGM4NTkzNmE3OTguLjc5MTUxNTYwNzJkNzE3MDQ0MzcyNTczMDZiMDk1OTA4ZjM0OTg5
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC00MiwxNCArNDIsMTQgQEAgR0lG
SW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkKIHsKIH0KIAotdm9pZCBHSUZJbWFnZURl
Y29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBJbWFnZURlY29kZXI6OnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBp
ZiAobV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKGRhdGEpOworICAgICAgICBt
X3JlYWRlci0+c2V0RGF0YSgmZGF0YSk7CiB9CiAKIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppc1Np
emVBdmFpbGFibGUoKQpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5KQogCiAgICAgaWYgKCFt
X3JlYWRlcikgewogICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGSW1hZ2VS
ZWFkZXI+KHRoaXMpOwotICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEpOworICAgICAg
ICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmIChxdWVy
eSA9PSBHSUZTaXplUXVlcnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCA0MDYxMDg5
NTM5NWQ5YjEyY2M2OWQxOTFjYzMwNTIyMDljYzA2ODcyLi5jNGM0OWFjMzRlOGM4MmNhMjkwMzhh
Y2VkYzAzOWY1OTBmMzgxYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00Miw3ICs0
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBJbWFnZURlY29kZXIKICAg
ICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiAi
Z2lmIjsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1NpemVBdmFpbGFibGUoKTsKICAgICAgICAgdmlydHVhbCBib29sIHNldFNpemUodW5z
aWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CiAgICAgICAgIHZpcnR1YWwgc2l6ZV90IGZy
YW1lQ291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKaW5kZXggZmI4NzhlZDA4ZTI4ZDQwMmVl
ZjM3MGRjYTM5MmNmOWYyNmVkMDQ2OS4uZWE0MmIxMWE3OGMzOGViZTY1YzJjMjhiOTFjOGFmYjYy
NjM1YTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKQEAgLTI0Niw3ICsyNDYsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShQYXNzUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CisgICAgdm9pZCBzZXREYXRh
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CiAgICAgLy8g
RklYTUU6IGhhbHRBdEZyYW1lIHNob3VsZCBiZSBzaXplX3QuCiAgICAgYm9vbCBkZWNvZGUoV2Vi
Q29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZRdWVyeSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDU2YWM5MjFjZDA4NDY4MjNiODExMThl
YTZmM2FkZjIxMWRhN2EwODUuLmE2MDNhMTA3NmY5ZGZjZDE5NGU2YmQ5Y2YyYjgxZDRiM2I5ZGI3
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIElDT0lt
YWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVjb2RlcigpCiB7CiB9CiAKLXZvaWQgSUNPSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjQsNyArNjQsNyBAQCB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiAgICAgZm9yIChCTVBSZWFkZXJzOjppdGVy
YXRvciBpKG1fYm1wUmVhZGVycy5iZWdpbigpKTsgaSAhPSBtX2JtcFJlYWRlcnMuZW5kKCk7ICsr
aSkgewogICAgICAgICBpZiAoKmkpCi0gICAgICAgICAgICAoKmkpLT5zZXREYXRhKGRhdGEpOwor
ICAgICAgICAgICAgKCppKS0+c2V0RGF0YSgmZGF0YSk7CiAgICAgfQogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9wbmdEZWNvZGVycy5zaXplKCk7ICsraSkKICAgICAgICAgc2V0RGF0YUZv
clBOR0RlY29kZXJBdEluZGV4KGkpOwpAQCAtMTI4LDIxICsxMjgsMjAgQEAgYm9vbCBJQ09JbWFn
ZURlY29kZXI6OnNldEZhaWxlZCgpCiAgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVk
KCk7CiB9CiAKLWJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KEludFBvaW50JiBob3RTcG90
KSBjb25zdAorT3B0aW9uYWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdCgpIGNv
bnN0CiB7CiAgICAgLy8gV2hlbiB1bnNwZWNpZmllZCwgdGhlIGRlZmF1bHQgZnJhbWUgaXMgYWx3
YXlzIGZyYW1lIDAuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoCiAgICAgLy8gQml0bWFwSW1hZ2Ug
d2hlcmUgY3VycmVudEZyYW1lKCkgc3RhcnRzIGF0IDAgYW5kIG9ubHkgaW5jcmVhc2VzIHdoZW4g
YW5pbWF0aW9uIGlzCiAgICAgLy8gcmVxdWVzdGVkLgotICAgIHJldHVybiBob3RTcG90QXRJbmRl
eCgwLCBob3RTcG90KTsKKyAgICByZXR1cm4gaG90U3BvdEF0SW5kZXgoMCk7CiB9CiAKLWJvb2wg
SUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90QXRJbmRleChzaXplX3QgaW5kZXgsIEludFBvaW50JiBo
b3RTcG90KSBjb25zdAorT3B0aW9uYWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rlcjo6aG90U3Bv
dEF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogewogICAgIGlmIChpbmRleCA+PSBtX2RpckVu
dHJpZXMuc2l6ZSgpIHx8IG1fZmlsZVR5cGUgIT0gQ1VSU09SKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBOdWxsb3B0OwogCi0gICAgaG90U3BvdCA9IG1fZGlyRW50cmll
c1tpbmRleF0ubV9ob3RTcG90OwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBtX2RpckVu
dHJpZXNbaW5kZXhdLm1faG90U3BvdDsKIH0KIAogCkBAIC0xNjUsNyArMTY0LDcgQEAgdm9pZCBJ
Q09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChzaXplX3QgaW5kZXgp
CiAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBjb3B5IGJ5IG1ha2luZyB0aGUgUE5HIGRlY29kZXIg
YWJsZSB0byB0YWtlIGFuCiAgICAgLy8gb3B0aW9uYWwgb2Zmc2V0LgogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2Rp
ckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5Lm1faW1hZ2VP
ZmZzZXQpKTsKLSAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YShwbmdEYXRhLmdldCgp
LCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0
YSgqcG5nRGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKIHZvaWQgSUNPSW1hZ2VEZWNv
ZGVyOjpkZWNvZGUoc2l6ZV90IGluZGV4LCBib29sIG9ubHlTaXplKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5oCmluZGV4IDE0OTQ3OTdhOWJmMzFjM2U2NGI4MWRiNmNlMzMzZDkxMjdmYjg5ZDguLjlm
NDdhMDhkMzk0NjY1ZDBjZGI3YjMxODUzNTE2MDBjN2Q3YzYzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0IHsgcmV0dXJuICJpY28iOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1YWwgSW50U2l6
ZSBzaXplKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4
KHNpemVfdCkgY29uc3Q7CkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gYXZvaWQgYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4g
Y2FsbGluZyB0aGlzIGZyb20KICAgICAgICAgLy8gaW5zaWRlIEJNUEltYWdlUmVhZGVyIQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgc2V0RmFpbGVkKCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBob3RT
cG90KEludFBvaW50JikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+
IGhvdFNwb3QoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGVudW0gSW1hZ2VUeXBl
IHsKQEAgLTExNiw5ICsxMTYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGNv
dWxkIGJlIGRlY29kZWQuCiAgICAgICAgIGJvb2wgcHJvY2Vzc0RpcmVjdG9yeUVudHJpZXMoKTsK
IAotICAgICAgICAvLyBTdG9yZXMgdGhlIGhvdC1zcG90IGZvciB8aW5kZXh8IGluIHxob3RTcG90
fCBhbmQgcmV0dXJucyB0cnVlLAotICAgICAgICAvLyBvciByZXR1cm5zIGZhbHNlIGlmIHRoZXJl
IGlzIG5vbmUuCi0gICAgICAgIGJvb2wgaG90U3BvdEF0SW5kZXgoc2l6ZV90IGluZGV4LCBJbnRQ
b2ludCYgaG90U3BvdCkgY29uc3Q7CisgICAgICAgIC8vIFJldHVybnMgdGhlIGhvdC1zcG90IGZv
ciB8aW5kZXh8LCByZXR1cm5zIE51bGxvcHQgaWYgdGhlcmUgaXMgbm9uZS4KKyAgICAgICAgT3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3RBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKICAgICAgICAg
Ly8gUmVhZHMgYW5kIHJldHVybnMgYSBkaXJlY3RvcnkgZW50cnkgZnJvbSB0aGUgY3VycmVudCBv
ZmZzZXQgaW50bwogICAgICAgICAvLyB8ZGF0YXwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IGNhZmRkOTgwYWI4MThmOWFmNWE5NjJlMGYxNTVk
OWY0N2MwY2YyNDUuLmNhZjBkNzIzZjA2NTk2OWUwYzA4YzQ2ZTAyYzI0YTZlNDdjMTE5ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC00NTAs
MTAgKzQ1MCw5IEBAIHZvaWQgRXdrVmlldzo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29y
KQogICAgICAgICBpZiAoY3Vyc29ySW1hZ2UgPT0gbV9jdXJzb3JJZGVudGlmaWVyLmltYWdlKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEludFBvaW50IGhvdFNwb3Q7Ci0gICAgICAg
IGN1cnNvckltYWdlLT5nZXRIb3RTcG90KGhvdFNwb3QpOwotCi0gICAgICAgIEVjb3JlX1hfQ3Vy
c29yIGN1c3RvbUN1cnNvciA9IGNyZWF0ZUN1c3RvbUN1cnNvcih3aW5kb3csIGN1cnNvckltYWdl
LCBJbnRTaXplKGN1cnNvckltYWdlLT5zaXplKCkpLCBob3RTcG90KTsKKyAgICAgICAgCisgICAg
ICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90ID0gY3Vyc29ySW1hZ2UtPmhvdFNwb3QoKTsK
KyAgICAgICAgRWNvcmVfWF9DdXJzb3IgY3VzdG9tQ3Vyc29yID0gY3JlYXRlQ3VzdG9tQ3Vyc29y
KHdpbmRvdywgY3Vyc29ySW1hZ2UsIEludFNpemUoY3Vyc29ySW1hZ2UtPnNpemUoKSksIGhvdFNw
b3QgPyBob3RTcG90LnZhbHVlKCkgOiBJbnRQb2ludCgpKTsKICAgICAgICAgaWYgKCFjdXN0b21D
dXJzb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMGU5NWFmYWQwOTQyMjcxYjk2
YjNhZGM4YmQzNWVhYjA2ZDNhNGY0Li4xZDdhYzA5NDdhZTJmNzQzOTQ3NTlmYjJlNDE4ZDJmNTE4
YTRiODBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDQtMTAgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBNZXJnZSBDRyBJbWFnZVNv
dXJjZSBhbmQgbm9uIENHIEltYWdlU291cmNlIGltcGxlbWVudGF0aW9uIGluIG9uZSBmaWxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0NTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKyAgICAgICAgCisgICAgICAgIEFkZCBh
IHRlc3QgZm9yIGltYWdlIHN1Yi1zYW1wbGluZy4gVGhlIGltYWdlIHN1YnNhbXBsaW5nIGlzIGVu
YWJsZWQgYnkKKyAgICAgICAgZGVmYXVsdCBmb3IgaU9TIHBsYXRmb3JtIG9ubHkuIEJ1dCBpdCBj
YW4gYmUgZXhwbGljaXRseSBlbmFibGVkIHRocm91Z2gKKyAgICAgICAgdGhlIHNldHRpbmcgSW1h
Z2VTdWJzYW1wbGluZ0VuYWJsZWQuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1zdWJz
YW1wbGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9pbWFn
ZS1zdWJzYW1wbGluZy5odG1sOiBBZGRlZC4KKwogMjAxNi0wNC0wOSAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjE5OTI2OC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1
YnNhbXBsaW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1z
dWJzYW1wbGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwMzEzYmViOGRiNzk0MTk1YTZi
ZWMyMmRmMGI4MTFjN2IyMzA5MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjYgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGRp
diB7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICAgICAgbWFyZ2luOiAxMHB4OworICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzxoZWFkPgorPGJvZHk+Cis8c2NyaXB0
PgorICAgIGZ1bmN0aW9uIGNyZWF0ZURpdihjb2xvcikgeworICAgICAgICB2YXIgZGl2RWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBkaXZFbGVtZW50LnN0
eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGRpdkVsZW1lbnQpOworICAgIH0KKworICAgIGNyZWF0ZURpdigicmVkIik7CisgICAg
Y3JlYXRlRGl2KCJncmVlbiIpOworICAgIGNyZWF0ZURpdigiYmx1ZSIpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFn
ZS1zdWJzYW1wbGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2Ft
cGxpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjhhZTNiZTlkZjUzMDFkYjJhMThkODI5MzRlNzNiYTVk
OTg5NDdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Ut
c3Vic2FtcGxpbmcuaHRtbApAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBkaXYgeworICAgICAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIG1hcmdpbjog
MTBweDsKKyAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgfQorICAg
ICAgICBpbWcgeworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8aGVhZD4KKzxib2R5PgorPHNjcmlw
dD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRJbWFnZVN1YnNhbXBsaW5nRW5hYmxlZCh0cnVlKTsKKworICAgIGZ1bmN0aW9u
IGNyZWF0ZUltYWdlKGNvbG9yKSB7CisgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICAgICAgY2FudmFzLndpZHRoID0gMTAyNCAqIDM7Cisg
ICAgICAgIGNhbnZhcy5oZWlnaHQgPSAxMDI0ICogMzsKKyAgICAgICAgdmFyIGN0eCA9IGNhbnZh
cy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CisgICAg
ICAgIGN0eC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworCisg
ICAgICAgIHZhciBpbWdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7Cisg
ICAgICAgIGltZ0VsZW1lbnQuc3JjID0gY2FudmFzLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisK
KyAgICAgICAgdmFyIGRpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgZGl2RWxlbWVudC5hcHBlbmRDaGlsZChpbWdFbGVtZW50KTsKKyAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXZFbGVtZW50KTsKKyAgICB9CisgICAgCisgICAgY3Jl
YXRlSW1hZ2UoInJlZCIpOworICAgIGNyZWF0ZUltYWdlKCJncmVlbiIpOworICAgIGNyZWF0ZUlt
YWdlKCJibHVlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276165</attachid>
            <date>2016-04-11 12:28:23 -0700</date>
            <delta_ts>2016-04-11 12:48:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160411122839.patch</filename>
            <type>text/plain</type>
            <size>66751</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmZjVmNDQ4NDE3YTc1
ZjRkNTQ4ZjE4MjFhYTE2ZGFlODU1NGM3NC4uMzAzMGU4NWQ1ZDYwMWJlMDk3ODdkNTU5MDU2ODli
YzlhNmJiMDAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NiBAQAorMjAxNi0wNC0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIElt
YWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4gQWxs
IHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJbWFn
ZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNhbiBo
YXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0IHJp
ZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0L2lt
YWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5kIGFk
ZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL0N1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1p
bmVIb3RTcG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aG90U3BvdCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmhvdFNwb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldEhvdFNwb3QpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgZ2V0SG90
U3BvdCgpIHRvIGhvdFNwb3QoKSBhbmQgY2hhbmdlIGl0IHRvIHJldHVybiBPcHRpb25hbDxJbnRQ
b2ludD4uCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1v
dmUgY2xlYXIodHJ1ZSkgY2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxs
cyBJbWFnZURlY29kZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hp
Y2ggd2lsbCBkbyBub3RoaW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIq
IHRvCisgICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJ
bWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29u
c3Qgc3RhdGljIGludCBDRyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0
CisgICAgICAgIGJhc2VkIG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVm
ZmVyJiB0byB0aGUgdW5kZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0
dXJucyB0aGUgbWF4aW11bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBh
biBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2Ft
cGxpbmdMZXZlbEZvclNjYWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1
YnNhbXBsaW5nTGV2ZWwgdGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwgZm9yCisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKTogUmV0dXJucyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hp
Y2ggY2FuIGRldGVybWluZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisg
ICAgICAgIHplcm8uIEZvciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNv
cnJlY3RlZCBsYXRlci4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
aXNTaXplQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBl
cnMgZm9yIHRoZSBJbWFnZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rp
b25zCisgICAgICAgIGlzIHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisg
ICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJv
bSBCaXRtYXBJbWFnZTo6ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpnZXRIb3RTcG90KTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpzZXRBbGxvd1N1YnNhbXBsaW5nKTogQ2FsbGVkIGZyb20gQml0bWFwSW1hZ2U6OnNldEFsbG93
U3Vic2FtcGxpbmcoKS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICBTZXR0aW5nIG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSB3YXMgbW92ZWQgdG8gdGhlIG5vbiBD
RyBJbWFnZURlY29kZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
RGF0YSk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKTogRGVsZXRl
ZC4KKyAgICAgICAgVGhlIGNvZGUgd2FzIG1vdmVkIHRvIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoKS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKTogTWFrZSB0aGUgcHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgc3VpdGFi
bGUgZm9yIENHIGFuZCBub24gQ0cgY2FzZXMuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEVtcHR5IGZ1bmN0aW9ucyBmb3IgQ0cuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KTogQSBtZXcgZnVuY3Rpb24gdG8gcmV0dXJuCisgICAgICAgIHdoZXRoZXIg
dGhlIGZyYW1lIGRlY29kaW5nIGlzIGNvbXBsZXRlIG9yIG5vdC4KKyAgICAgICAgCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KTogU2ltcGxpZnkg
dGhlIGxvZ2ljLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOiBUaGUgY29kZSB3YXMgbW92ZWQgZnJvbQorICAgICAgICBJbWFn
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoKSBpbiBJbWFnZVNvdXJjZS5jcHAuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCk6IFRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6IEluaXRpYWxpemUgdGhlIG1lbWJl
cnMgaW4gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6On5JbWFnZURlY29k
ZXIpOiBGaXggdGhlIGJyYWNlcyBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6c2V0RGF0YSk6IENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgYXJndW1lbnQgZnJvbQorICAgICAg
ICBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOiBBZGQgdGhlIGFyZ3VtZW50IFN1YnNhbXBsaW5n
TGV2ZWwKKyAgICAgICAgc28gaXQgY2FuIGhhdmUgdGhlIHNhbWUgcHJvdG90eXBlIGFzIENHLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbkF0SW5kZXgpOiBSZW5h
bWUgaXQgdG8gdGhlIHNhbWUgb2YgQ0cuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUp
OiBBZGQgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGFuZCByZXR1cm4gdGhlIGRlZmF1bHQgdmFs
dWVzIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGFkZCBkaXJlY3RpdmUgY29tcGlsZWQKKyAgICAgICAg
bm9uIENHIGJsb2NrcyBpbiBJbWFnZVNvdXJjZS5jcHAuCisKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6aG90U3BvdCk6IFJldHVybiBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAg
IAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscyk6IERlbGV0
ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKEdJ
RkltYWdlUmVhZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgIFVzZSByZWZlcmVuY2UgU2hhcmVkQnVmZmVyIGluc3Rl
YWQgb2YgcG9pbnRlciBTaGFyZWRCdWZmZXIuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
SUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6aG90U3BvdEF0SW5kZXgpOgorICAgICAgICBDaGFuZ2UgaG90U3BvdCgpIHRvIHJldHVy
biBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgpOgorICAgICAg
ICBQYXNzIHJlZmVyZW5jZSBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBwb2ludGVyIFNoYXJlZEJ1
ZmZlci4KKworMjAxNi0wNC0wOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUsY29tPgorCisgICAgICAgIFRpbWluZyBhdHRhY2sgb24gU1ZHIGZlQ29tcG9zaXRlIGZpbHRl
ciBjaXJjdW12ZW50cyBzYW1lLW9yaWdpbiBwb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDMzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE9s
aXZlciBIdW50LgorCisgICAgICAgIEVuc3VyZSB0aGUgRkVDb21wb3NpdGUgYXJpdGhtZXRpYyBm
aWx0ZXIgaXMgY2xhbXBpbmcgdGhlIHJlc3VsdGVkIGNvbG9yCisgICAgICAgIGNvbXBvbmVudHMg
aW4gYSBjb25zdGFudCB0aW1lLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcEJ5dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcHV0ZUFyaXRobWV0aWNQaXhlbHMpOgorCiAyMDE2LTA0LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NVG9rZW5MaXN0LmNvbnRh
aW5zKCkgc2hvdWxkIG5vdCB0aHJvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM3Nzk3ZDUxZTMzNTFlMDc4YWQz
YzM0NmY1YTFkNjJmYTU4ZTdjZTEuLmFiZjdjM2E5MTA0Y2E1NjBiNTRjM2M4YzAwOTA3ODcxOTBj
NTNkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wNC0xMSAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdlIENHIElt
YWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4gb25lIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ1
NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpzZXRDdXJzb3IpOgor
ICAgICAgICBSZXBsYWNlIHRoZSBjYWxsIHRvIEltYWdlOjpnZXRIb3RTcG90KCkgYnkgSW1hZ2U6
OmhvdFNwb3QoKS4KKwogMjAxNi0wNC0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5OTI5MC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggZjhkYTRmMzAyYjYwNDcxYTE2YTcwZjY1NTUyOWUzMTc0N2Jj
YWY2ZS4uY2MyMzE1ZTI1ZTAzZDA0ZDI4Yjk3NWZiODRkM2ZlOGU4YWE4NzNmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTIyMTQsNiArMjIxNCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2lu
LmNtYWtlCmluZGV4IGM2NzJjYzcwN2ZhODc4NWJhNTI3NDQyZTkwNGIxY2ZhZGIyNTE1YWMuLjA5
YzgwOTRlNzdjNGJmMzJhY2Y0N2FhOTNlOWRiYWU5OTYyOTdlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtNzIsNyArNzIsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
YjcyZjJlMTVjOGI1MmVhZTFhM2U2ZDZhNGVhNmFkMTJiMTJhMjhlOC4uYWVhMzU3MTA1OTA5Yjdj
N2VlMjA1NTI3NTllYWM5OWY0NTZkNWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAg
LTQwNiw3ICs0MDYsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ludFBvaW50Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENH
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDY1ZjYyODZiNjM0OWQyZjk0NzU5ZTJhM2I0ZTAzNzAyZTI5N2IwMGMuLjI1ODlj
MzUxZWE1OTc1OTllZThhMDcwMTFlNjBmYjNhNzVhMjIzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5ODYsNyArNDk4Niw2
IEBACiAJCUIyNzUzNTVBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyQzBCMDUzODE0
MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU1QjBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNw
cCAqLzsgfTsKIAkJQjI3NTM1NUUwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzAwQjA1Mzgx
NDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovOyB9OwotCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2
NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5j
cHAgKi87IH07CiAJCUIyNzUzNTYwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMyMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjEwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMzBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENHLmNw
cCAqLzsgfTsKIAkJQjI3NTM1NjIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzNDBCMDUz
ODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCAqLzsgfTsKQEAgLTEyODc3LDcgKzEyODc2LDYg
QEAKIAkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJlY3RDRy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNp
emVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRTaXpl
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMDBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNzUzNTMxMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbWFnZVNvdXJjZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFBvaW50Q0cuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMzBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVj
dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRSZWN0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzNDBCMDUzODE0MDAyQ0U2
NEYgLyogSW50U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRTaXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE3ODUsNyAr
MjE3ODMsNiBAQAogCQkJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAq
LywKIAkJCQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwICov
LAogCQkJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovLAot
CQkJCUIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLywKIAkJ
CQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovLAogCQkJCTRC
MzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovLAogCQkJCUIy
NzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLywKQEAgLTMwMDA0LDcg
KzMwMDAxLDYgQEAKIAkJCQkyRDVBNTkyRjE1MjUyNTIzMDAzNkVFNTEgLyogSW1hZ2VPcmllbnRh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTFBMkY0MTE3RDdENURFMDA3MjUxN0EgLyog
SW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNDNzI1RTE5
NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI3
NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0dNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkzMTZGRTExNzBFNkUxREE3MDBCRjYwODggLyogSW1wbGljaXRBbmlt
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU5NjFDNTQxOEFEMzM4NTAwRDA3REM1IC8q
IEluYmFuZERhdGFUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Vyc29yLmNwcAppbmRleCA2MGE2MTlhY2RhMTNhYTQ3YmExMmViMDNiNGUyMjVmMjQxZmMzYjJi
Li45YzU5MmYzNzRiMzRlN2Y5Njc5ZTlkZmY0OGZhMTBhZTY4MDBlMzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cnNvci5jcHAKQEAgLTQ0LDEwICs0NCwxMCBAQCBJbnRQb2ludCBkZXRlcm1pbmVI
b3RTcG90KEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHNwZWNpZmllZEhvdFNwb3QpCiAg
ICAgICAgIHJldHVybiBzcGVjaWZpZWRIb3RTcG90OwogCiAgICAgLy8gSWYgaG90IHNwb3QgaXMg
bm90IHNwZWNpZmllZCBleHRlcm5hbGx5LCBpdCBjYW4gYmUgZXh0cmFjdGVkIGZyb20gc29tZSBp
bWFnZSBmb3JtYXRzIChlLmcuIC5jdXIpLgotICAgIEludFBvaW50IGludHJpbnNpY0hvdFNwb3Q7
Ci0gICAgYm9vbCBpbWFnZUhhc0ludHJpbnNpY0hvdFNwb3QgPSBpbWFnZS0+Z2V0SG90U3BvdChp
bnRyaW5zaWNIb3RTcG90KTsKLSAgICBpZiAoaW1hZ2VIYXNJbnRyaW5zaWNIb3RTcG90ICYmIGlt
YWdlUmVjdC5jb250YWlucyhpbnRyaW5zaWNIb3RTcG90KSkKLSAgICAgICAgcmV0dXJuIGludHJp
bnNpY0hvdFNwb3Q7CisgICAgaWYgKGF1dG8gaW50cmluc2ljSG90U3BvdCA9IGltYWdlLT5ob3RT
cG90KCkpIHsKKyAgICAgICAgaWYgKGltYWdlUmVjdC5jb250YWlucyhpbnRyaW5zaWNIb3RTcG90
LnZhbHVlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGludHJpbnNpY0hvdFNwb3QudmFsdWUoKTsK
KyAgICB9CiAKICAgICByZXR1cm4gSW50UG9pbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBhNDdhOTcyOTUyODUxYWE1
NGQzNjE5ZTY4YTZlMDk2MDMwMzY1M2VlLi43Yzc4ZDM2NWMxYTQwMmU2ZWMxOTRiNzcyZjU1YTll
ZGJkNmNkZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC0yNTQsOSArMjU0LDkgQEAgSW50U2l6ZSBCaXRtYXBJbWFnZTo6c2l6
ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZVJlc3BlY3Rp
bmdPcmllbnRhdGlvbjsKIH0KIAotYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdChJbnRQb2lu
dCYgaG90U3BvdCkgY29uc3QKK09wdGlvbmFsPEludFBvaW50PiBCaXRtYXBJbWFnZTo6aG90U3Bv
dCgpIGNvbnN0CiB7Ci0gICAgYm9vbCByZXN1bHQgPSBtX3NvdXJjZS5nZXRIb3RTcG90KGhvdFNw
b3QpOworICAgIGF1dG8gcmVzdWx0ID0gbV9zb3VyY2UuaG90U3BvdCgpOwogICAgIGRpZERlY29k
ZVByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNTExM2Q1ZDUyNzc4MTU0ZWFm
Y2Y5YTM0MjdiNTJlYjE1Y2ZlOTY5Yy4uN2M4ZWNhY2ZjNmM2MWM5NDQ0ZDYxYWRkNGUyNzk3NmNi
MjAyMWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkg
Y29uc3Q7CiAKLSAgICBib29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
dW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IGMzMTQyYWRlYzdh
MjVjODQ2MGUyOWFmMzUwMmI5NDE0N2I3MDZjN2MuLjUwZjc3ZTMxNjIxMDczNDZhMDc1MDYyMWNk
MzdlMmVmNDc5ZDY0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTA3LDcg
KzEwOCw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSk7IH0KICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpOyB9CiAgICAgZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLmhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBib29sIGdldEhvdFNwb3QoSW50
UG9pbnQmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50
UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBOdWxsb3B0OyB9CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKaW5kZXggMGQxMDA5NjFmZjI3NjE1MzY5OTUwZmNiYmZlMWVjNWVjODMxODRm
Zi4uN2VkOWZkMWQwNzY3OTNkZmY0ZGY3Y2QyM2Q3N2Y1ODFiOGRhYTI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA3IEFscCBUb2tlciA8YWxwLnRva2VyQGNvbGxhYm9yYS5jby51az4KICAqIENvcHlyaWdodCAo
QykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jCkBAIC0yOSwxOSArMjksMTYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCi0jaWYgIVVTRShDRykK
LQorI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2Vsc2UKICNpbmNs
dWRlICJJbWFnZURlY29kZXIuaCIKKyNlbmRpZgogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi11bnNpZ25lZCBJbWFn
ZVNvdXJjZTo6c19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSAxMDI0ICogMTAyNDsKLSNlbmRp
ZgotCiBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX2FscGhhT3B0aW9uKGFscGhhT3B0aW9uKQog
ICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKQEAgLTUwLDE0ICs0NywyMSBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VT
b3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbQogCiBJbWFn
ZVNvdXJjZTo6fkltYWdlU291cmNlKCkKIHsKLSAgICBjbGVhcih0cnVlKTsKIH0KIAotdm9pZCBJ
bWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFt
ZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VT
b3VyY2U6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSkKK3sK
KyAgICBpZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2RlY29kZXIt
PmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKK30KKwordm9pZCBJbWFn
ZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3QgY2xlYXJCZWZvcmVG
cmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBp
ZiAoIWRlc3Ryb3lBbGwpIHsKLSAgICAgICAgaWYgKG1fZGVjb2RlcikKLSAgICAgICAgICAgIG1f
ZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJhbWUpOworICAgIC8v
IFRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5IHRoZSBkZWNvZGVyIHVubGVzcyB3ZSdyZSBl
eHBsaWNpdGx5IGFza2VkCisgICAgLy8gdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KKyAg
ICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpIHsKKyAgICAgICAgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KGNsZWFyQmVmb3JlRnJhbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NywyMCAr
NzEsMTIgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsLCBzaXplX3Qg
Y2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnVmZmVyKgogICAgICAgICBzZXREYXRhKGRhdGEsIGFs
bERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0Ny
ZWF0ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2Rl
cklzQ3JlYXRlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKGluaXRpYWxp
emVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICAvLyBNYWtlIHRoZSBkZWNvZGVyIGJ5
IHNuaWZmaW5nIHRoZSBieXRlcy4KLSAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIGV4YW1pbmUgdGhl
IGRhdGEgYW5kIGluc3RhbnRpYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBkZWNv
ZGVyIHBsdWdpbi4KLSAgICAvLyBJZiBpbnN1ZmZpY2llbnQgYnl0ZXMgYXJlIGF2YWlsYWJsZSB0
byBkZXRlcm1pbmUgdGhlIGltYWdlIHR5cGUsIG5vIGRlY29kZXIgcGx1Z2luIHdpbGwgYmUKLSAg
ICAvLyBtYWRlLgotICAgIG1fZGVjb2RlciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBt
X2FscGhhT3B0aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSNpZiBFTkFCTEUo
SU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAgIGlmIChtX2RlY29kZXIgJiYgc19tYXhQ
aXhlbHNQZXJEZWNvZGVkSW1hZ2UpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0TWF4TnVtUGl4ZWxz
KHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTsKLSNlbmRpZgorICAgIG1fZGVjb2RlciA9IElt
YWdlRGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCkBAIC04OCw3ICs4NCw3IEBAIHZvaWQgSW1h
Z2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBlbnN1cmVEZWNv
ZGVySXNDcmVhdGVkKGRhdGEpOworICAgIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoKmRhdGEpOwog
ICAgIAogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTk2LDI1ICs5Miw0OCBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgaWYgKG1f
ZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVyLT5zZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsK
IH0KIAotU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CitTdWJz
YW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVF
eHRlbnNpb24oKSA6IFN0cmluZygpOworICAgIGlmICghbV9hbGxvd1N1YnNhbXBsaW5nIHx8ICFh
bGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoMCkpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIC8vIEZJWE1FOiB0aGlzIHZhbHVlIHdhcyBjaG9zZW4gdG8gYmUgYXBwcm9wcmlhdGUg
Zm9yIGlPUyBzaW5jZSB0aGUgaW1hZ2UKKyAgICAvLyBzdWJzYW1wbGluZyBpcyBvbmx5IGVuYWJs
ZWQgYnkgZGVmYXVsdCBvbiBpT1MuIENob29zZSBhIGRpZmZlcmVudCB2YWx1ZQorICAgIC8vIGlm
IGltYWdlIHN1YnNhbXBsaW5nIGlzIGVuYWJsZWQgb24gb3RoZXIgcGxhdGZvcm0uCisgICAgY29u
c3QgaW50IG1heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAy
NDsKKyAgICBjb25zdCBTdWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwor
ICAgIAorICAgIGZvciAoU3Vic2FtcGxpbmdMZXZlbCBsZXZlbCA9IDA7IGxldmVsIDwgbWF4U3Vi
c2FtcGxpbmdMZXZlbDsgKytsZXZlbCkgeworICAgICAgICBpZiAoZnJhbWVTaXplQXRJbmRleCgw
LCBsZXZlbCkuYXJlYSgpIDwgbWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQorICAg
ICAgICAgICAgcmV0dXJuIGxldmVsOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbWF4U3Vic2Ft
cGxpbmdMZXZlbDsKIH0KIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxp
bmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJj
ZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0IHNjYWxlKSBjb25zdAogewotICAgIHJl
dHVybiAwOworICAgIGlmICghKHNjYWxlID4gMCAmJiBzY2FsZSA8PSAxKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgCisgICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCA9IGNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCk7CisgICAgaWYgKCFtYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBUaGVyZSBhcmUg
Zm91ciBzdWJzYW1wbGluZyBsZXZlbHM6IDAgPSAxeCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9
IDAuMTI1eC4KKyAgICBTdWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9IHN0ZDo6Y2VpbChzdGQ6Omxv
ZzIoMSAvIHNjYWxlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwpOwogfQogCi1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKIH0K
IAotYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKK2Jvb2wgSW1hZ2VTb3VyY2U6
OmlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYg
bV9kZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKTsKIH0KQEAgLTEyOSw5NyArMTQ4LDcxIEBAIElu
dFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAogICAg
IHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsK
IH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QKK3NpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3Vu
dCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4
KTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRh
dGlvbigpOwotICAgIAotICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9
PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdo
dCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6
ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotYm9vbCBJbWFnZVNvdXJj
ZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK2ludCBJbWFnZVNvdXJjZTo6
cmVwZXRpdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29k
ZXItPmhvdFNwb3QoaG90U3BvdCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29k
ZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CiB9CiAKLXNpemVfdCBJbWFn
ZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKK1N0cmlu
ZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAw
OworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lv
bigpIDogU3RyaW5nKCk7CiB9CiAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkK
K09wdGlvbmFsPEludFBvaW50PiBJbWFnZVNvdXJjZTo6aG90U3BvdCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0Fu
aW1hdGlvbk5vbmU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmhvdFNw
b3QoKSA6IE51bGxvcHQ7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNv
bnN0Citib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgp
IDogMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoaW5kZXgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQorYm9v
bCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAg
IGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBa
ZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiAgSWYg
d2UgaGF2ZSBhbgotICAgIC8vIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgotICAg
IGlmIChzaXplKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIElt
YWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsK
LSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1l
RW1wdHkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAhaW5pdGlhbGl6ZWQo
KSB8fCBtX2RlY29kZXItPmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKK30KIAotICAgIC8v
IFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUg
cG9ydHMsIHRoZSBkYXRhCi0gICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIs
IGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCi0gICAgcmV0dXJuIGJ1ZmZl
ci0+YXNOZXdOYXRpdmVJbWFnZSgpOworYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGlu
Z09mRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5pdGlh
bGl6ZWQoKSAmJiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRl
eCk7CiB9CiAKLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCitJbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0CiB7CiAgICAgaWYg
KCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4
KGluZGV4KTsKLSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJh
bWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJldHVybiAwOworICAgIEludFNpemUgc2l6ZSA9IG1f
ZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAg
aWYgKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICE9IFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKQorICAgICAgICByZXR1cm4gc2l6ZTsKIAotICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRzIHNw
ZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBhcyBw
b3NzaWJsZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBk
dXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5Ci0gICAgLy8gYSBk
dXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0
dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0g
ICAgY29uc3QgZmxvYXQgZHVyYXRpb24gPSBidWZmZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBmOwot
ICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAgcmV0dXJuIDAuMTAwZjsKLSAgICBy
ZXR1cm4gZHVyYXRpb247CisgICAgcmV0dXJuIG9yaWVudGF0aW9uQXRJbmRleChpbmRleCkudXNl
c1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7CiB9CiAKLUlt
YWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNv
bnN0Cit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uKCkgOiBJbWFnZU9yaWVudGF0
aW9uKCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwpLmFyZWEoKSAqIDQ7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdElu
ZGV4KHNpemVfdCBpbmRleCkKK2Zsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rl
ci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAgIHJldHVybiBpbml0aWFsaXplZCgp
ID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkgOiAwOwogfQogCi1ib29s
IEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKK0ltYWdl
T3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRl
eChpbmRleCk7Ci0gICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1cygpID09IEltYWdl
RnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29k
ZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CiB9Ci0K
LXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CisgICAgCitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
PmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KSA6IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkg
PyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYg
dHMpIGNvbnN0CkBAIC0yMzMsNSArMjI2LDMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0
U3RyZWFtJiB0cykgY29uc3QKIH0KICAgICAKIH0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGNkOWIz
OWRhYTFjODVlMTgwZjJjNjQxNWEwZWQyM2YzZTRkNzc3YTQuLmE4OTgwNzYxYjQ0MTcyYTY4ODMz
NWFiOTc5MGI4OTQ4ZDczMTAzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCwgMjAxMiwgMjAx
NCwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCwx
OCArMjgsMTUgQEAKICNkZWZpbmUgSW1hZ2VTb3VyY2VfaAogCiAjaW5jbHVkZSAiSW1hZ2VPcmll
bnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQ
dHIuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLXR5cGVkZWYgc3RydWN0
IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBf
X0NGRGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSW1hZ2VPcmllbnRhdGlvbjsKQEAgLTgzLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICBH
YW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQKICAgICB9OwogCi0gICAgSW1hZ2VTb3VyY2UoQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24gPSBBbHBoYVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xvclBy
b2ZpbGVBcHBsaWVkKTsKKyAgICBJbWFnZVNvdXJjZShBbHBoYU9wdGlvbiA9IEFscGhhUHJlbXVs
dGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmls
ZUFwcGxpZWQpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCiAgICAgLy8gVGVsbHMgdGhlIEltYWdl
U291cmNlIHRoYXQgdGhlIEltYWdlIG5vIGxvbmdlciBjYXJlcyBhYm91dCBkZWNvZGVkIGZyYW1l
CkBAIC0xMDcsNzYgKzEwNCw2MSBAQCBwdWJsaWM6CiAgICAgLy8gd2hvIHNldCB8ZGVzdHJveUFs
bHwgdG8gdHJ1ZSBpZiB0aGV5IHdpc2ggdG8gYmUgYWJsZSB0byBjb250aW51ZSB1c2luZwogICAg
IC8vIHRoZSBJbWFnZVNvdXJjZS4gIFRoaXMgd2F5IGltcGxlbWVudGF0aW9ucyB3aGljaCBjaG9v
c2UgdG8gZGVzdHJveSB0aGVpcgogICAgIC8vIGRlY29kZXJzIGluIHNvbWUgY2FzZXMgY2FuIHJl
Y29uc3RydWN0IHRoZW0gY29ycmVjdGx5LgotICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxs
LAotICAgICAgICAgICAgICAgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLAotICAgICAgICAg
ICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gTlVMTCwKLSAgICAgICAgICAgICAgIGJvb2wgYWxs
RGF0YVJlY2VpdmVkID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxsLCBz
aXplX3QgY2xlYXJCZWZvcmVGcmFtZSA9IDAsIFNoYXJlZEJ1ZmZlciogZGF0YSA9IG51bGxwdHIs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOwogCiAgICAgYm9vbCBpbml0aWFsaXplZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIFN0cmluZyBmaWxl
bmFtZUV4dGVuc2lvbigpIGNvbnN0OwogCiAgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09m
RnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbGxvd1N1YnNhbXBsaW5n
KGJvb2wgYWxsb3dTdWJzYW1wbGluZykgeyBtX2FsbG93U3Vic2FtcGxpbmcgPSBhbGxvd1N1YnNh
bXBsaW5nOyB9Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgp
IGNvbnN0OwotCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICBzdGF0aWMgc2l6ZV90
IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwogICAgIAorICAgIGJvb2wgaXNT
aXplQXZhaWxhYmxlKCkgY29uc3Q7CiAgICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhv
dXQgc3Vic2FtcGxpbmcuCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgSW50U2l6ZSBz
aXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gU2l6ZSBvZiBv
cHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwotCi0gICAgYm9vbCBnZXRI
b3RTcG90KEludFBvaW50JikgY29uc3Q7Ci0KLSAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRl
cm1pbmVQcm9wZXJ0aWVzKCkgY29uc3Q7Ci0KLSAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCk7CiAK
ICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OworICAgIGludCByZXBldGl0aW9uQ291bnQo
KTsKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICBPcHRpb25hbDxJ
bnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNh
bGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKLSAgICAv
LyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKLQotICAg
IGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7Ci0gICAgYm9vbCBmcmFtZUhhc0Fs
cGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkg
dXNlZCBhbnkgYWxwaGEuCiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7
IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBpcyBjb21wbGV0ZWx5IGRlY29kZWQuCi0gICAg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJ
RiBpbWFnZSBvcmllbnRhdGlvbgotCisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEu
CisgICAgYm9vbCBhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
KyAgICAKKyAgICAvLyBTaXplIG9mIG9wdGlvbmFsbHkgc3Vic2FtcGxlZCBmcmFtZS4KKyAgICBJ
bnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikg
Y29uc3Q7CisgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRl
Y29kZWQgZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0CiAgICAgLy8gZGVjb2RlZCB0aGVu
IHJldHVybiAwLgogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IDApIGNvbnN0OwotCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKLSAgICBzdGF0aWMgdW5zaWduZWQgbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKCkg
eyByZXR1cm4gc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UodW5zaWduZWQgbWF4UGl4ZWxzKSB7IHNfbWF4UGl4
ZWxzUGVyRGVjb2RlZEltYWdlID0gbWF4UGl4ZWxzOyB9Ci0jZW5kaWYKLQorICAgIAorICAgIGZs
b2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJRiBpbWFnZSBvcmllbnRhdGlv
bgorICAgIAorICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGlu
ZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CisgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNs
ZWFyKCkgYWJvdmUuCisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CisgICAgCiBwcml2YXRlOgotICAgIHZvaWQg
ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShzaXplX3QpOworICAgIHZvaWQgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBTdWJzYW1wbGluZ0xldmVsIGNhbGN1bGF0ZU1heGlt
dW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mKSBj
b25zdDsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7
Ci0gICAgCisKKyAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBtX2FsbG93U3Vic2FtcGxpbmcg
c2hvdWxkIGJlIHRoZSBzYW1lIGFzIGRlZmF1bHRJbWFnZVN1YnNhbXBsaW5nRW5hYmxlZCBpbiBT
ZXR0aW5ncy5jcHAKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2FsbG93U3Vic2FtcGxp
bmcgeyB0cnVlIH07CiAjZWxzZQogICAgIGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIHsgZmFsc2Ug
fTsKICNlbmRpZgogCi0jaWYgIVVTRShDRykKICAgICBBbHBoYU9wdGlvbiBtX2FscGhhT3B0aW9u
OwogICAgIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb247Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQot
ICAgIHN0YXRpYyB1bnNpZ25lZCBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsKLSNlbmRpZgog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDdmYmQzNDFiOTg4ZGMyNWQ2ZDFmMTFkOGVhMzY3YTM2
OWQwZGRiNDUuLjI1MjU5ZGFhZjkyMzkxZjZjZTcxOTdhMDdkNTcyY2I0Y2IyNDYyYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKQEAgLTEyMiwxNSArMTIyLDYgQEAgSW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIo
KQogICAgIG1fbmF0aXZlRGVjb2RlciA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3Jl
bWVudGFsKG51bGxwdHIpKTsKIH0KIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZURlY29kZXI6OnN1
YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhp
bXVtU3Vic2FtcGxpbmdMZXZlbCkKLXsKLSAgICAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1wbGlu
ZyBsZXZlbHM6IDAgPSAxeCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KLSAgICBm
bG9hdCBjbGFtcGVkU2NhbGUgPSBzdGQ6Om1heDxmbG9hdD4oMC4xMjUsIHN0ZDo6bWluPGZsb2F0
PigxLCBzY2FsZSkpOwotICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9nMmYo
MSAvIGNsYW1wZWRTY2FsZSkpOwotICAgIEFTU0VSVChyZXN1bHQgPj0wICYmIHJlc3VsdCA8PSAz
KTsKLSAgICByZXR1cm4gc3RkOjptaW4ocmVzdWx0LCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7
Ci19Ci0KIHNpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVy
dGllcygpCiB7CiAgICAgLy8gTWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2MvY2FsbG9jIGNhbGxz
IG9uIE1hYyBPUyAxMC42LjYsIHg4Nl82NC4KQEAgLTIxMCwyNiArMjAxLDI1IEBAIGludCBJbWFn
ZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNBbmltYXRpb25O
b25lOwogfQogCi1ib29sIEltYWdlRGVjb2Rlcjo6aG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkg
Y29uc3QKK09wdGlvbmFsPEludFBvaW50PiBJbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAog
ewogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCAw
LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwogICAgIGlmICghcHJvcGVydGllcykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICAKICAgICBp
bnQgeCA9IC0xLCB5ID0gLTE7CiAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIpKTsK
ICAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUs
ICZ4KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAg
ICAKICAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGll
cy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RZIikpOwogICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdl
dFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIAogICAgIGlmICh4IDwgMCB8fCB5IDwgMCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICAKLSAg
ICBob3RTcG90ID0gSW50UG9pbnQoeCwgeSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IEludFBvaW50KHgsIHkpOwogfQogCiBJbnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29u
c3QKQEAgLTM4NiwyMSArMzc2LDIxIEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKENGRGF0
YVJlZiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBDR0ltYWdlU291cmNlVXBkYXRl
RGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAK
LXZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8v
IE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRs
eSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAg
Ly8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENG
RGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8v
IHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgc2V0RGF0YShkYXRhLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBzZXREYXRhKGRhdGEu
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENy
ZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRh
LT5yZWYoKTsKKyAgICBkYXRhLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBv
c2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVz
ZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93
biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGlj
aAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBj
YWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxi
YWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRC
dWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGRhdGEsIGRhdGEtPnNp
emUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZk
YXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJj
ZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5n
ZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggOGM2YTllMjI3
ODA0M2ZhNWFjNzIxMjYxN2YxZTA5MzE0NzFmZDRiNC4uMzc0YjhiNjczODBlNTc5OWU0Mjc0OTM0
ZGJlZjE2YzFhZTJhMTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC0yOSwxOSArMjksMjMgQEAKICNpbmNsdWRl
ICJJbWFnZVNvdXJjZUNHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisKK3R5cGVkZWYgc3RydWN0IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3Vy
Y2VSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1h
Z2VEZWNvZGVyKCk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29k
ZXI+IGNyZWF0ZSgpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IGNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdl
U291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlRGVjb2Rlcj4oKTsKICAgICB9CiAgICAgCiAgICAgc3Rh
dGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLSAgICBzdGF0
aWMgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUs
IFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwogICAgIAogICAgIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwogICAgIGJvb2wgaXNTaXplQXZhaWxhYmxl
KCkgY29uc3Q7CkBAIC01MCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNpemUoKSBj
b25zdDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OwogICAgIGludCByZXBldGl0aW9u
Q291bnQoKSBjb25zdDsKLSAgICBib29sIGhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0
OworICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7CiAgICAgCiAgICAgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAg
ICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CkBAIC02NCw3ICs2
OCw5IEBAIHB1YmxpYzoKICAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0RGF0
YShDRkRhdGFSZWYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgCisgICAgdm9pZCBjbGVhckZy
YW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0KICAgICAKIHByb3RlY3RlZDoKICAgICBtdXRhYmxl
IEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDlkNGUxNWM5ZmZlNzkwYzJlNjg1MjQ2ZmU4Zjg1ZWI1NjE2MDgzYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZVNv
dXJjZS5oIgotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKLQotI2lu
Y2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUltYWdl
U291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdlU291cmNl
OjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLXsKLSAgICAvLyBGSVhNRTogQWxwaGFPcHRp
b24gYW5kIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGFyZSBpZ25vcmVkLgotfQotCi1JbWFn
ZVNvdXJjZTo6fkltYWdlU291cmNlKCkKLXsKLSAgICBjbGVhcih0cnVlKTsKLX0KLQotdm9pZCBJ
bWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3QsIFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi17Ci0gICAgLy8gUmVjZW50IHZlcnNp
b25zIG9mIEltYWdlSU8gZGlzY2FyZCBwcmV2aW91c2x5IGRlY29kZWQgaW1hZ2UgZnJhbWVzIGlm
IHRoZSBjbGllbnQKLSAgICAvLyBhcHBsaWNhdGlvbiBubyBsb25nZXIgaG9sZHMgcmVmZXJlbmNl
cyB0byB0aGVtLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheQotICAgIC8vIHRoZSBk
ZWNvZGVyIHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5IGFza2VkIHRvIGRlc3Ryb3kgYWxsIG9mIHRo
ZSBmcmFtZXMuCi0gICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2RlY29kZXIgPSBudWxscHRyOwotICAgIAotICAgIGlmIChkYXRhKQotICAgICAgICBz
ZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci19Ci0gICAgCi12b2lkIEltYWdlU291cmNl
OjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciopCi17Ci0gICAgaWYgKGluaXRp
YWxpemVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6
OmNyZWF0ZSgpOwotfQotCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi17Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChkYXRhKTsKLSAgICAKLSAg
ICBpZiAoIWluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgbV9kZWNvZGVyLT5zZXREYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7Ci19Ci0KLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5m
aWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7Ci19Ci0gICAgCi1TdWJzYW1wbGluZ0xldmVs
IEltYWdlU291cmNlOjpjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX2FsbG93U3Vic2FtcGxpbmcgfHwgIWFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleCgwKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBWYWx1ZXMgY2hvc2VuIHRv
IGJlIGFwcHJvcHJpYXRlIGZvciBpT1MuCi0gICAgY29uc3QgaW50IGNNYXhpbXVtSW1hZ2VBcmVh
QmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAgY29uc3QgU3Vic2FtcGxp
bmdMZXZlbCBtYXhTdWJzYW1wbGluZ0xldmVsID0gMzsKLQotICAgIFN1YnNhbXBsaW5nTGV2ZWwg
Y3VycmVudExldmVsID0gMDsKLSAgICBmb3IgKCA7IGN1cnJlbnRMZXZlbCA8PSBtYXhTdWJzYW1w
bGluZ0xldmVsOyArK2N1cnJlbnRMZXZlbCkgewotICAgICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9
IGZyYW1lU2l6ZUF0SW5kZXgoMCwgY3VycmVudExldmVsKTsKLSAgICAgICAgaWYgKGZyYW1lU2l6
ZS5hcmVhKCkgPCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIGN1cnJlbnRMZXZlbDsKLX0KLSAgICAKLVN1
YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6Om1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29u
c3QKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIGNhbGN1bGF0ZU1heGltdW1TdWJz
YW1wbGluZ0xldmVsKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gMDsKLX0KLQotU3Vic2FtcGxpbmdM
ZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0IHNjYWxlKSBj
b25zdAotewotICAgIHJldHVybiBJbWFnZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShzY2FsZSwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSk7Ci19Ci0KLWJvb2wgSW1hZ2VTb3Vy
Y2U6OmlzU2l6ZUF2YWlsYWJsZSgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9k
ZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dT
dWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKLXsKLSAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJ
bmRleChpbmRleCk7Ci19Ci0KLUludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QK
LXsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0gICAgCi0g
ICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsKTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNv
ZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwotICAgIAotICAgIHJldHVybiBzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6
ZTsKLX0KLQotSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVj
b2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KSA6IEltYWdlT3JpZW50YXRpb24oKTsKLX0K
LQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1l
U2l6ZUF0SW5kZXgoMCwgMCk7Ci19Ci0gICAgCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRl
eCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6
OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRp
YWxpemVkKCkgJiYgbV9kZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOwotfQotCi1zaXplX3QgSW1h
Z2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVz
KCk7Ci19Ci0gICAgCi1pbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCi17Ci0gICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0Fu
aW1hdGlvbkxvb3BPbmNlOwotfQotCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBj
b25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50
KCkgOiAwOwotfQotCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsKQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVG
cmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOwotfQot
Ci1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkK
LXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXgoaW5kZXgpOwotfQotCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNv
ZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkgOiAwOwotfQotCi1ib29sIEltYWdlU291
cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuICFp
bml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
fQotCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0Ci17Ci0gICAgSW50U2l6
ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsK
LSAgICByZXR1cm4gZnJhbWVTaXplLmFyZWEoKSAqIDQ7Ci19Ci0gICAgCi12b2lkIEltYWdlU291
cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIGlmIChtX2FsbG93U3Vic2Ft
cGxpbmcpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWxsb3ctc3Vic2FtcGxpbmciLCBtX2Fs
bG93U3Vic2FtcGxpbmcpOwotICAgIAotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24g
PSBvcmllbnRhdGlvbkF0SW5kZXgoMCk7Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IE9yaWdpblRv
cExlZnQpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgib3JpZW50YXRpb24iLCBvcmllbnRhdGlv
bik7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDZmZTI5
MGUyMjYxOGZiZDc2Yzc1Yzg0NDkyNDQ3MmUzMTk3ZmZmODcuLmQ5NzBmOGVhYmNmZThlM2Y5MGFk
Yzk0NDBkNDU2ODk0Nzg5ZWEyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApAQCAtMSw0ICsxLDUgQEAKIC8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgpAQCAtMjcwLDYgKzI3MSwxMiBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5
cGU+IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBp
bgogCiB9CiAKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVf
dCBpbmRleCkgY29uc3QKK3sKKyAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBmcmFtZUJ1ZmZlckF0
SW5kZXgoaW5kZXgpOworICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLT5zdGF0dXMoKSA9PSBJ
bWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworfQorCiBib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lQnVm
ZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQpAQCAtMjg3LDYgKzI5NCwzOCBAQCB1bnNpZ25lZCBJ
bWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICBy
ZXR1cm4gbV9zaXplLmFyZWEoKSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpOwogfQog
CitmbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkg
Y29uc3QKK3sKKyAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBmcmFtZUJ1ZmZlckF0SW5kZXgoaW5k
ZXgpOworICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgLy8gTWFueSBhbm5veWlu
ZyBhZHMgc3BlY2lmeSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlj
a2x5IGFzIHBvc3NpYmxlLgorICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94J3MgYmVoYXZpb3IgYW5k
IHVzZSBhIGR1cmF0aW9uIG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0aGF0IHNwZWNpZnkKKyAg
ICAvLyBhIGR1cmF0aW9uIG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzc2ODkzMDA+
IGFuZCA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNjA4Mj4KKyAgICAvLyBmb3IgbW9yZSBpbmZvcm1h
dGlvbi4KKyAgICBjb25zdCBmbG9hdCBkdXJhdGlvbiA9IGJ1ZmZlci0+ZHVyYXRpb24oKSAvIDEw
MDAuMGY7CisgICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQorICAgICAgICByZXR1cm4gMC4xMDBm
OworICAgIHJldHVybiBkdXJhdGlvbjsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVy
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwp
IGNvbnN0Cit7CisgICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBm
b3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBhbgorICAgIC8vIGVtcHR5IGltYWdlIGRpbWVuc2lv
biwganVzdCBiYWlsLgorICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IGZyYW1lQnVmZmVyQXRJbmRleChp
bmRleCk7CisgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1l
OjpGcmFtZUVtcHR5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFJldHVybiB0
aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiBGb3Igc29tZSBwb3J0cywgdGhl
IGRhdGEKKyAgICAvLyBpcyBhbHJlYWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMg
anVzdCBpbmNyZW1lbnRzIGl0cyByZWZjb3VudC4KKyAgICByZXR1cm4gYnVmZmVyLT5hc05ld05h
dGl2ZUltYWdlKCk7Cit9CisKIHZvaWQgSW1hZ2VEZWNvZGVyOjpwcmVwYXJlU2NhbGVEYXRhSWZO
ZWNlc3NhcnkoKQogewogICAgIG1fc2NhbGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDUzNDdh
NDdiNzIzY2Q1ZjAzYjYyZDNiMzUyY2Y5NDUxNDdkYTBlYWEuLjViYzZiMDI1NDJkYjRiMTUwNDg0
YmZhOGNkYzNhZmYxNTg5MTI0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtMjM1LDE1ICsyMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZURlY29kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICAgICAgICAgIDogbV9zY2FsZWQo
ZmFsc2UpCi0gICAgICAgICAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBJ
bWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVkKQorICAgICAgICAgICAgOiBtX3ByZW11bHRp
cGx5QWxwaGEoYWxwaGFPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkK
ICAgICAgICAgICAgICwgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVk
KQotICAgICAgICAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgICAgICAgICAsIG1f
bWF4TnVtUGl4ZWxzKC0xKQotICAgICAgICAgICAgLCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNl
KQotICAgICAgICAgICAgLCBtX2ZhaWxlZChmYWxzZSkgeyB9CisgICAgICAgIHsKKyAgICAgICAg
fQogCi0gICAgICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpIHsgfQorICAgICAgICB2aXJ0dWFs
IH5JbWFnZURlY29kZXIoKQorICAgICAgICB7CisgICAgICAgIH0KIAogICAgICAgICAvLyBSZXR1
cm5zIGEgY2FsbGVyLW93bmVkIGRlY29kZXIgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBSZXR1
cm5zIDAgaWYKICAgICAgICAgLy8gd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9t
IHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQpAQCAtMjU0LDExICsyNTQsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKKyAgICAgICAg
dmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fZmFpbGVkKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGE7CisgICAgICAgICAgICBtX2Rh
dGEgPSAmZGF0YTsKICAgICAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVj
ZWl2ZWQ7CiAgICAgICAgIH0KIApAQCAtMjgyLDcgKzI4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgLy8gc2l6ZXMuICBUaGlzIGRvZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBm
b3IgR0lGLCBzaW5jZSBkZWNvZGluZyBHSUZzCiAgICAgICAgIC8vIGNvbXBvc2l0ZXMgYW55IHNt
YWxsZXIgZnJhbWVzIGFnYWluc3QgcHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQogICAg
ICAgICAvLyBzaXplIGZyYW1lcy4KLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGZyYW1lU2l6ZUF0
SW5kZXgoc2l6ZV90KSBjb25zdAorICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBzaXplKCk7CiAgICAgICAgIH0KQEAgLTMxMCwxNiArMzEwLDI0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50ZXIuCiAg
ICAgICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgPSAw
OwogCisgICAgICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0Owor
CiAgICAgICAgIC8vIE1ha2UgdGhlIGJlc3QgZWZmb3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRoZSBy
ZXF1ZXN0ZWQgZnJhbWUgaGFzIGFscGhhIGNoYW5uZWwuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBm
cmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICBib29sIGZyYW1lSGFz
QWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKICAgICAgICAgLy8gTnVtYmVyIG9mIGJ5dGVz
IGluIHRoZSBkZWNvZGVkIGZyYW1lIHJlcXVlc3RlZC4gUmV0dXJuIDAgaWYgbm90IHlldCBkZWNv
ZGVkLgotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkg
Y29uc3Q7CisgICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7
CisgICAgICAgIAorICAgICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNv
bnN0OworICAgICAgICAKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsKIAogICAgICAgICB2b2lkIHNl
dElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgICAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9y
UHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0K
IAotICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9vcmllbnRhdGlvbjsgfQorICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICAgICAgCisg
ICAgICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICBlbnVtIHsgaWNjQ29sb3JQcm9maWxlSGVhZGVy
TGVuZ3RoID0gMTI4IH07CiAKQEAgLTMzMCw2ICszMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzE2XSwgIlJHQiAiLCA0
KTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRl
cm1pbmVQcm9wZXJ0aWVzKCkgeyByZXR1cm4gMDsgfQorICAgICAgICAKKyAgICAgICAgc3RhdGlj
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0LCBTdWJzYW1w
bGluZ0xldmVsKSB7IHJldHVybiAwOyB9CisKICAgICAgICAgc3RhdGljIGJvb2wgaW5wdXREZXZp
Y2VDb2xvclByb2ZpbGUoY29uc3QgY2hhciogcHJvZmlsZURhdGEsIHVuc2lnbmVkIHByb2ZpbGVM
ZW5ndGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvZmlsZUxlbmd0
aCwgcHJvZmlsZUxlbmd0aCA+PSBpY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpOwpAQCAtMzU0
LDEzICszNjYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGNvbXBvc2l0aW5n
KS4KICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsg
fQogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICAgICAgdm9p
ZCBzZXRNYXhOdW1QaXhlbHMoaW50IG0pIHsgbV9tYXhOdW1QaXhlbHMgPSBtOyB9Ci0jZW5kaWYK
LQogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9yZXMg
aXQgaW4gdGhlIGFyZ3VtZW50CiAgICAgICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lz
ZSByZXR1cm5zIGZhbHNlLgotICAgICAgICB2aXJ0dWFsIGJvb2wgaG90U3BvdChJbnRQb2ludCYp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBOdWxsb3B0OyB9CiAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHZvaWQgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0zNzQsNyAr
MzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWZWN0b3I8SW1hZ2VGcmFtZSwg
MT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwogICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2Nv
bG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBwb3J0PwogICAgICAgICBDb2xvclByb2ZpbGUg
bV9jb2xvclByb2ZpbGU7Ci0gICAgICAgIGJvb2wgbV9zY2FsZWQ7CisgICAgICAgIGJvb2wgbV9z
Y2FsZWQgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CiAg
ICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKICAgICAgICAgYm9vbCBtX3ByZW11bHRp
cGx5QWxwaGE7CkBAIC0zOTIsMTAgKzQwMCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIH0KIAogICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICAgICAgYm9vbCBtX3NpemVBdmFp
bGFibGU7Ci0gICAgICAgIGludCBtX21heE51bVBpeGVsczsKLSAgICAgICAgYm9vbCBtX2lzQWxs
RGF0YVJlY2VpdmVkOwotICAgICAgICBib29sIG1fZmFpbGVkOworICAgICAgICBib29sIG1fc2l6
ZUF2YWlsYWJsZSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IDEwMjQgKiAx
MDI0IH07CisjZWxzZQorICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4ZWxzIHsg
LTEgfTsKKyNlbmRpZgorICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9
OworICAgICAgICBib29sIG1fZmFpbGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDNkNzZiYzJhOTc0
ZGVhZjczMThkNTcwYjFlZWMzMTYyNjA5OTgwNjUuLmNhZjM1Yzk3ZjE3ZWRkMzRiYzlkZjg5YWIw
OWU4NzAwYWVlNmM3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC00NywxNCAr
NDcsMTQgQEAgQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoSW1hZ2VTb3VyY2U6OkFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJ
bWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEltYWdl
RGVjb2Rlcjo6c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGlmIChtX3JlYWRl
cikKLSAgICAgICAgbV9yZWFkZXItPnNldERhdGEoZGF0YSk7CisgICAgICAgIG1fcmVhZGVyLT5z
ZXREYXRhKCZkYXRhKTsKIH0KIAogYm9vbCBCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJs
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggMWM4ODJlMTM5OTUyZTQ3NDgzMmJjYmMy
MjA1MGE2MGZiNGZmYmI5Ny4uYjJjNDc4OTU2MTliZWNhZjI1ZDEwYTMwYzJlODNhZTM1NTg4NzZj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIHZpcnR1YWwgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gImJtcCI7IH0KLSAgICAgICAg
dmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERh
dGFSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKICAg
ICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4
KTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFkZXJ8LiAg
QmUgY2FyZWZ1bCB0byBhdm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjZDU2
ZTY3ZWI5MThiMTY5M2M0ZWNjZjc0MGFmODBjODU5MzZhNzk4Li43OTE1MTU2MDcyZDcxNzA0NDM3
MjU3MzA2YjA5NTkwOGYzNDk4OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NDIsMTQgKzQyLDE0IEBAIEdJRkltYWdlRGVjb2Rlcjo6fkdJRkltYWdlRGVjb2RlcigpCiB7CiB9
CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGRhdGEsIGFsbERh
dGFSZWNlaXZlZCk7CiAgICAgaWYgKG1fcmVhZGVyKQotICAgICAgICBtX3JlYWRlci0+c2V0RGF0
YShkYXRhKTsKKyAgICAgICAgbV9yZWFkZXItPnNldERhdGEoJmRhdGEpOwogfQogCiBib29sIEdJ
RkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lk
IEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZRdWVyeSBx
dWVyeSkKIAogICAgIGlmICghbV9yZWFkZXIpIHsKICAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsKLSAgICAgICAgbV9yZWFkZXItPnNldERh
dGEobV9kYXRhKTsKKyAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAg
ICB9CiAKICAgICBpZiAocXVlcnkgPT0gR0lGU2l6ZVF1ZXJ5KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggNDA2MTA4OTUzOTVkOWIxMmNjNjlkMTkxY2MzMDUyMjA5Y2MwNjg3Mi4uYzRj
NDlhYzM0ZThjODJjYTI5MDM4YWNlZGMwMzlmNTkwZjM4MWJkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
Ly8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgeyByZXR1cm4gImdpZiI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwogICAgICAg
ICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4
IGZiODc4ZWQwOGUyOGQ0MDJlZWYzNzBkY2EzOTJjZjlmMjZlZDA0NjkuLmVhNDJiMTFhNzhjMzhl
YmU2NWMyYzI4YjkxYzhhZmI2MjYzNWE5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0y
NDYsNyArMjQ2LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEo
UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEpIHsgbV9kYXRhID0gZGF0YTsg
fQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGRhdGEpIHsgbV9kYXRh
ID0gZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90Lgog
ICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2ln
bmVkIGhhbHRBdEZyYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA1NmFj
OTIxY2QwODQ2ODIzYjgxMTE4ZWE2ZjNhZGYyMTFkYTdhMDg1Li5hNjAzYTEwNzZmOWRmY2QxOTRl
NmJkOWNmMmI4MWQ0YjNiOWRiNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NTUsNyArNTUsNyBAQCBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFnZURlY29kZXIoKQogewogfQog
Ci12b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBJQ09JbWFnZURlY29kZXI6OnNl
dERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgIGZv
ciAoQk1QUmVhZGVyczo6aXRlcmF0b3IgaShtX2JtcFJlYWRlcnMuYmVnaW4oKSk7IGkgIT0gbV9i
bXBSZWFkZXJzLmVuZCgpOyArK2kpIHsKICAgICAgICAgaWYgKCppKQotICAgICAgICAgICAgKCpp
KS0+c2V0RGF0YShkYXRhKTsKKyAgICAgICAgICAgICgqaSktPnNldERhdGEoJmRhdGEpOwogICAg
IH0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG5nRGVjb2RlcnMuc2l6ZSgpOyArK2kp
CiAgICAgICAgIHNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChpKTsKQEAgLTEyOCwyMSArMTI4
LDIwIEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogICAgIHJldHVybiBJbWFn
ZURlY29kZXI6OnNldEZhaWxlZCgpOwogfQogCi1ib29sIElDT0ltYWdlRGVjb2Rlcjo6aG90U3Bv
dChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK09wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURl
Y29kZXI6OmhvdFNwb3QoKSBjb25zdAogewogICAgIC8vIFdoZW4gdW5zcGVjaWZpZWQsIHRoZSBk
ZWZhdWx0IGZyYW1lIGlzIGFsd2F5cyBmcmFtZSAwLiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aAog
ICAgIC8vIEJpdG1hcEltYWdlIHdoZXJlIGN1cnJlbnRGcmFtZSgpIHN0YXJ0cyBhdCAwIGFuZCBv
bmx5IGluY3JlYXNlcyB3aGVuIGFuaW1hdGlvbiBpcwogICAgIC8vIHJlcXVlc3RlZC4KLSAgICBy
ZXR1cm4gaG90U3BvdEF0SW5kZXgoMCwgaG90U3BvdCk7CisgICAgcmV0dXJuIGhvdFNwb3RBdElu
ZGV4KDApOwogfQogCi1ib29sIElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdEF0SW5kZXgoc2l6ZV90
IGluZGV4LCBJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK09wdGlvbmFsPEludFBvaW50PiBJQ09J
bWFnZURlY29kZXI6OmhvdFNwb3RBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBp
ZiAoaW5kZXggPj0gbV9kaXJFbnRyaWVzLnNpemUoKSB8fCBtX2ZpbGVUeXBlICE9IENVUlNPUikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKIAotICAgIGhv
dFNwb3QgPSBtX2RpckVudHJpZXNbaW5kZXhdLm1faG90U3BvdDsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gbV9kaXJFbnRyaWVzW2luZGV4XS5tX2hvdFNwb3Q7CiB9CiAKIApAQCAtMTY1
LDcgKzE2NCw3IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0
SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgY29weSBieSBtYWtp
bmcgdGhlIFBORyBkZWNvZGVyIGFibGUgdG8gdGFrZSBhbgogICAgIC8vIG9wdGlvbmFsIG9mZnNl
dC4KICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbmdEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCZtX2RhdGEtPmRhdGEoKVtkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0XSwgbV9kYXRhLT5zaXplKCkg
LSBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0KSk7Ci0gICAgbV9wbmdEZWNvZGVyc1tpbmRleF0tPnNl
dERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CisgICAgbV9wbmdEZWNv
ZGVyc1tpbmRleF0tPnNldERhdGEoKnBuZ0RhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQog
CiB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBpbmRleCwgYm9vbCBvbmx5U2l6
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAxNDk0Nzk3YTliZjMxYzNlNjRiODFkYjZj
ZTMzM2Q5MTI3ZmI4OWQ4Li45ZjQ3YTA4ZDM5NDY2NWQwY2RiN2IzMTg1MzUxNjAwYzdkN2M2M2Jh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICAvLyBJbWFnZURlY29kZXIKICAgICAgICAgdmlydHVhbCBTdHJp
bmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiAiaWNvIjsgfQotICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKICAgICAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAg
ICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QpIGNvbnN0OwpAQCAtNTYsNyArNTYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGF2b2lkIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9y
eSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tCiAgICAgICAgIC8vIGluc2lkZSBC
TVBJbWFnZVJlYWRlciEKICAgICAgICAgdmlydHVhbCBib29sIHNldEZhaWxlZCgpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaG90U3BvdChJbnRQb2ludCYpIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBlbnVtIEltYWdlVHlwZSB7CkBAIC0xMTYsOSArMTE2LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyBjb3VsZCBiZSBkZWNvZGVkLgogICAgICAgICBib29sIHByb2Nlc3NE
aXJlY3RvcnlFbnRyaWVzKCk7CiAKLSAgICAgICAgLy8gU3RvcmVzIHRoZSBob3Qtc3BvdCBmb3Ig
fGluZGV4fCBpbiB8aG90U3BvdHwgYW5kIHJldHVybnMgdHJ1ZSwKLSAgICAgICAgLy8gb3IgcmV0
dXJucyBmYWxzZSBpZiB0aGVyZSBpcyBub25lLgotICAgICAgICBib29sIGhvdFNwb3RBdEluZGV4
KHNpemVfdCBpbmRleCwgSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0OworICAgICAgICAvLyBSZXR1
cm5zIHRoZSBob3Qtc3BvdCBmb3IgfGluZGV4fCwgcmV0dXJucyBOdWxsb3B0IGlmIHRoZXJlIGlz
IG5vbmUuCisgICAgICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90QXRJbmRleChzaXplX3Qp
IGNvbnN0OwogCiAgICAgICAgIC8vIFJlYWRzIGFuZCByZXR1cm5zIGEgZGlyZWN0b3J5IGVudHJ5
IGZyb20gdGhlIGN1cnJlbnQgb2Zmc2V0IGludG8KICAgICAgICAgLy8gfGRhdGF8LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCBjYWZkZDk4MGFi
ODE4ZjlhZjVhOTYyZTBmMTU1ZDlmNDdjMGNmMjQ1Li5jYWYwZDcyM2YwNjU5NjllMGMwOGM0NmUw
MmMyNGE2ZTQ3YzExOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcApAQCAtNDUwLDEwICs0NTAsOSBAQCB2b2lkIEV3a1ZpZXc6OnNldEN1cnNvcihj
b25zdCBDdXJzb3ImIGN1cnNvcikKICAgICAgICAgaWYgKGN1cnNvckltYWdlID09IG1fY3Vyc29y
SWRlbnRpZmllci5pbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBJbnRQb2lu
dCBob3RTcG90OwotICAgICAgICBjdXJzb3JJbWFnZS0+Z2V0SG90U3BvdChob3RTcG90KTsKLQot
ICAgICAgICBFY29yZV9YX0N1cnNvciBjdXN0b21DdXJzb3IgPSBjcmVhdGVDdXN0b21DdXJzb3Io
d2luZG93LCBjdXJzb3JJbWFnZSwgSW50U2l6ZShjdXJzb3JJbWFnZS0+c2l6ZSgpKSwgaG90U3Bv
dCk7CisgICAgICAgIAorICAgICAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCA9IGN1cnNv
ckltYWdlLT5ob3RTcG90KCk7CisgICAgICAgIEVjb3JlX1hfQ3Vyc29yIGN1c3RvbUN1cnNvciA9
IGNyZWF0ZUN1c3RvbUN1cnNvcih3aW5kb3csIGN1cnNvckltYWdlLCBJbnRTaXplKGN1cnNvcklt
YWdlLT5zaXplKCkpLCBob3RTcG90ID8gaG90U3BvdC52YWx1ZSgpIDogSW50UG9pbnQoKSk7CiAg
ICAgICAgIGlmICghY3VzdG9tQ3Vyc29yKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZWJkYzI5YzBmNDkxZjYxNjFhNjRiNjQ5Mjc4NjMxOWEwODVlN2FjZi4uNzEyNDRjNTgzYjhmOTFk
OTljOTAyYzkwNDViMmM1M2M1M2I1ZGM4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA0
LTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAg
ICAgTWVyZ2UgQ0cgSW1hZ2VTb3VyY2UgYW5kIG5vbiBDRyBJbWFnZVNvdXJjZSBpbXBsZW1lbnRh
dGlvbiBpbiBvbmUgZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1NDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisgICAg
ICAgIAorICAgICAgICBBZGQgYSB0ZXN0IGZvciBpbWFnZSBzdWItc2FtcGxpbmcuIFRoZSBpbWFn
ZSBzdWJzYW1wbGluZyBpcyBlbmFibGVkIGJ5CisgICAgICAgIGRlZmF1bHQgZm9yIGlPUyBwbGF0
Zm9ybSBvbmx5LiBCdXQgaXQgY2FuIGJlIGV4cGxpY2l0bHkgZW5hYmxlZCB0aHJvdWdoCisgICAg
ICAgIHRoZSBzZXR0aW5nIEltYWdlU3Vic2FtcGxpbmdFbmFibGVkLgorCisgICAgICAgICogZmFz
dC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbDogQWRkZWQuCisKIDIwMTYtMDQt
MTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBET01Ub2tlbkxp
c3QuY29udGFpbnMoKSBzaG91bGQgbm90IHRocm93CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
MDMxM2JlYjhkYjc5NDE5NWE2YmVjMjJkZjBiODExYzdiMjMwOTJiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHN0eWxlPgorICAgICAgICBkaXYgeworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAg
ICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8aGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBjcmVhdGVEaXYoY29sb3IpIHsKKyAg
ICAgICAgdmFyIGRpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICAgICAgZGl2RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKKyAgICAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXZFbGVtZW50KTsKKyAgICB9CisKKyAgICBjcmVh
dGVEaXYoInJlZCIpOworICAgIGNyZWF0ZURpdigiZ3JlZW4iKTsKKyAgICBjcmVhdGVEaXYoImJs
dWUiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI4YWUzYmU5ZGY1MzAx
ZGIyYTE4ZDgyOTM0ZTczYmE1ZDk4OTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgZGl2IHsK
KyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgIH0KKyAgICAgICAgaW1nIHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPGhl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQodHJ1
ZSk7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJbWFnZShjb2xvcikgeworICAgICAgICB2YXIgY2Fu
dmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgIGNhbnZhcy53
aWR0aCA9IDEwMjQgKiAzOworICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMTAyNCAqIDM7CisgICAg
ICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgY3R4LmZpbGxT
dHlsZSA9IGNvbG9yOworICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBj
YW52YXMuaGVpZ2h0KTsKKworICAgICAgICB2YXIgaW1nRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImltZyIpOworICAgICAgICBpbWdFbGVtZW50LnNyYyA9IGNhbnZhcy50b0RhdGFV
UkwoImltYWdlL3BuZyIpOworCisgICAgICAgIHZhciBkaXZFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdkVsZW1lbnQuYXBwZW5kQ2hpbGQoaW1nRWxl
bWVudCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2RWxlbWVudCk7Cisg
ICAgfQorICAgIAorICAgIGNyZWF0ZUltYWdlKCJyZWQiKTsKKyAgICBjcmVhdGVJbWFnZSgiZ3Jl
ZW4iKTsKKyAgICBjcmVhdGVJbWFnZSgiYmx1ZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276166</attachid>
            <date>2016-04-11 12:48:06 -0700</date>
            <delta_ts>2016-04-11 14:33:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155456-20160411124822.patch</filename>
            <type>text/plain</type>
            <size>66715</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmZjVmNDQ4NDE3YTc1
ZjRkNTQ4ZjE4MjFhYTE2ZGFlODU1NGM3NC4uMzAzMGU4NWQ1ZDYwMWJlMDk3ODdkNTU5MDU2ODli
YzlhNmJiMDAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NiBAQAorMjAxNi0wNC0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdl
IENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4g
b25lIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIElt
YWdlU291cmNlIGZvciBDRyBhbmQgQ0cgY29kZSBwYXRocyBsb29rIHZlcnkgc2ltaWxhci4gQWxs
IHRoZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBJbWFn
ZURlY29kZXIgY2xhc3NlcyBmb3IgQ0cgYW5kIG5vbiBDRy4gQW5kCisgICAgICAgIHdlIGNhbiBo
YXZlIHRoZSBJbWFnZVNvdXJjZSBiZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgd2UgZ2V0IHJp
ZCBvZgorICAgICAgICBJbWFnZVNvdXJjZUNHLmNwcC4KKworICAgICAgICBUZXN0OiBmYXN0L2lt
YWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgRGVsZXRlIEltYWdlU291cmNlQ0cuY3BwIGZvcm0gYWxsIG1ha2UgZmlsZXMgYW5kIGFk
ZCBJbWFnZVNvdXJjZS5jcHAgdG8KKyAgICAgICAgQ01ha2VMaXN0cy50eHQuCisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL0N1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1p
bmVIb3RTcG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aG90U3BvdCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmhvdFNwb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldEhvdFNwb3QpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgZ2V0SG90
U3BvdCgpIHRvIGhvdFNwb3QoKSBhbmQgY2hhbmdlIGl0IHRvIHJldHVybiBPcHRpb25hbDxJbnRQ
b2ludD4uCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UpOiBSZW1v
dmUgY2xlYXIodHJ1ZSkgY2FsbC4gSXQgZG9lcyBub3RoaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEEgd3JhcHBlciB3aGljaCBjYWxs
cyBJbWFnZURlY29kZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKTogQ2FsbHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgd2hp
Y2ggd2lsbCBkbyBub3RoaW5nIGZvciBDRy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZCk6IENoYW5nZSBTaGFyZWRCdWZmZXIq
IHRvCisgICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYW5kIHJlbW92ZSB0aGUgY2FsbCB0byBJ
bWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscygpLgorICAgICAgICBUaGUgdmFsdWUgb2YgY29u
c3Qgc3RhdGljIGludCBDRyBJbWFnZURlY29kZXI6Om1fbWF4TnVtUGl4ZWxzIHdpbGwgYmUgc2V0
CisgICAgICAgIGJhc2VkIG9uIElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORy4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IFBhc3MgU2hhcmVkQnVm
ZmVyJiB0byB0aGUgdW5kZXJseWluZyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKTogUmV0
dXJucyB0aGUgbWF4aW11bQorICAgICAgICBzdWJzYW1wbGluZyBsZXZlbCBhbGxvd2VkIGZvciBh
biBpbWFnZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2Ft
cGxpbmdMZXZlbEZvclNjYWxlKTogQ29udmVydHMgZnJvbSBhIHNjYWxlIHRvCisgICAgICAgIFN1
YnNhbXBsaW5nTGV2ZWwgdGFraW5nIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwgZm9yCisgICAgICAgIGEgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKTogUmV0dXJucyB0aGUgbnVtYmVyCisgICAgICAgIG9mIGVuY29kZWQgYnl0ZXMgd2hp
Y2ggY2FuIGRldGVybWluZSB0aGUgaW1hZ2UgcHJvcGVydGllcy4gRm9yIG5vbiBDRyBpdCdzCisg
ICAgICAgIHplcm8uIEZvciBDRyBpdCBpcyBhIG1heGltdW0gdmFsdWUgd2hpY2ggY2FuIGJlIGNv
cnJlY3RlZCBsYXRlci4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
aXNTaXplQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICBUaGVzZSBhcmUgd3JhcHBl
cnMgZm9yIHRoZSBJbWFnZURlY29kZXIgQVBJcy4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgZnVuY3Rp
b25zCisgICAgICAgIGlzIHRvIGVuc3VyZSB0aGUgSW1hZ2VEZWNvZGVyIGlzIGNyZWF0ZWQuCisg
ICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmR1bXApOiBDYWxsZWQgZnJv
bSBCaXRtYXBJbWFnZTo6ZHVtcCgpLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpnZXRIb3RTcG90KTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpzZXRBbGxvd1N1YnNhbXBsaW5nKTogQ2FsbGVkIGZyb20gQml0bWFwSW1hZ2U6OnNldEFsbG93
U3Vic2FtcGxpbmcoKS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICBTZXR0aW5nIG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSB3YXMgbW92ZWQgdG8gdGhlIG5vbiBD
RyBJbWFnZURlY29kZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0
RGF0YSk6IENoYW5nZSBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKTogRGVsZXRl
ZC4KKyAgICAgICAgVGhlIGNvZGUgd2FzIG1vdmVkIHRvIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoKS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKTogTWFrZSB0aGUgcHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgc3VpdGFi
bGUgZm9yIENHIGFuZCBub24gQ0cgY2FzZXMuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZSk6IEVtcHR5IGZ1bmN0aW9ucyBmb3IgQ0cuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KTogQSBtZXcgZnVuY3Rpb24gdG8gcmV0dXJuCisgICAgICAgIHdoZXRoZXIg
dGhlIGZyYW1lIGRlY29kaW5nIGlzIGNvbXBsZXRlIG9yIG5vdC4KKyAgICAgICAgCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KTogU2ltcGxpZnkg
dGhlIGxvZ2ljLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgpOiBUaGUgY29kZSB3YXMgbW92ZWQgZnJvbQorICAgICAgICBJbWFn
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoKSBpbiBJbWFnZVNvdXJjZS5jcHAuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCk6IFRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tCisgICAgICAgIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgpIGluIEltYWdlU291cmNlLmNwcC4KKyAgICAgICAgCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6IEluaXRpYWxpemUgdGhlIG1lbWJl
cnMgaW4gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6On5JbWFnZURlY29k
ZXIpOiBGaXggdGhlIGJyYWNlcyBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6c2V0RGF0YSk6IENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgYXJndW1lbnQgZnJvbQorICAgICAg
ICBTaGFyZWRCdWZmZXIqIHRvIFNoYXJlZEJ1ZmZlciYuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOiBBZGQgdGhlIGFyZ3VtZW50IFN1YnNhbXBsaW5n
TGV2ZWwKKyAgICAgICAgc28gaXQgY2FuIGhhdmUgdGhlIHNhbWUgcHJvdG90eXBlIGFzIENHLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbkF0SW5kZXgpOiBSZW5h
bWUgaXQgdG8gdGhlIHNhbWUgb2YgQ0cuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUp
OiBBZGQgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgIGFuZCByZXR1cm4gdGhlIGRlZmF1bHQgdmFs
dWVzIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGFkZCBkaXJlY3RpdmUgY29tcGlsZWQKKyAgICAgICAg
bm9uIENHIGJsb2NrcyBpbiBJbWFnZVNvdXJjZS5jcHAuCisKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6aG90U3BvdCk6IFJldHVybiBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAg
IAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldE1heE51bVBpeGVscyk6IERlbGV0
ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKEdJ
RkltYWdlUmVhZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgIFVzZSByZWZlcmVuY2UgU2hhcmVkQnVmZmVyIGluc3Rl
YWQgb2YgcG9pbnRlciBTaGFyZWRCdWZmZXIuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
SUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVj
b2Rlcjo6aG90U3BvdEF0SW5kZXgpOgorICAgICAgICBDaGFuZ2UgaG90U3BvdCgpIHRvIHJldHVy
biBPcHRpb25hbDxJbnRQb2ludD4uCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgpOgorICAgICAg
ICBQYXNzIHJlZmVyZW5jZSBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBwb2ludGVyIFNoYXJlZEJ1
ZmZlci4KKworMjAxNi0wNC0wOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUsY29tPgorCisgICAgICAgIFRpbWluZyBhdHRhY2sgb24gU1ZHIGZlQ29tcG9zaXRlIGZpbHRl
ciBjaXJjdW12ZW50cyBzYW1lLW9yaWdpbiBwb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDMzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE9s
aXZlciBIdW50LgorCisgICAgICAgIEVuc3VyZSB0aGUgRkVDb21wb3NpdGUgYXJpdGhtZXRpYyBm
aWx0ZXIgaXMgY2xhbXBpbmcgdGhlIHJlc3VsdGVkIGNvbG9yCisgICAgICAgIGNvbXBvbmVudHMg
aW4gYSBjb25zdGFudCB0aW1lLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcEJ5dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcHV0ZUFyaXRobWV0aWNQaXhlbHMpOgorCiAyMDE2LTA0LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NVG9rZW5MaXN0LmNvbnRh
aW5zKCkgc2hvdWxkIG5vdCB0aHJvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM3Nzk3ZDUxZTMzNTFlMDc4YWQz
YzM0NmY1YTFkNjJmYTU4ZTdjZTEuLmFiZjdjM2E5MTA0Y2E1NjBiNTRjM2M4YzAwOTA3ODcxOTBj
NTNkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wNC0xMSAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIE1lcmdlIENHIElt
YWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVtZW50YXRpb24gaW4gb25lIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ1
NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpzZXRDdXJzb3IpOgor
ICAgICAgICBSZXBsYWNlIHRoZSBjYWxsIHRvIEltYWdlOjpnZXRIb3RTcG90KCkgYnkgSW1hZ2U6
OmhvdFNwb3QoKS4KKwogMjAxNi0wNC0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5OTI5MC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggZjhkYTRmMzAyYjYwNDcxYTE2YTcwZjY1NTUyOWUzMTc0N2Jj
YWY2ZS4uY2MyMzE1ZTI1ZTAzZDA0ZDI4Yjk3NWZiODRkM2ZlOGU4YWE4NzNmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTIyMTQsNiArMjIxNCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2lu
LmNtYWtlCmluZGV4IGM2NzJjYzcwN2ZhODc4NWJhNTI3NDQyZTkwNGIxY2ZhZGIyNTE1YWMuLjA5
YzgwOTRlNzdjNGJmMzJhY2Y0N2FhOTNlOWRiYWU5OTYyOTdlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtNzIsNyArNzIsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
YjcyZjJlMTVjOGI1MmVhZTFhM2U2ZDZhNGVhNmFkMTJiMTJhMjhlOC4uYWVhMzU3MTA1OTA5Yjdj
N2VlMjA1NTI3NTllYWM5OWY0NTZkNWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAg
LTQwNiw3ICs0MDYsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ludFBvaW50Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENH
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDY1ZjYyODZiNjM0OWQyZjk0NzU5ZTJhM2I0ZTAzNzAyZTI5N2IwMGMuLjI1ODlj
MzUxZWE1OTc1OTllZThhMDcwMTFlNjBmYjNhNzVhMjIzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5ODYsNyArNDk4Niw2
IEBACiAJCUIyNzUzNTVBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyQzBCMDUzODE0
MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovOyB9OwogCQlCMjc1MzU1QjBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNw
cCAqLzsgfTsKIAkJQjI3NTM1NUUwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzAwQjA1Mzgx
NDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovOyB9OwotCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2
NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5j
cHAgKi87IH07CiAJCUIyNzUzNTYwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMyMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjEwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMzBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENHLmNw
cCAqLzsgfTsKIAkJQjI3NTM1NjIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzNDBCMDUz
ODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCAqLzsgfTsKQEAgLTEyODc3LDcgKzEyODc2LDYg
QEAKIAkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJlY3RDRy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNp
emVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRTaXpl
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMDBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNzUzNTMxMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbWFnZVNvdXJjZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFBvaW50Q0cuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMzBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVj
dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRSZWN0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzNDBCMDUzODE0MDAyQ0U2
NEYgLyogSW50U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRTaXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE3ODUsNyAr
MjE3ODMsNiBAQAogCQkJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAq
LywKIAkJCQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwICov
LAogCQkJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovLAot
CQkJCUIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLywKIAkJ
CQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovLAogCQkJCTRC
MzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovLAogCQkJCUIy
NzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLywKQEAgLTMwMDA0LDcg
KzMwMDAxLDYgQEAKIAkJCQkyRDVBNTkyRjE1MjUyNTIzMDAzNkVFNTEgLyogSW1hZ2VPcmllbnRh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTFBMkY0MTE3RDdENURFMDA3MjUxN0EgLyog
SW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNDNzI1RTE5
NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI3
NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0dNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkzMTZGRTExNzBFNkUxREE3MDBCRjYwODggLyogSW1wbGljaXRBbmlt
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU5NjFDNTQxOEFEMzM4NTAwRDA3REM1IC8q
IEluYmFuZERhdGFUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Vyc29yLmNwcAppbmRleCA2MGE2MTlhY2RhMTNhYTQ3YmExMmViMDNiNGUyMjVmMjQxZmMzYjJi
Li45YzU5MmYzNzRiMzRlN2Y5Njc5ZTlkZmY0OGZhMTBhZTY4MDBlMzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cnNvci5jcHAKQEAgLTQ0LDEwICs0NCwxMCBAQCBJbnRQb2ludCBkZXRlcm1pbmVI
b3RTcG90KEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHNwZWNpZmllZEhvdFNwb3QpCiAg
ICAgICAgIHJldHVybiBzcGVjaWZpZWRIb3RTcG90OwogCiAgICAgLy8gSWYgaG90IHNwb3QgaXMg
bm90IHNwZWNpZmllZCBleHRlcm5hbGx5LCBpdCBjYW4gYmUgZXh0cmFjdGVkIGZyb20gc29tZSBp
bWFnZSBmb3JtYXRzIChlLmcuIC5jdXIpLgotICAgIEludFBvaW50IGludHJpbnNpY0hvdFNwb3Q7
Ci0gICAgYm9vbCBpbWFnZUhhc0ludHJpbnNpY0hvdFNwb3QgPSBpbWFnZS0+Z2V0SG90U3BvdChp
bnRyaW5zaWNIb3RTcG90KTsKLSAgICBpZiAoaW1hZ2VIYXNJbnRyaW5zaWNIb3RTcG90ICYmIGlt
YWdlUmVjdC5jb250YWlucyhpbnRyaW5zaWNIb3RTcG90KSkKLSAgICAgICAgcmV0dXJuIGludHJp
bnNpY0hvdFNwb3Q7CisgICAgaWYgKGF1dG8gaW50cmluc2ljSG90U3BvdCA9IGltYWdlLT5ob3RT
cG90KCkpIHsKKyAgICAgICAgaWYgKGltYWdlUmVjdC5jb250YWlucyhpbnRyaW5zaWNIb3RTcG90
LnZhbHVlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGludHJpbnNpY0hvdFNwb3QudmFsdWUoKTsK
KyAgICB9CiAKICAgICByZXR1cm4gSW50UG9pbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBhNDdhOTcyOTUyODUxYWE1
NGQzNjE5ZTY4YTZlMDk2MDMwMzY1M2VlLi43Yzc4ZDM2NWMxYTQwMmU2ZWMxOTRiNzcyZjU1YTll
ZGJkNmNkZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC0yNTQsOSArMjU0LDkgQEAgSW50U2l6ZSBCaXRtYXBJbWFnZTo6c2l6
ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZVJlc3BlY3Rp
bmdPcmllbnRhdGlvbjsKIH0KIAotYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdChJbnRQb2lu
dCYgaG90U3BvdCkgY29uc3QKK09wdGlvbmFsPEludFBvaW50PiBCaXRtYXBJbWFnZTo6aG90U3Bv
dCgpIGNvbnN0CiB7Ci0gICAgYm9vbCByZXN1bHQgPSBtX3NvdXJjZS5nZXRIb3RTcG90KGhvdFNw
b3QpOworICAgIGF1dG8gcmVzdWx0ID0gbV9zb3VyY2UuaG90U3BvdCgpOwogICAgIGRpZERlY29k
ZVByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNTExM2Q1ZDUyNzc4MTU0ZWFm
Y2Y5YTM0MjdiNTJlYjE1Y2ZlOTY5Yy4uN2M4ZWNhY2ZjNmM2MWM5NDQ0ZDYxYWRkNGUyNzk3NmNi
MjAyMWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkg
Y29uc3Q7CiAKLSAgICBib29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
dW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IGMzMTQyYWRlYzdh
MjVjODQ2MGUyOWFmMzUwMmI5NDE0N2I3MDZjN2MuLjUwZjc3ZTMxNjIxMDczNDZhMDc1MDYyMWNk
MzdlMmVmNDc5ZDY0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTA3LDcg
KzEwOCw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSk7IH0KICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpOyB9CiAgICAgZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLmhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBib29sIGdldEhvdFNwb3QoSW50
UG9pbnQmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50
UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBOdWxsb3B0OyB9CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKaW5kZXggMGQxMDA5NjFmZjI3NjE1MzY5OTUwZmNiYmZlMWVjNWVjODMxODRm
Zi4uN2VkOWZkMWQwNzY3OTNkZmY0ZGY3Y2QyM2Q3N2Y1ODFiOGRhYTI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA3IEFscCBUb2tlciA8YWxwLnRva2VyQGNvbGxhYm9yYS5jby51az4KICAqIENvcHlyaWdodCAo
QykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jCkBAIC0yOSwxOSArMjksMTYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCi0jaWYgIVVTRShDRykK
LQorI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2Vsc2UKICNpbmNs
dWRlICJJbWFnZURlY29kZXIuaCIKKyNlbmRpZgogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi11bnNpZ25lZCBJbWFn
ZVNvdXJjZTo6c19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSAxMDI0ICogMTAyNDsKLSNlbmRp
ZgotCiBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX2FscGhhT3B0aW9uKGFscGhhT3B0aW9uKQog
ICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKQEAgLTUwLDE0ICs0NywyMSBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VT
b3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbQogCiBJbWFn
ZVNvdXJjZTo6fkltYWdlU291cmNlKCkKIHsKLSAgICBjbGVhcih0cnVlKTsKIH0KIAotdm9pZCBJ
bWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFt
ZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VT
b3VyY2U6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSkKK3sK
KyAgICBpZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2RlY29kZXIt
PmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKK30KKwordm9pZCBJbWFn
ZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3QgY2xlYXJCZWZvcmVG
cmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBp
ZiAoIWRlc3Ryb3lBbGwpIHsKLSAgICAgICAgaWYgKG1fZGVjb2RlcikKLSAgICAgICAgICAgIG1f
ZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJhbWUpOworICAgIC8v
IFRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5IHRoZSBkZWNvZGVyIHVubGVzcyB3ZSdyZSBl
eHBsaWNpdGx5IGFza2VkCisgICAgLy8gdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KKyAg
ICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpIHsKKyAgICAgICAgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KGNsZWFyQmVmb3JlRnJhbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NywyMCAr
NzEsMTIgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsLCBzaXplX3Qg
Y2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnVmZmVyKgogICAgICAgICBzZXREYXRhKGRhdGEsIGFs
bERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0Ny
ZWF0ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2Rl
cklzQ3JlYXRlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKGluaXRpYWxp
emVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICAvLyBNYWtlIHRoZSBkZWNvZGVyIGJ5
IHNuaWZmaW5nIHRoZSBieXRlcy4KLSAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIGV4YW1pbmUgdGhl
IGRhdGEgYW5kIGluc3RhbnRpYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBkZWNv
ZGVyIHBsdWdpbi4KLSAgICAvLyBJZiBpbnN1ZmZpY2llbnQgYnl0ZXMgYXJlIGF2YWlsYWJsZSB0
byBkZXRlcm1pbmUgdGhlIGltYWdlIHR5cGUsIG5vIGRlY29kZXIgcGx1Z2luIHdpbGwgYmUKLSAg
ICAvLyBtYWRlLgotICAgIG1fZGVjb2RlciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBt
X2FscGhhT3B0aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSNpZiBFTkFCTEUo
SU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQotICAgIGlmIChtX2RlY29kZXIgJiYgc19tYXhQ
aXhlbHNQZXJEZWNvZGVkSW1hZ2UpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0TWF4TnVtUGl4ZWxz
KHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTsKLSNlbmRpZgorICAgIG1fZGVjb2RlciA9IElt
YWdlRGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCkBAIC04OCw3ICs4NCw3IEBAIHZvaWQgSW1h
Z2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBlbnN1cmVEZWNv
ZGVySXNDcmVhdGVkKGRhdGEpOworICAgIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoKmRhdGEpOwog
ICAgIAogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTk2LDI1ICs5Miw0OCBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgaWYgKG1f
ZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVyLT5zZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsK
IH0KIAotU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CitTdWJz
YW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVF
eHRlbnNpb24oKSA6IFN0cmluZygpOworICAgIGlmICghbV9hbGxvd1N1YnNhbXBsaW5nIHx8ICFh
bGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoMCkpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIC8vIEZJWE1FOiB0aGlzIHZhbHVlIHdhcyBjaG9zZW4gdG8gYmUgYXBwcm9wcmlhdGUg
Zm9yIGlPUyBzaW5jZSB0aGUgaW1hZ2UKKyAgICAvLyBzdWJzYW1wbGluZyBpcyBvbmx5IGVuYWJs
ZWQgYnkgZGVmYXVsdCBvbiBpT1MuIENob29zZSBhIGRpZmZlcmVudCB2YWx1ZQorICAgIC8vIGlm
IGltYWdlIHN1YnNhbXBsaW5nIGlzIGVuYWJsZWQgb24gb3RoZXIgcGxhdGZvcm0uCisgICAgY29u
c3QgaW50IG1heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAy
NDsKKyAgICBjb25zdCBTdWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOwor
ICAgIAorICAgIGZvciAoU3Vic2FtcGxpbmdMZXZlbCBsZXZlbCA9IDA7IGxldmVsIDwgbWF4U3Vi
c2FtcGxpbmdMZXZlbDsgKytsZXZlbCkgeworICAgICAgICBpZiAoZnJhbWVTaXplQXRJbmRleCgw
LCBsZXZlbCkuYXJlYSgpIDwgbWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQorICAg
ICAgICAgICAgcmV0dXJuIGxldmVsOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbWF4U3Vic2Ft
cGxpbmdMZXZlbDsKIH0KIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxp
bmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJj
ZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0IHNjYWxlKSBjb25zdAogewotICAgIHJl
dHVybiAwOworICAgIGlmICghKHNjYWxlID4gMCAmJiBzY2FsZSA8PSAxKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgCisgICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCA9IGNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCk7CisgICAgaWYgKCFtYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBUaGVyZSBhcmUg
Zm91ciBzdWJzYW1wbGluZyBsZXZlbHM6IDAgPSAxeCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9
IDAuMTI1eC4KKyAgICBTdWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9IHN0ZDo6Y2VpbChzdGQ6Omxv
ZzIoMSAvIHNjYWxlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwpOwogfQogCi1ib29sIEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZG
cmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKIH0K
IAotYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKK2Jvb2wgSW1hZ2VTb3VyY2U6
OmlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYg
bV9kZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKTsKIH0KQEAgLTEyOSw5NyArMTQ4LDcxIEBAIElu
dFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAogICAg
IHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsK
IH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QKK3NpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3Vu
dCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4
KTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRh
dGlvbigpOwotICAgIAotICAgIHJldHVybiBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9
PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdo
dCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6
ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotYm9vbCBJbWFnZVNvdXJj
ZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK2ludCBJbWFnZVNvdXJjZTo6
cmVwZXRpdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29k
ZXItPmhvdFNwb3QoaG90U3BvdCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29k
ZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CiB9CiAKLXNpemVfdCBJbWFn
ZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKK1N0cmlu
ZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAw
OworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lv
bigpIDogU3RyaW5nKCk7CiB9CiAKLWludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkK
K09wdGlvbmFsPEludFBvaW50PiBJbWFnZVNvdXJjZTo6aG90U3BvdCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0Fu
aW1hdGlvbk5vbmU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmhvdFNw
b3QoKSA6IE51bGxvcHQ7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNv
bnN0Citib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgp
IDogMDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoaW5kZXgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQorYm9v
bCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAg
IGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBa
ZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiAgSWYg
d2UgaGF2ZSBhbgotICAgIC8vIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgotICAg
IGlmIChzaXplKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIElt
YWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsK
LSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1l
RW1wdHkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAhaW5pdGlhbGl6ZWQo
KSB8fCBtX2RlY29kZXItPmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKK30KIAotICAgIC8v
IFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUg
cG9ydHMsIHRoZSBkYXRhCi0gICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIs
IGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCi0gICAgcmV0dXJuIGJ1ZmZl
ci0+YXNOZXdOYXRpdmVJbWFnZSgpOworYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGlu
Z09mRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5pdGlh
bGl6ZWQoKSAmJiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRl
eCk7CiB9CiAKLWZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCitJbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0CiB7CiAgICAgaWYg
KCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4
KGluZGV4KTsKLSAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJh
bWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJldHVybiAwOworICAgIEludFNpemUgc2l6ZSA9IG1f
ZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAg
aWYgKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICE9IFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKQorICAgICAgICByZXR1cm4gc2l6ZTsKIAotICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRzIHNw
ZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBhcyBw
b3NzaWJsZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBk
dXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5Ci0gICAgLy8gYSBk
dXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0
dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0g
ICAgY29uc3QgZmxvYXQgZHVyYXRpb24gPSBidWZmZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBmOwot
ICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAgcmV0dXJuIDAuMTAwZjsKLSAgICBy
ZXR1cm4gZHVyYXRpb247CisgICAgcmV0dXJuIG9yaWVudGF0aW9uQXRJbmRleChpbmRleCkudXNl
c1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7CiB9CiAKLUlt
YWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNv
bnN0Cit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uKCkgOiBJbWFnZU9yaWVudGF0
aW9uKCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwpLmFyZWEoKSAqIDQ7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdElu
ZGV4KHNpemVfdCBpbmRleCkKK2Zsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuICFpbml0aWFsaXplZCgpIHx8IG1fZGVjb2Rl
ci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAgIHJldHVybiBpbml0aWFsaXplZCgp
ID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkgOiAwOwogfQogCi1ib29s
IEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKK0ltYWdl
T3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRl
eChpbmRleCk7Ci0gICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1cygpID09IEltYWdl
RnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29k
ZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCkgOiBJbWFnZU9yaWVudGF0aW9uKCk7CiB9Ci0K
LXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CisgICAgCitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
PmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KSA6IDA7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkg
PyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYg
dHMpIGNvbnN0CkBAIC0yMzMsNSArMjI2LDMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0
U3RyZWFtJiB0cykgY29uc3QKIH0KICAgICAKIH0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGNkOWIz
OWRhYTFjODVlMTgwZjJjNjQxNWEwZWQyM2YzZTRkNzc3YTQuLmE4OTgwNzYxYjQ0MTcyYTY4ODMz
NWFiOTc5MGI4OTQ4ZDczMTAzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCwgMjAxMiwgMjAx
NCwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCwx
OCArMjgsMTUgQEAKICNkZWZpbmUgSW1hZ2VTb3VyY2VfaAogCiAjaW5jbHVkZSAiSW1hZ2VPcmll
bnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQ
dHIuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLXR5cGVkZWYgc3RydWN0
IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBf
X0NGRGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSW1hZ2VPcmllbnRhdGlvbjsKQEAgLTgzLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICBH
YW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQKICAgICB9OwogCi0gICAgSW1hZ2VTb3VyY2UoQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24gPSBBbHBoYVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xvclBy
b2ZpbGVBcHBsaWVkKTsKKyAgICBJbWFnZVNvdXJjZShBbHBoYU9wdGlvbiA9IEFscGhhUHJlbXVs
dGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmls
ZUFwcGxpZWQpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCiAgICAgLy8gVGVsbHMgdGhlIEltYWdl
U291cmNlIHRoYXQgdGhlIEltYWdlIG5vIGxvbmdlciBjYXJlcyBhYm91dCBkZWNvZGVkIGZyYW1l
CkBAIC0xMDcsNzYgKzEwNCw2MSBAQCBwdWJsaWM6CiAgICAgLy8gd2hvIHNldCB8ZGVzdHJveUFs
bHwgdG8gdHJ1ZSBpZiB0aGV5IHdpc2ggdG8gYmUgYWJsZSB0byBjb250aW51ZSB1c2luZwogICAg
IC8vIHRoZSBJbWFnZVNvdXJjZS4gIFRoaXMgd2F5IGltcGxlbWVudGF0aW9ucyB3aGljaCBjaG9v
c2UgdG8gZGVzdHJveSB0aGVpcgogICAgIC8vIGRlY29kZXJzIGluIHNvbWUgY2FzZXMgY2FuIHJl
Y29uc3RydWN0IHRoZW0gY29ycmVjdGx5LgotICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxs
LAotICAgICAgICAgICAgICAgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLAotICAgICAgICAg
ICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gTlVMTCwKLSAgICAgICAgICAgICAgIGJvb2wgYWxs
RGF0YVJlY2VpdmVkID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95QWxsLCBz
aXplX3QgY2xlYXJCZWZvcmVGcmFtZSA9IDAsIFNoYXJlZEJ1ZmZlciogZGF0YSA9IG51bGxwdHIs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOwogCiAgICAgYm9vbCBpbml0aWFsaXplZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIFN0cmluZyBmaWxl
bmFtZUV4dGVuc2lvbigpIGNvbnN0OwogCiAgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09m
RnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbGxvd1N1YnNhbXBsaW5n
KGJvb2wgYWxsb3dTdWJzYW1wbGluZykgeyBtX2FsbG93U3Vic2FtcGxpbmcgPSBhbGxvd1N1YnNh
bXBsaW5nOyB9Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgp
IGNvbnN0OwotCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICBzdGF0aWMgc2l6ZV90
IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwogICAgIAorICAgIGJvb2wgaXNT
aXplQXZhaWxhYmxlKCkgY29uc3Q7CiAgICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhv
dXQgc3Vic2FtcGxpbmcuCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgSW50U2l6ZSBz
aXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gU2l6ZSBvZiBv
cHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwotCi0gICAgYm9vbCBnZXRI
b3RTcG90KEludFBvaW50JikgY29uc3Q7Ci0KLSAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRl
cm1pbmVQcm9wZXJ0aWVzKCkgY29uc3Q7Ci0KLSAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCk7CiAK
ICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OworICAgIGludCByZXBldGl0aW9uQ291bnQo
KTsKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICBPcHRpb25hbDxJ
bnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNh
bGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKLSAgICAv
LyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKLQotICAg
IGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7Ci0gICAgYm9vbCBmcmFtZUhhc0Fs
cGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkg
dXNlZCBhbnkgYWxwaGEuCiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7
IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBpcyBjb21wbGV0ZWx5IGRlY29kZWQuCi0gICAg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJ
RiBpbWFnZSBvcmllbnRhdGlvbgotCisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEu
CisgICAgYm9vbCBhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
KyAgICAKKyAgICAvLyBTaXplIG9mIG9wdGlvbmFsbHkgc3Vic2FtcGxlZCBmcmFtZS4KKyAgICBJ
bnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikg
Y29uc3Q7CisgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRl
Y29kZWQgZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0CiAgICAgLy8gZGVjb2RlZCB0aGVu
IHJldHVybiAwLgogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IDApIGNvbnN0OwotCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKLSAgICBzdGF0aWMgdW5zaWduZWQgbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKCkg
eyByZXR1cm4gc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UodW5zaWduZWQgbWF4UGl4ZWxzKSB7IHNfbWF4UGl4
ZWxzUGVyRGVjb2RlZEltYWdlID0gbWF4UGl4ZWxzOyB9Ci0jZW5kaWYKLQorICAgIAorICAgIGZs
b2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJRiBpbWFnZSBvcmllbnRhdGlv
bgorICAgIAorICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGlu
ZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CisgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNs
ZWFyKCkgYWJvdmUuCisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CisgICAgCiBwcml2YXRlOgotICAgIHZvaWQg
ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShzaXplX3QpOworICAgIHZvaWQgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBTdWJzYW1wbGluZ0xldmVsIGNhbGN1bGF0ZU1heGlt
dW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mKSBj
b25zdDsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7
Ci0gICAgCisKKyAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBtX2FsbG93U3Vic2FtcGxpbmcg
c2hvdWxkIGJlIHRoZSBzYW1lIGFzIGRlZmF1bHRJbWFnZVN1YnNhbXBsaW5nRW5hYmxlZCBpbiBT
ZXR0aW5ncy5jcHAKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2FsbG93U3Vic2FtcGxp
bmcgeyB0cnVlIH07CiAjZWxzZQogICAgIGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIHsgZmFsc2Ug
fTsKICNlbmRpZgogCi0jaWYgIVVTRShDRykKICAgICBBbHBoYU9wdGlvbiBtX2FscGhhT3B0aW9u
OwogICAgIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb247Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQot
ICAgIHN0YXRpYyB1bnNpZ25lZCBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsKLSNlbmRpZgog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDdmYmQzNDFiOTg4ZGMyNWQ2ZDFmMTFkOGVhMzY3YTM2
OWQwZGRiNDUuLjI1MjU5ZGFhZjkyMzkxZjZjZTcxOTdhMDdkNTcyY2I0Y2IyNDYyYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKQEAgLTEyMiwxNSArMTIyLDYgQEAgSW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIo
KQogICAgIG1fbmF0aXZlRGVjb2RlciA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3Jl
bWVudGFsKG51bGxwdHIpKTsKIH0KIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZURlY29kZXI6OnN1
YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhp
bXVtU3Vic2FtcGxpbmdMZXZlbCkKLXsKLSAgICAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1wbGlu
ZyBsZXZlbHM6IDAgPSAxeCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KLSAgICBm
bG9hdCBjbGFtcGVkU2NhbGUgPSBzdGQ6Om1heDxmbG9hdD4oMC4xMjUsIHN0ZDo6bWluPGZsb2F0
PigxLCBzY2FsZSkpOwotICAgIFN1YnNhbXBsaW5nTGV2ZWwgcmVzdWx0ID0gY2VpbGYobG9nMmYo
MSAvIGNsYW1wZWRTY2FsZSkpOwotICAgIEFTU0VSVChyZXN1bHQgPj0wICYmIHJlc3VsdCA8PSAz
KTsKLSAgICByZXR1cm4gc3RkOjptaW4ocmVzdWx0LCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7
Ci19Ci0KIHNpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVy
dGllcygpCiB7CiAgICAgLy8gTWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2MvY2FsbG9jIGNhbGxz
IG9uIE1hYyBPUyAxMC42LjYsIHg4Nl82NC4KQEAgLTIxMCwyNiArMjAxLDI1IEBAIGludCBJbWFn
ZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNBbmltYXRpb25O
b25lOwogfQogCi1ib29sIEltYWdlRGVjb2Rlcjo6aG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkg
Y29uc3QKK09wdGlvbmFsPEludFBvaW50PiBJbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAog
ewogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCAw
LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwogICAgIGlmICghcHJvcGVydGllcykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICAKICAgICBp
bnQgeCA9IC0xLCB5ID0gLTE7CiAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIpKTsK
ICAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUs
ICZ4KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAg
ICAKICAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGll
cy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RZIikpOwogICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdl
dFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIAogICAgIGlmICh4IDwgMCB8fCB5IDwgMCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICAKLSAg
ICBob3RTcG90ID0gSW50UG9pbnQoeCwgeSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IEludFBvaW50KHgsIHkpOwogfQogCiBJbnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29u
c3QKQEAgLTM4NiwyMSArMzc2LDIxIEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKENGRGF0
YVJlZiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBDR0ltYWdlU291cmNlVXBkYXRl
RGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAK
LXZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8v
IE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRs
eSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAg
Ly8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENG
RGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8v
IHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgc2V0RGF0YShkYXRhLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBzZXREYXRhKGRhdGEu
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENy
ZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRh
LT5yZWYoKTsKKyAgICBkYXRhLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBv
c2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVz
ZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93
biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGlj
aAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBj
YWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxi
YWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRC
dWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGRhdGEsIGRhdGEtPnNp
emUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZk
YXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJj
ZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5n
ZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggOGM2YTllMjI3
ODA0M2ZhNWFjNzIxMjYxN2YxZTA5MzE0NzFmZDRiNC4uMzc0YjhiNjczODBlNTc5OWU0Mjc0OTM0
ZGJlZjE2YzFhZTJhMTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC0yOSwxOSArMjksMjMgQEAKICNpbmNsdWRl
ICJJbWFnZVNvdXJjZUNHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisKK3R5cGVkZWYgc3RydWN0IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3Vy
Y2VSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1h
Z2VEZWNvZGVyKCk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29k
ZXI+IGNyZWF0ZSgpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IGNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdl
U291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlRGVjb2Rlcj4oKTsKICAgICB9CiAgICAgCiAgICAgc3Rh
dGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLSAgICBzdGF0
aWMgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUs
IFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwogICAgIAogICAgIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwogICAgIGJvb2wgaXNTaXplQXZhaWxhYmxl
KCkgY29uc3Q7CkBAIC01MCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNpemUoKSBj
b25zdDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OwogICAgIGludCByZXBldGl0aW9u
Q291bnQoKSBjb25zdDsKLSAgICBib29sIGhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0
OworICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7CiAgICAgCiAgICAgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAg
ICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CkBAIC02NCw3ICs2
OCw5IEBAIHB1YmxpYzoKICAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0RGF0
YShDRkRhdGFSZWYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgCisgICAgdm9pZCBjbGVhckZy
YW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0KICAgICAKIHByb3RlY3RlZDoKICAgICBtdXRhYmxl
IEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDlkNGUxNWM5ZmZlNzkwYzJlNjg1MjQ2ZmU4Zjg1ZWI1NjE2MDgzYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZVNv
dXJjZS5oIgotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKLQotI2lu
Y2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUltYWdl
U291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdlU291cmNl
OjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLXsKLSAgICAvLyBGSVhNRTogQWxwaGFPcHRp
b24gYW5kIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGFyZSBpZ25vcmVkLgotfQotCi1JbWFn
ZVNvdXJjZTo6fkltYWdlU291cmNlKCkKLXsKLSAgICBjbGVhcih0cnVlKTsKLX0KLQotdm9pZCBJ
bWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3QsIFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi17Ci0gICAgLy8gUmVjZW50IHZlcnNp
b25zIG9mIEltYWdlSU8gZGlzY2FyZCBwcmV2aW91c2x5IGRlY29kZWQgaW1hZ2UgZnJhbWVzIGlm
IHRoZSBjbGllbnQKLSAgICAvLyBhcHBsaWNhdGlvbiBubyBsb25nZXIgaG9sZHMgcmVmZXJlbmNl
cyB0byB0aGVtLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheQotICAgIC8vIHRoZSBk
ZWNvZGVyIHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5IGFza2VkIHRvIGRlc3Ryb3kgYWxsIG9mIHRo
ZSBmcmFtZXMuCi0gICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2RlY29kZXIgPSBudWxscHRyOwotICAgIAotICAgIGlmIChkYXRhKQotICAgICAgICBz
ZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci19Ci0gICAgCi12b2lkIEltYWdlU291cmNl
OjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciopCi17Ci0gICAgaWYgKGluaXRp
YWxpemVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6
OmNyZWF0ZSgpOwotfQotCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi17Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChkYXRhKTsKLSAgICAKLSAg
ICBpZiAoIWluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgbV9kZWNvZGVyLT5zZXREYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7Ci19Ci0KLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5m
aWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7Ci19Ci0gICAgCi1TdWJzYW1wbGluZ0xldmVs
IEltYWdlU291cmNlOjpjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX2FsbG93U3Vic2FtcGxpbmcgfHwgIWFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleCgwKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBWYWx1ZXMgY2hvc2VuIHRv
IGJlIGFwcHJvcHJpYXRlIGZvciBpT1MuCi0gICAgY29uc3QgaW50IGNNYXhpbXVtSW1hZ2VBcmVh
QmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAgY29uc3QgU3Vic2FtcGxp
bmdMZXZlbCBtYXhTdWJzYW1wbGluZ0xldmVsID0gMzsKLQotICAgIFN1YnNhbXBsaW5nTGV2ZWwg
Y3VycmVudExldmVsID0gMDsKLSAgICBmb3IgKCA7IGN1cnJlbnRMZXZlbCA8PSBtYXhTdWJzYW1w
bGluZ0xldmVsOyArK2N1cnJlbnRMZXZlbCkgewotICAgICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9
IGZyYW1lU2l6ZUF0SW5kZXgoMCwgY3VycmVudExldmVsKTsKLSAgICAgICAgaWYgKGZyYW1lU2l6
ZS5hcmVhKCkgPCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIGN1cnJlbnRMZXZlbDsKLX0KLSAgICAKLVN1
YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6Om1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29u
c3QKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIGNhbGN1bGF0ZU1heGltdW1TdWJz
YW1wbGluZ0xldmVsKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gMDsKLX0KLQotU3Vic2FtcGxpbmdM
ZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0IHNjYWxlKSBj
b25zdAotewotICAgIHJldHVybiBJbWFnZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShzY2FsZSwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSk7Ci19Ci0KLWJvb2wgSW1hZ2VTb3Vy
Y2U6OmlzU2l6ZUF2YWlsYWJsZSgpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9k
ZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dT
dWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKLXsKLSAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJ
bmRleChpbmRleCk7Ci19Ci0KLUludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3QK
LXsKLSAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0gICAgCi0g
ICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsKTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNv
ZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwotICAgIAotICAgIHJldHVybiBzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAmJiBvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6
ZTsKLX0KLQotSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKLXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVj
b2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KSA6IEltYWdlT3JpZW50YXRpb24oKTsKLX0K
LQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1l
U2l6ZUF0SW5kZXgoMCwgMCk7Ci19Ci0gICAgCi1JbnRTaXplIEltYWdlU291cmNlOjpzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRl
eCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6
OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGluaXRp
YWxpemVkKCkgJiYgbV9kZWNvZGVyLT5ob3RTcG90KGhvdFNwb3QpOwotfQotCi1zaXplX3QgSW1h
Z2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVz
KCk7Ci19Ci0gICAgCi1pbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCi17Ci0gICAg
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0Fu
aW1hdGlvbkxvb3BPbmNlOwotfQotCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBj
b25zdAotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50
KCkgOiAwOwotfQotCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsKQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVG
cmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOwotfQot
Ci1ib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkK
LXsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXgoaW5kZXgpOwotfQotCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNv
ZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkgOiAwOwotfQotCi1ib29sIEltYWdlU291
cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgcmV0dXJuICFp
bml0aWFsaXplZCgpIHx8IG1fZGVjb2Rlci0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
fQotCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0Ci17Ci0gICAgSW50U2l6
ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsK
LSAgICByZXR1cm4gZnJhbWVTaXplLmFyZWEoKSAqIDQ7Ci19Ci0gICAgCi12b2lkIEltYWdlU291
cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIGlmIChtX2FsbG93U3Vic2Ft
cGxpbmcpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWxsb3ctc3Vic2FtcGxpbmciLCBtX2Fs
bG93U3Vic2FtcGxpbmcpOwotICAgIAotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24g
PSBvcmllbnRhdGlvbkF0SW5kZXgoMCk7Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IE9yaWdpblRv
cExlZnQpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgib3JpZW50YXRpb24iLCBvcmllbnRhdGlv
bik7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDZmZTI5
MGUyMjYxOGZiZDc2Yzc1Yzg0NDkyNDQ3MmUzMTk3ZmZmODcuLjg4NjdkZmVmMTU3NTRlMDQ5YTRi
NzQzNWIyNmRlYzNkMWE5NThjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApAQCAtMSw0ICsxLDUgQEAKIC8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgpAQCAtMjcwLDYgKzI3MSwxMiBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5
cGU+IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBp
bgogCiB9CiAKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVf
dCBpbmRleCkKK3sKKyAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBmcmFtZUJ1ZmZlckF0SW5kZXgo
aW5kZXgpOworICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZy
YW1lOjpGcmFtZUNvbXBsZXRlOworfQorCiBib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBo
YUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2Fj
aGUuc2l6ZSgpIDw9IGluZGV4KQpAQCAtMjg3LDYgKzI5NCwzOCBAQCB1bnNpZ25lZCBJbWFnZURl
Y29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICByZXR1cm4g
bV9zaXplLmFyZWEoKSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpOwogfQogCitmbG9h
dCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKK3sKKyAg
ICBJbWFnZUZyYW1lKiBidWZmZXIgPSBmcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOworICAgIGlm
ICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgLy8gTWFueSBhbm5veWluZyBhZHMgc3BlY2lm
eSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBvc3Np
YmxlLgorICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94J3MgYmVoYXZpb3IgYW5kIHVzZSBhIGR1cmF0
aW9uIG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0aGF0IHNwZWNpZnkKKyAgICAvLyBhIGR1cmF0
aW9uIG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzc2ODkzMDA+IGFuZCA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zNjA4Mj4KKyAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICBj
b25zdCBmbG9hdCBkdXJhdGlvbiA9IGJ1ZmZlci0+ZHVyYXRpb24oKSAvIDEwMDAuMGY7CisgICAg
aWYgKGR1cmF0aW9uIDwgMC4wMTFmKQorICAgICAgICByZXR1cm4gMC4xMDBmOworICAgIHJldHVy
biBkdXJhdGlvbjsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCit7CisgICAgLy8g
WmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYg
d2UgaGF2ZSBhbgorICAgIC8vIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgorICAg
IGlmIChzaXplKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIElt
YWdlRnJhbWUqIGJ1ZmZlciA9IGZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7CisgICAgaWYgKCFi
dWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRz
IGFzIGEgbmF0aXZlIGltYWdlLiBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKKyAgICAvLyBpcyBh
bHJlYWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNyZW1lbnRzIGl0
cyByZWZjb3VudC4KKyAgICByZXR1cm4gYnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7Cit9CisK
IHZvaWQgSW1hZ2VEZWNvZGVyOjpwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKQogewogICAg
IG1fc2NhbGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDUzNDdhNDdiNzIzY2Q1ZjAzYjYyZDNi
MzUyY2Y5NDUxNDdkYTBlYWEuLjVhYmIwYWNjZTM4YjkwZmQ4ZGNiNDE1YzVkOGQ1NzIwZjgxMzlj
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMjM1LDE1
ICsyMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbWFnZURlY29kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
CiAgICAgICAgIEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKLSAgICAgICAgICAgIDogbV9zY2FsZWQoZmFsc2UpCi0gICAgICAgICAg
ICAsIG1fcHJlbXVsdGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6QWxwaGFQ
cmVtdWx0aXBsaWVkKQorICAgICAgICAgICAgOiBtX3ByZW11bHRpcGx5QWxwaGEoYWxwaGFPcHRp
b24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKICAgICAgICAgICAgICwgbV9p
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9PSBJ
bWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkKQotICAgICAgICAgICAgLCBt
X3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbWF4TnVtUGl4ZWxzKC0xKQot
ICAgICAgICAgICAgLCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQotICAgICAgICAgICAgLCBt
X2ZhaWxlZChmYWxzZSkgeyB9CisgICAgICAgIHsKKyAgICAgICAgfQogCi0gICAgICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlcigpIHsgfQorICAgICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKQor
ICAgICAgICB7CisgICAgICAgIH0KIAogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVk
IGRlY29kZXIgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBSZXR1cm5zIDAgaWYKICAgICAgICAg
Ly8gd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRh
IChwb3NzaWJseQpAQCAtMjU0LDExICsyNTQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0
YVJlY2VpdmVkOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKG1fZmFpbGVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fZGF0YSA9IGRhdGE7CisgICAgICAgICAgICBtX2RhdGEgPSAmZGF0YTsKICAgICAg
ICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAgICAgICAgIH0K
IApAQCAtMjgyLDcgKzI4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gc2l6
ZXMuICBUaGlzIGRvZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBmb3IgR0lGLCBzaW5jZSBkZWNv
ZGluZyBHSUZzCiAgICAgICAgIC8vIGNvbXBvc2l0ZXMgYW55IHNtYWxsZXIgZnJhbWVzIGFnYWlu
c3QgcHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQogICAgICAgICAvLyBzaXplIGZyYW1l
cy4KLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90KSBjb25z
dAorICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBzaXplKCk7
CiAgICAgICAgIH0KQEAgLTMxMCwxNiArMzEwLDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50ZXIuCiAgICAgICAgIHZpcnR1YWwgSW1h
Z2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgPSAwOwogCisgICAgICAgIGJvb2wg
ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOworCiAgICAgICAgIC8vIE1ha2UgdGhlIGJl
c3QgZWZmb3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0ZWQgZnJhbWUgaGFzIGFscGhh
IGNoYW5uZWwuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QpIGNvbnN0OworICAgICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29u
c3Q7CiAKICAgICAgICAgLy8gTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lIHJl
cXVlc3RlZC4gUmV0dXJuIDAgaWYgbm90IHlldCBkZWNvZGVkLgotICAgICAgICB2aXJ0dWFsIHVu
c2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgICAgIAorICAgICAgICBmbG9h
dCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOworICAgICAgICAKKyAgICAgICAgTmF0aXZl
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
KTsKIAogICAgICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxh
ZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgICAgICBib29s
IGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGU7IH0KIAotICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgICAgICBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50
YXRpb247IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KHNpemVfdCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICBlbnVtIHsg
aWNjQ29sb3JQcm9maWxlSGVhZGVyTGVuZ3RoID0gMTI4IH07CiAKQEAgLTMzMCw2ICszMzgsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2Zp
bGVEYXRhWzE2XSwgIlJHQiAiLCA0KTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyBzaXpl
X3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgeyByZXR1cm4gMDsgfQorICAg
ICAgICAKKyAgICAgICAgc3RhdGljIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZv
clNjYWxlKGZsb2F0LCBTdWJzYW1wbGluZ0xldmVsKSB7IHJldHVybiAwOyB9CisKICAgICAgICAg
c3RhdGljIGJvb2wgaW5wdXREZXZpY2VDb2xvclByb2ZpbGUoY29uc3QgY2hhciogcHJvZmlsZURh
dGEsIHVuc2lnbmVkIHByb2ZpbGVMZW5ndGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQocHJvZmlsZUxlbmd0aCwgcHJvZmlsZUxlbmd0aCA+PSBpY2NDb2xvclByb2ZpbGVI
ZWFkZXJMZW5ndGgpOwpAQCAtMzU0LDEzICszNjYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIGNvbXBvc2l0aW5nKS4KICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVC
dWZmZXJDYWNoZShzaXplX3QpIHsgfQogCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKLSAgICAgICAgdm9pZCBzZXRNYXhOdW1QaXhlbHMoaW50IG0pIHsgbV9tYXhOdW1Q
aXhlbHMgPSBtOyB9Ci0jZW5kaWYKLQogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vy
c29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFyZ3VtZW50CiAgICAgICAgIC8vIGFuZCBy
ZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgotICAgICAgICB2aXJ0dWFsIGJv
b2wgaG90U3BvdChJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZp
cnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBOdWxsb3B0
OyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgcHJlcGFyZVNjYWxlRGF0YUlmTmVj
ZXNzYXJ5KCk7CkBAIC0zNzQsNyArMzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwogICAgICAgICAvLyBG
SVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBwb3J0Pwog
ICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7Ci0gICAgICAgIGJvb2wgbV9zY2Fs
ZWQ7CisgICAgICAgIGJvb2wgbV9zY2FsZWQgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50
PiBtX3NjYWxlZENvbHVtbnM7CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKICAg
ICAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CkBAIC0zOTIsMTAgKzQwMCwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAg
ICAgICAgYm9vbCBtX3NpemVBdmFpbGFibGU7Ci0gICAgICAgIGludCBtX21heE51bVBpeGVsczsK
LSAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkOwotICAgICAgICBib29sIG1fZmFpbGVk
OworICAgICAgICBib29sIG1fc2l6ZUF2YWlsYWJsZSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKElN
QUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21h
eE51bVBpeGVscyB7IDEwMjQgKiAxMDI0IH07CisjZWxzZQorICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IG1fbWF4TnVtUGl4ZWxzIHsgLTEgfTsKKyNlbmRpZgorICAgICAgICBib29sIG1faXNBbGxE
YXRhUmVjZWl2ZWQgeyBmYWxzZSB9OworICAgICAgICBib29sIG1fZmFpbGVkIHsgZmFsc2UgfTsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDNkNzZiYzJhOTc0ZGVhZjczMThkNTcwYjFlZWMzMTYyNjA5OTgwNjUuLmNhZjM1
Yzk3ZjE3ZWRkMzRiYzlkZjg5YWIwOWU4NzAwYWVlNmM3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuY3BwCkBAIC00NywxNCArNDcsMTQgQEAgQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURl
Y29kZXIoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLAogewogfQogCi12b2lk
IEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2
ZWQpOwogICAgIGlmIChtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXItPnNldERhdGEoZGF0YSk7
CisgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKCZkYXRhKTsKIH0KIAogYm9vbCBCTVBJbWFnZURl
Y29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggMWM4
ODJlMTM5OTUyZTQ3NDgzMmJjYmMyMjA1MGE2MGZiNGZmYmI5Ny4uYjJjNDc4OTU2MTliZWNhZjI1
ZDEwYTMwYzJlODNhZTM1NTg4NzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDIs
NyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVy
CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1
cm4gImJtcCI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1NpemVBdmFpbGFibGUoKTsKICAgICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZl
ckF0SW5kZXgoc2l6ZV90IGluZGV4KTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkg
ZGVsZXRlcyB8bV9yZWFkZXJ8LiAgQmUgY2FyZWZ1bCB0byBhdm9pZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCBjZDU2ZTY3ZWI5MThiMTY5M2M0ZWNjZjc0MGFmODBjODU5MzZhNzk4
Li43OTE1MTU2MDcyZDcxNzA0NDM3MjU3MzA2YjA5NTkwOGYzNDk4OTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcApAQCAtNDIsMTQgKzQyLDE0IEBAIEdJRkltYWdlRGVjb2Rlcjo6fkdJ
RkltYWdlRGVjb2RlcigpCiB7CiB9CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVj
b2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW1hZ2VEZWNvZGVy
OjpzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgaWYgKG1fcmVhZGVyKQotICAg
ICAgICBtX3JlYWRlci0+c2V0RGF0YShkYXRhKTsKKyAgICAgICAgbV9yZWFkZXItPnNldERhdGEo
JmRhdGEpOwogfQogCiBib29sIEdJRkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKQEAg
LTMwMyw3ICszMDMsNyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKHVuc2lnbmVkIGhh
bHRBdEZyYW1lLCBHSUZRdWVyeSBxdWVyeSkKIAogICAgIGlmICghbV9yZWFkZXIpIHsKICAgICAg
ICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsKLSAg
ICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhKTsKKyAgICAgICAgbV9yZWFkZXItPnNldERh
dGEobV9kYXRhLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAocXVlcnkgPT0gR0lGU2l6ZVF1ZXJ5
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggNDA2MTA4OTUzOTVkOWIxMmNjNjlkMTkx
Y2MzMDUyMjA5Y2MwNjg3Mi4uYzRjNDlhYzM0ZThjODJjYTI5MDM4YWNlZGMwMzlmNTkwZjM4MWJk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIHZpcnR1YWwgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gImdpZiI7IH0KLSAgICAgICAg
dmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxh
YmxlKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpOwogICAgICAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5oCmluZGV4IGZiODc4ZWQwOGUyOGQ0MDJlZWYzNzBkY2EzOTJjZjlmMjZl
ZDA0NjkuLmVhNDJiMTFhNzhjMzhlYmU2NWMyYzI4YjkxYzhhZmI2MjYzNWE5OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5oCkBAIC0yNDYsNyArMjQ2LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICB2b2lkIHNldERhdGEoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRh
dGEpIHsgbV9kYXRhID0gZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqIGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFt
ZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVj
b2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCA1NmFjOTIxY2QwODQ2ODIzYjgxMTE4ZWE2ZjNhZGYyMTFkYTdhMDg1
Li5hNjAzYTEwNzZmOWRmY2QxOTRlNmJkOWNmMmI4MWQ0YjNiOWRiNzdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBJQ09JbWFnZURlY29kZXI6On5JQ09J
bWFnZURlY29kZXIoKQogewogfQogCi12b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJQ09JbWFnZURlY29k
ZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsK
ICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIAogICAgIGZvciAoQk1QUmVhZGVyczo6aXRlcmF0b3IgaShtX2JtcFJlYWRl
cnMuYmVnaW4oKSk7IGkgIT0gbV9ibXBSZWFkZXJzLmVuZCgpOyArK2kpIHsKICAgICAgICAgaWYg
KCppKQotICAgICAgICAgICAgKCppKS0+c2V0RGF0YShkYXRhKTsKKyAgICAgICAgICAgICgqaSkt
PnNldERhdGEoJmRhdGEpOwogICAgIH0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG5n
RGVjb2RlcnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRl
eChpKTsKQEAgLTEyOCwyMSArMTI4LDIwIEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpzZXRGYWls
ZWQoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OnNldEZhaWxlZCgpOwogfQogCi1ib29sIElD
T0ltYWdlRGVjb2Rlcjo6aG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK09wdGlvbmFs
PEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAogewogICAgIC8vIFdo
ZW4gdW5zcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGZyYW1lIGlzIGFsd2F5cyBmcmFtZSAwLiBUaGlz
IGlzIGNvbnNpc3RlbnQgd2l0aAogICAgIC8vIEJpdG1hcEltYWdlIHdoZXJlIGN1cnJlbnRGcmFt
ZSgpIHN0YXJ0cyBhdCAwIGFuZCBvbmx5IGluY3JlYXNlcyB3aGVuIGFuaW1hdGlvbiBpcwogICAg
IC8vIHJlcXVlc3RlZC4KLSAgICByZXR1cm4gaG90U3BvdEF0SW5kZXgoMCwgaG90U3BvdCk7Cisg
ICAgcmV0dXJuIGhvdFNwb3RBdEluZGV4KDApOwogfQogCi1ib29sIElDT0ltYWdlRGVjb2Rlcjo6
aG90U3BvdEF0SW5kZXgoc2l6ZV90IGluZGV4LCBJbnRQb2ludCYgaG90U3BvdCkgY29uc3QKK09w
dGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3RBdEluZGV4KHNpemVfdCBp
bmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPj0gbV9kaXJFbnRyaWVzLnNpemUoKSB8fCBt
X2ZpbGVUeXBlICE9IENVUlNPUikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gTnVsbG9wdDsKIAotICAgIGhvdFNwb3QgPSBtX2RpckVudHJpZXNbaW5kZXhdLm1faG90U3Bv
dDsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV9kaXJFbnRyaWVzW2luZGV4XS5tX2hv
dFNwb3Q7CiB9CiAKIApAQCAtMTY1LDcgKzE2NCw3IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpz
ZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIC8vIEZJWE1FOiBT
YXZlIHRoaXMgY29weSBieSBtYWtpbmcgdGhlIFBORyBkZWNvZGVyIGFibGUgdG8gdGFrZSBhbgog
ICAgIC8vIG9wdGlvbmFsIG9mZnNldC4KICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbmdEYXRh
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCZtX2RhdGEtPmRhdGEoKVtkaXJFbnRyeS5tX2ltYWdlT2Zm
c2V0XSwgbV9kYXRhLT5zaXplKCkgLSBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0KSk7Ci0gICAgbV9w
bmdEZWNvZGVyc1tpbmRleF0tPnNldERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2
ZWQoKSk7CisgICAgbV9wbmdEZWNvZGVyc1tpbmRleF0tPnNldERhdGEoKnBuZ0RhdGEsIGlzQWxs
RGF0YVJlY2VpdmVkKCkpOwogfQogCiB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVf
dCBpbmRleCwgYm9vbCBvbmx5U2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAxNDk0
Nzk3YTliZjMxYzNlNjRiODFkYjZjZTMzM2Q5MTI3ZmI4OWQ4Li45ZjQ3YTA4ZDM5NDY2NWQwY2Ri
N2IzMTg1MzUxNjAwYzdkN2M2M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00NSw3
ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBJbWFnZURlY29kZXIK
ICAgICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVy
biAiaWNvIjsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICAgICAgdmlydHVhbCBib29sIGlz
U2l6ZUF2YWlsYWJsZSgpOwogICAgICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QpIGNvbnN0OwpA
QCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGF2b2lkIGFj
Y2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9t
CiAgICAgICAgIC8vIGluc2lkZSBCTVBJbWFnZVJlYWRlciEKICAgICAgICAgdmlydHVhbCBib29s
IHNldEZhaWxlZCgpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaG90U3BvdChJbnRQb2ludCYpIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBlbnVtIEltYWdlVHlwZSB7CkBAIC0xMTYsOSArMTE2
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBjb3VsZCBiZSBkZWNvZGVkLgog
ICAgICAgICBib29sIHByb2Nlc3NEaXJlY3RvcnlFbnRyaWVzKCk7CiAKLSAgICAgICAgLy8gU3Rv
cmVzIHRoZSBob3Qtc3BvdCBmb3IgfGluZGV4fCBpbiB8aG90U3BvdHwgYW5kIHJldHVybnMgdHJ1
ZSwKLSAgICAgICAgLy8gb3IgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSBpcyBub25lLgotICAgICAg
ICBib29sIGhvdFNwb3RBdEluZGV4KHNpemVfdCBpbmRleCwgSW50UG9pbnQmIGhvdFNwb3QpIGNv
bnN0OworICAgICAgICAvLyBSZXR1cm5zIHRoZSBob3Qtc3BvdCBmb3IgfGluZGV4fCwgcmV0dXJu
cyBOdWxsb3B0IGlmIHRoZXJlIGlzIG5vbmUuCisgICAgICAgIE9wdGlvbmFsPEludFBvaW50PiBo
b3RTcG90QXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgICAgIC8vIFJlYWRzIGFuZCByZXR1
cm5zIGEgZGlyZWN0b3J5IGVudHJ5IGZyb20gdGhlIGN1cnJlbnQgb2Zmc2V0IGludG8KICAgICAg
ICAgLy8gfGRhdGF8LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
LmNwcAppbmRleCBjYWZkZDk4MGFiODE4ZjlhZjVhOTYyZTBmMTU1ZDlmNDdjMGNmMjQ1Li5jYWYw
ZDcyM2YwNjU5NjllMGMwOGM0NmUwMmMyNGE2ZTQ3YzExOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtNDUwLDEwICs0NTAsOSBAQCB2b2lk
IEV3a1ZpZXc6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKICAgICAgICAgaWYgKGN1
cnNvckltYWdlID09IG1fY3Vyc29ySWRlbnRpZmllci5pbWFnZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBJbnRQb2ludCBob3RTcG90OwotICAgICAgICBjdXJzb3JJbWFnZS0+Z2V0
SG90U3BvdChob3RTcG90KTsKLQotICAgICAgICBFY29yZV9YX0N1cnNvciBjdXN0b21DdXJzb3Ig
PSBjcmVhdGVDdXN0b21DdXJzb3Iod2luZG93LCBjdXJzb3JJbWFnZSwgSW50U2l6ZShjdXJzb3JJ
bWFnZS0+c2l6ZSgpKSwgaG90U3BvdCk7CisgICAgICAgIAorICAgICAgICBPcHRpb25hbDxJbnRQ
b2ludD4gaG90U3BvdCA9IGN1cnNvckltYWdlLT5ob3RTcG90KCk7CisgICAgICAgIEVjb3JlX1hf
Q3Vyc29yIGN1c3RvbUN1cnNvciA9IGNyZWF0ZUN1c3RvbUN1cnNvcih3aW5kb3csIGN1cnNvcklt
YWdlLCBJbnRTaXplKGN1cnNvckltYWdlLT5zaXplKCkpLCBob3RTcG90ID8gaG90U3BvdC52YWx1
ZSgpIDogSW50UG9pbnQoKSk7CiAgICAgICAgIGlmICghY3VzdG9tQ3Vyc29yKQogICAgICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWJkYzI5YzBmNDkxZjYxNjFhNjRiNjQ5Mjc4NjMxOWEwODVl
N2FjZi4uNzEyNDRjNTgzYjhmOTFkOTljOTAyYzkwNDViMmM1M2M1M2I1ZGM4NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE2LTA0LTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZSxjb20+CisKKyAgICAgICAgTWVyZ2UgQ0cgSW1hZ2VTb3VyY2UgYW5kIG5vbiBDRyBJ
bWFnZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBpbiBvbmUgZmlsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisgICAgICAgIAorICAgICAgICBBZGQgYSB0ZXN0IGZvciBpbWFnZSBz
dWItc2FtcGxpbmcuIFRoZSBpbWFnZSBzdWJzYW1wbGluZyBpcyBlbmFibGVkIGJ5CisgICAgICAg
IGRlZmF1bHQgZm9yIGlPUyBwbGF0Zm9ybSBvbmx5LiBCdXQgaXQgY2FuIGJlIGV4cGxpY2l0bHkg
ZW5hYmxlZCB0aHJvdWdoCisgICAgICAgIHRoZSBzZXR0aW5nIEltYWdlU3Vic2FtcGxpbmdFbmFi
bGVkLgorCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRt
bDogQWRkZWQuCisKIDIwMTYtMDQtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBET01Ub2tlbkxpc3QuY29udGFpbnMoKSBzaG91bGQgbm90IHRocm93CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MDMxM2JlYjhkYjc5NDE5NWE2YmVjMjJkZjBiODExYzdiMjMw
OTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vi
c2FtcGxpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgSFRNTD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBkaXYgeworICAgICAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIG1h
cmdpbjogMTBweDsKKyAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
fQorICAgIDwvc3R5bGU+Cis8aGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBj
cmVhdGVEaXYoY29sb3IpIHsKKyAgICAgICAgdmFyIGRpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZGl2RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29s
b3IgPSBjb2xvcjsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXZFbGVtZW50
KTsKKyAgICB9CisKKyAgICBjcmVhdGVEaXYoInJlZCIpOworICAgIGNyZWF0ZURpdigiZ3JlZW4i
KTsKKyAgICBjcmVhdGVEaXYoImJsdWUiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjI4YWUzYmU5ZGY1MzAxZGIyYTE4ZDgyOTM0ZTczYmE1ZDk4OTQ3YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLmh0bWwK
QEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
dHlsZT4KKyAgICAgICAgZGl2IHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIH0KKyAgICAgICAgaW1nIHsKKyAgICAg
ICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAg
IH0KKyAgICA8L3N0eWxlPgorPGhlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VT
dWJzYW1wbGluZ0VuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJbWFnZShjb2xv
cikgeworICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFz
Iik7CisgICAgICAgIGNhbnZhcy53aWR0aCA9IDEwMjQgKiAzOworICAgICAgICBjYW52YXMuaGVp
Z2h0ID0gMTAyNCAqIDM7CisgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQi
KTsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9yOworICAgICAgICBjdHguZmlsbFJlY3Qo
MCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAgICAgICB2YXIgaW1nRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICBpbWdFbGVtZW50
LnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoImltYWdlL3BuZyIpOworCisgICAgICAgIHZhciBkaXZF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdkVsZW1l
bnQuYXBwZW5kQ2hpbGQoaW1nRWxlbWVudCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZGl2RWxlbWVudCk7CisgICAgfQorICAgIAorICAgIGNyZWF0ZUltYWdlKCJyZWQiKTsK
KyAgICBjcmVhdGVJbWFnZSgiZ3JlZW4iKTsKKyAgICBjcmVhdGVJbWFnZSgiYmx1ZSIpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>