<?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>233760</bug_id>
          
          <creation_ts>2021-12-02 07:45:01 -0800</creation_ts>
          <short_desc>Move content filtering to Networking process</short_desc>
          <delta_ts>2022-02-18 17:02:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gavin.p</cc>
    
    <cc>japhet</cc>
    
    <cc>mazander</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1819697</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-02 07:45:01 -0800</bug_when>
    <thetext>Moving content filtering to the Networking process will enable us to further strengthen the WebContent process&apos; sandbox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819701</commentid>
    <comment_count>1</comment_count>
      <attachid>445721</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-02 08:04:47 -0800</bug_when>
    <thetext>Created attachment 445721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819702</commentid>
    <comment_count>2</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-02 08:05:23 -0800</bug_when>
    <thetext>WIP patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819722</commentid>
    <comment_count>3</comment_count>
      <attachid>445723</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-02 08:58:53 -0800</bug_when>
    <thetext>Created attachment 445723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819876</commentid>
    <comment_count>4</comment_count>
      <attachid>445775</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-02 14:56:38 -0800</bug_when>
    <thetext>Created attachment 445775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819908</commentid>
    <comment_count>5</comment_count>
      <attachid>445784</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-02 15:55:57 -0800</bug_when>
    <thetext>Created attachment 445784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819919</commentid>
    <comment_count>6</comment_count>
      <attachid>445784</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-02 16:23:15 -0800</bug_when>
    <thetext>Comment on attachment 445784
Patch

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

&gt; Source/WTF/wtf/PlatformEnableCocoa.h:168
&gt; +#define ENABLE_CONTENT_FILTERING_IN_NETWORKING_PROCESS ENABLE_CONTENT_FILTERING

Is there a reason we can&apos;t just do this everywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820268</commentid>
    <comment_count>7</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-03 12:23:00 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Comment on attachment 445784 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=445784&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/PlatformEnableCocoa.h:168
&gt; &gt; +#define ENABLE_CONTENT_FILTERING_IN_NETWORKING_PROCESS ENABLE_CONTENT_FILTERING
&gt; 
&gt; Is there a reason we can&apos;t just do this everywhere?

That&apos;s a good point. I will enable for all different platforms.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820538</commentid>
    <comment_count>8</comment_count>
      <attachid>446005</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-05 23:26:45 -0800</bug_when>
    <thetext>Created attachment 446005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820555</commentid>
    <comment_count>9</comment_count>
      <attachid>446012</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-06 02:03:44 -0800</bug_when>
    <thetext>Created attachment 446012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820947</commentid>
    <comment_count>10</comment_count>
      <attachid>446141</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-07 02:15:55 -0800</bug_when>
    <thetext>Created attachment 446141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820988</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-07 04:39:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/86150702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820991</commentid>
    <comment_count>12</comment_count>
      <attachid>446160</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-07 04:42:32 -0800</bug_when>
    <thetext>Created attachment 446160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820996</commentid>
    <comment_count>13</comment_count>
      <attachid>446164</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-07 04:51:11 -0800</bug_when>
    <thetext>Created attachment 446164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821064</commentid>
    <comment_count>14</comment_count>
      <attachid>446184</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-07 09:12:54 -0800</bug_when>
    <thetext>Created attachment 446184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821070</commentid>
    <comment_count>15</comment_count>
      <attachid>446188</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-07 09:31:07 -0800</bug_when>
    <thetext>Created attachment 446188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821072</commentid>
    <comment_count>16</comment_count>
      <attachid>446190</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-07 09:34:41 -0800</bug_when>
    <thetext>Created attachment 446190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821109</commentid>
    <comment_count>17</comment_count>
      <attachid>446202</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-07 10:46:27 -0800</bug_when>
    <thetext>Created attachment 446202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822136</commentid>
    <comment_count>18</comment_count>
      <attachid>446551</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-09 08:25:25 -0800</bug_when>
    <thetext>Created attachment 446551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822235</commentid>
    <comment_count>19</comment_count>
      <attachid>446577</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-09 11:34:20 -0800</bug_when>
    <thetext>Created attachment 446577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822264</commentid>
    <comment_count>20</comment_count>
      <attachid>446590</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-09 12:42:33 -0800</bug_when>
    <thetext>Created attachment 446590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822312</commentid>
    <comment_count>21</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-09 13:30:58 -0800</bug_when>
    <thetext>&lt;rdar://83201124&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822314</commentid>
    <comment_count>22</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-12-09 13:32:52 -0800</bug_when>
    <thetext>&lt;rdar://56634240&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842934</commentid>
    <comment_count>23</comment_count>
      <attachid>452378</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-17 09:24:24 -0800</bug_when>
    <thetext>Created attachment 452378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842990</commentid>
    <comment_count>24</comment_count>
      <attachid>452394</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-17 11:22:12 -0800</bug_when>
    <thetext>Created attachment 452394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843102</commentid>
    <comment_count>25</comment_count>
      <attachid>452424</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-17 13:30:20 -0800</bug_when>
    <thetext>Created attachment 452424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843111</commentid>
    <comment_count>26</comment_count>
      <attachid>452424</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-17 13:47:24 -0800</bug_when>
    <thetext>Comment on attachment 452424
Patch

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

&gt; Source/WTF/wtf/PlatformEnableCocoa.h:169
&gt; +#define ENABLE_CONTENT_FILTERING_IN_NETWORKING_PROCESS ENABLE_CONTENT_FILTERING

I&apos;m still not convinced we need this.  I think it ought to be the same everywhere.  I don&apos;t see any need to have it different on newer OSes.

&gt; Source/WebCore/loader/ContentFilter.cpp:279
&gt; +#if ENABLE(CONTENT_FILTERING_IN_NETWORKING_PROCESS)
&gt; +void ContentFilter::deliverResourceData(const SharedBuffer&amp; buffer, size_t encodedDataLength)
&gt; +#else
&gt;  void ContentFilter::deliverResourceData(CachedResource&amp; resource)
&gt; +#endif

I think it would be better to keep the same signature in both cases.

&gt; Source/WebCore/loader/SubstituteData.h:64
&gt; +        template&lt;class Decoder&gt; static WARN_UNUSED_RETURN bool decode(Decoder&amp;, SubstituteData&amp;);

Could you use the modern decoder that returns a std::optional&lt;SubstituteData&gt; instead?

&gt; Source/WebKit/WebProcess/Network/WebResourceLoader.h:37
&gt; +#include &lt;WebCore/SubstituteData.h&gt;

I think this can be a declaration instead of including the whole header.

&gt; Source/WebKit/WebProcess/Network/WebResourceLoader.messages.in:42
&gt; +    ContentFilterDidBlockLoad(WebCore::ContentFilterUnblockHandler unblockHandler, String unblockRequestDeniedScript)

I don&apos;t understand how a ContentFilterUnblockHandler can be serialized when it contains a std::function.  Do we just lose that when going to a different process?  Is that ok?

&gt; WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:160
&gt; +      buildConfiguration = &quot;Release&quot;

This change should probably not be included.

&gt; WebKit.xcworkspace/xcshareddata/xcschemes/All Tools.xcscheme:99
&gt; +      buildConfiguration = &quot;Release&quot;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843598</commentid>
    <comment_count>27</comment_count>
      <attachid>452569</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-18 13:12:22 -0800</bug_when>
    <thetext>Created attachment 452569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843628</commentid>
    <comment_count>28</comment_count>
      <attachid>452576</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-18 13:41:37 -0800</bug_when>
    <thetext>Created attachment 452576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843634</commentid>
    <comment_count>29</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-18 13:55:44 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #26)
&gt; Comment on attachment 452424 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452424&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/PlatformEnableCocoa.h:169
&gt; &gt; +#define ENABLE_CONTENT_FILTERING_IN_NETWORKING_PROCESS ENABLE_CONTENT_FILTERING
&gt; 
&gt; I&apos;m still not convinced we need this.  I think it ought to be the same
&gt; everywhere.  I don&apos;t see any need to have it different on newer OSes.
&gt; 

The reasoning behind the feature flag is to land with the feature flag off by default, and then enable when we believe there are no regressions. This patch does not enable the feature. After enabling, I expect that the feature flag and obsolete code will be deleted quickly.

&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:279
&gt; &gt; +#if ENABLE(CONTENT_FILTERING_IN_NETWORKING_PROCESS)
&gt; &gt; +void ContentFilter::deliverResourceData(const SharedBuffer&amp; buffer, size_t encodedDataLength)
&gt; &gt; +#else
&gt; &gt;  void ContentFilter::deliverResourceData(CachedResource&amp; resource)
&gt; &gt; +#endif
&gt; 
&gt; I think it would be better to keep the same signature in both cases.
&gt; 

Fixed!

&gt; &gt; Source/WebCore/loader/SubstituteData.h:64
&gt; &gt; +        template&lt;class Decoder&gt; static WARN_UNUSED_RETURN bool decode(Decoder&amp;, SubstituteData&amp;);
&gt; 
&gt; Could you use the modern decoder that returns a
&gt; std::optional&lt;SubstituteData&gt; instead?
&gt; 

Done.

&gt; &gt; Source/WebKit/WebProcess/Network/WebResourceLoader.h:37
&gt; &gt; +#include &lt;WebCore/SubstituteData.h&gt;
&gt; 
&gt; I think this can be a declaration instead of including the whole header.
&gt; 

Fixed.

&gt; &gt; Source/WebKit/WebProcess/Network/WebResourceLoader.messages.in:42
&gt; &gt; +    ContentFilterDidBlockLoad(WebCore::ContentFilterUnblockHandler unblockHandler, String unblockRequestDeniedScript)
&gt; 
&gt; I don&apos;t understand how a ContentFilterUnblockHandler can be serialized when
&gt; it contains a std::function.  Do we just lose that when going to a different
&gt; process?  Is that ok?
&gt; 

Ah, that is a good catch! I have addressed this in the latest patch by calling the function requestUnblockAsync in the Networking process instead.

&gt; &gt; WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:160
&gt; &gt; +      buildConfiguration = &quot;Release&quot;
&gt; 
&gt; This change should probably not be included.
&gt; 
&gt; &gt; WebKit.xcworkspace/xcshareddata/xcschemes/All Tools.xcscheme:99
&gt; &gt; +      buildConfiguration = &quot;Release&quot;
&gt; 
&gt; ditto

Done.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843695</commentid>
    <comment_count>30</comment_count>
      <attachid>452576</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-02-18 16:12:16 -0800</bug_when>
    <thetext>Comment on attachment 452576
Patch

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

r=me

&gt; Source/WebCore/loader/ContentFilter.cpp:122
&gt; +    LOG(ContentFiltering, &quot;ContentFilter will start filtering main resource at &lt;%s&gt;.\n&quot;, url.string().ascii().data());

This is privacy-impacting. I think you need to use the %{sensitive}s logging declaration here.

&gt; Source/WebCore/loader/ContentFilter.cpp:176
&gt; +        LOG(ContentFiltering, &quot;ContentFilter received %zu bytes of data from &lt;%s&gt;.\n&quot;, data.size(), url().string().ascii().data());

Ditto (even though the old code added logging with the secret information).

&gt; Source/WebCore/loader/ContentFilter.cpp:216
&gt; +        LOG(ContentFiltering, &quot;ContentFilter will finish filtering main resource at &lt;%s&gt;.\n&quot;, url().string().ascii().data());

Ditto.

&gt; Source/WebCore/loader/ContentFilter.cpp:271
&gt; +    LOG(ContentFiltering, &quot;ContentFilter decided load should be %s for main resource at &lt;%s&gt;.\n&quot;, state == State::Allowed ? &quot;allowed&quot; : &quot;blocked&quot;, url().string().ascii().data());

Ditto.

&gt; Source/WebCore/loader/ContentFilter.cpp:355
&gt; +    for (unsigned i = 0; i &lt; m_buffers.size(); i++)

It seems like this could be a modern C++ loop:

for (auto&amp; buffer in m_buffers)
    deliverResourceData(*buffer.buffer, buffer.encodedDataLength);

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:1296
&gt; +    shouldFilter = m_contentFilter &amp;&amp; !m_contentFilter-&gt;continueAfterDataReceived(sharedBuffer, m_bufferedDataEncodedDataLength);

Why not:
bool shouldFilter = m_contentFilter .... &lt;&lt;ETC&gt;&gt;

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:614
&gt; +    if (!page)

I&apos;d just do:

if (auto* page = ...
    page-&gt;reload....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843715</commentid>
    <comment_count>31</comment_count>
      <attachid>452606</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-18 16:39:35 -0800</bug_when>
    <thetext>Created attachment 452606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843717</commentid>
    <comment_count>32</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-18 16:41:31 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #30)
&gt; Comment on attachment 452576 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452576&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:122
&gt; &gt; +    LOG(ContentFiltering, &quot;ContentFilter will start filtering main resource at &lt;%s&gt;.\n&quot;, url.string().ascii().data());
&gt; 
&gt; This is privacy-impacting. I think you need to use the %{sensitive}s logging
&gt; declaration here.
&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:176
&gt; &gt; +        LOG(ContentFiltering, &quot;ContentFilter received %zu bytes of data from &lt;%s&gt;.\n&quot;, data.size(), url().string().ascii().data());
&gt; 
&gt; Ditto (even though the old code added logging with the secret information).
&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:216
&gt; &gt; +        LOG(ContentFiltering, &quot;ContentFilter will finish filtering main resource at &lt;%s&gt;.\n&quot;, url().string().ascii().data());
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:271
&gt; &gt; +    LOG(ContentFiltering, &quot;ContentFilter decided load should be %s for main resource at &lt;%s&gt;.\n&quot;, state == State::Allowed ? &quot;allowed&quot; : &quot;blocked&quot;, url().string().ascii().data());
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:355
&gt; &gt; +    for (unsigned i = 0; i &lt; m_buffers.size(); i++)
&gt; 
&gt; It seems like this could be a modern C++ loop:
&gt; 
&gt; for (auto&amp; buffer in m_buffers)
&gt;     deliverResourceData(*buffer.buffer, buffer.encodedDataLength);
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:1296
&gt; &gt; +    shouldFilter = m_contentFilter &amp;&amp; !m_contentFilter-&gt;continueAfterDataReceived(sharedBuffer, m_bufferedDataEncodedDataLength);
&gt; 
&gt; Why not:
&gt; bool shouldFilter = m_contentFilter .... &lt;&lt;ETC&gt;&gt;
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:614
&gt; &gt; +    if (!page)
&gt; 
&gt; I&apos;d just do:
&gt; 
&gt; if (auto* page = ...
&gt;     page-&gt;reload....

I have addressed these issues in the latest patch. Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843731</commentid>
    <comment_count>33</comment_count>
      <attachid>452610</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-18 16:57:48 -0800</bug_when>
    <thetext>Created attachment 452610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843736</commentid>
    <comment_count>34</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-18 17:02:34 -0800</bug_when>
    <thetext>Committed r290189 (247517@trunk): &lt;https://commits.webkit.org/247517@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445721</attachid>
            <date>2021-12-02 08:04:47 -0800</date>
            <delta_ts>2021-12-02 09:07:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211202080446.patch</filename>
            <type>text/plain</type>
            <size>43996</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY0MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIxLTEyLTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBVkRlbGVnYXRpbmdQbGF5
YmFja0Nvb3JkaW5hdG9yIGVycm9yIGNvbXBpbGluZyBvbiBtYWNPUyAxMQpJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYz
LDExIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2lm
ICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEz
MDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDE2MDAwMCkpCisjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZW5kaWYKKwog
I2lmICFkZWZpbmVkKEVOQUJMRV9DT05URVhUX01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2RlZmluZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5ldHdv
cmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZp
bHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyQnVmZmVycyk6CisgICAgICAgICogbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpk
ZXRhY2hGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0
TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y2xlYXJNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmJl
Y29tZU1haW5SZXNvdXJjZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZCk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBv
bGljeSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cjo6aXNSZXF1aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlcjo6ZW5hYmxlZCk6CisKIDIwMjEtMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBQb3J0IGNhbGwgc2l0ZXMgdG8gU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6aWRlbnRpZmllcigpIGFuZCBkcm9wIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNv
bnRleHRJZGVudGlmaWVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzMwNSw3ICszMzA1LDcgQEAKIAkJQTE0ODMyQ0MxODdGNjdDNDAwREE2M0E2IC8qIFdlYkNvcmVU
aHJlYWRSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNDgzMjlFMTg3RjUwODcwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkUnVuLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0ODMyQ0YxODdGNjg0
NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMkExMTg3RjUwODcwMERBNjNB
NiAvKiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTFEQTMxRjg1OUQ4NzAwOTVGNUQ0IC8q
IFBheW1lbnRTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTQ5MURBMjFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCAqLzsg
fTsKLQkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgw
MENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IH07CisJCUExNDk3ODZGMUFCQUYzMzgwMENF
RjdFNCAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNDk3
ODcxMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODcwMUFCQUYzQTUwMENF
RjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTRCQjBBMDFGOTgxM0I4MDA2MDVBMzUgLyogTW9j
a1BheW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNEJCMDlFMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovOyB9OwogCQlBMTVE
NzUxNjFFNjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxMzFFNjhGN0IxMDBBMzVGQkMgLyog
QmxvYkNhbGxiYWNrLmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTggQEAgYm9vbCBD
b250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyV2lsbFNlbgogICAgIHJldHVybiAhcmVxdWVzdC5p
c051bGwoKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNl
KGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0
ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgdXJsLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkZpbHRlcmluZzsK
KyAgICBBU1NFUlQobV9tYWluUmVzb3VyY2VVUkwuaXNFbXB0eSgpKTsKKyAgICBtX21haW5SZXNv
dXJjZVVSTCA9IHVybDsKK30KKyNlbHNlCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVy
aW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICBpZiAo
bV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTEyMywxMiArMTM1LDE3IEBAIHZvaWQgQ29u
dGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NFUlQoIW1fbWFpblJlc291
cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0KKyNlbmRpZgogCiB2b2lk
IENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKQogewogICAgIGlmICht
X3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN0b3Bw
ZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBtX21haW5SZXNvdXJjZVVSTCA9IFVSTCgpOworI2Vsc2UKICAgICBtX21haW5SZXNvdXJj
ZSA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAg
LTE0NSw0MSArMTYyLDc5IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3Bv
bnMKICAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyNlbHNlCiBib29sIENvbnRlbnRGaWx0ZXI6
OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKKyNlbmRpZgogeworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogY29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZCIpOwogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90
ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZp
bHRlcmluZykgewotICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIg
cmVjZWl2ZWQgJWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5ndGgsIG1fbWFpblJl
c291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgY29uc3QgVVJMJiB1
cmwgPSBtX21haW5SZXNvdXJjZVVSTDsKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGVu
Y29kZWREYXRhTGVuZ3RoLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBm
b3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1d
KFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgY29u
dGVudEZpbHRlci5hZGREYXRhKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAg
ICAgIH0pOworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgeworICAgICAg
ICAgICAgZGVsaXZlckJ1ZmZlcnMoKTsKKyAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEo
YnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBtX2J1ZmZlcnMuYXBwZW5kKFJlZlB0ciB7ICZidWZmZXIgfSk7CisgICAgICAgICAgICBtX2Vu
Y29kZWREYXRhTGVuZ3Rocy5hcHBlbmQoZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICB9Cisj
ZWxzZQorICAgICAgICBjb25zdCBVUkwmIHVybCA9IG1fbWFpblJlc291cmNlLT51cmwoKTsKKyAg
ICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICVkIGJ5
dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSwg
bGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKICAgICAgICAg
ICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOwogICAgICAgICB9KTsKLQog
ICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkKICAgICAgICAgICAgIGRlbGl2
ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3QgVVJM
JiByZXNvdXJjZVVSTCkKKyNlbHNlCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOworICAg
IFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogY29udGludWVBZnRlck5vdGlmeUZpbmlz
aGVkIik7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1f
Y2xpZW50IH07Ci0KKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZVVSTCk7CisvLyAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNvdXJjZVVSTCk7CisjZWxz
ZQorICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJj
ZSk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOworI2VuZGlmCiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5n
KSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZp
bmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVzb3VyY2Ut
PnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBjb25zdCBVUkwmIHVybCA9IG1f
bWFpblJlc291cmNlVVJMOworI2Vsc2UKKyAgICAgICAgY29uc3QgVVJMJiB1cmwgPSBtX21haW5S
ZXNvdXJjZS0+dXJsKCk7CisjZW5kaWYKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4u
XG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29udGVu
dEZpbHRlclVudGlsQmxvY2tlZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0
ZXIpIHsKICAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CiAg
ICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG93ZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgICAgIGRlbGl2ZXJCdWZm
ZXJzKCk7CisjZWxzZQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWluUmVz
b3VyY2UpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6U3RvcHBlZCkKQEAgLTIwNiw4ICsyNjEsMTAgQEAgaW5saW5lIHZvaWQgQ29udGVudEZpbHRl
cjo6Zm9yRWFjaENvbnRlbgogICAgICAgICAgICAgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgPSAm
Y29udGVudEZpbHRlcjsKICAgICAgICAgICAgIGRpZERlY2lkZShTdGF0ZTo6QmxvY2tlZCk7CiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoY29udGVudEZpbHRlci0+bmVl
ZHNNb3JlRGF0YSgpKQorICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRGaWx0ZXItPm5lZWRzTW9y
ZURhdGEoKSkgeworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBu
ZWVkcyBtb3JlIGRhdGEiKTsKICAgICAgICAgICAgIGFsbEZpbHRlcnNBbGxvd2VkTG9hZCA9IGZh
bHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGFsbEZpbHRlcnNBbGxvd2VkTG9hZCkK
QEAgLTIxOSw3ICsyNzYsMTMgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUg
c3RhdAogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQo
bV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCk7CiAgICAgQVNTRVJUKHN0YXRlID09IFN0YXRlOjpB
bGxvd2VkIHx8IHN0YXRlID09IFN0YXRlOjpCbG9ja2VkKTsKLSAgICBMT0coQ29udGVudEZpbHRl
cmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3IgbWFpbiBy
ZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAiYWxsb3dlZCIg
OiAiYmxvY2tlZCIsIG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLmFzY2lpKCkuZGF0YSgpIDogIiIpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcgPSBtX21h
aW5SZXNvdXJjZVVSTC5zdHJpbmcoKTsKKyNlbHNlCisgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcgPSBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKSA6IGVt
cHR5U3RyaW5nKCk7CisjZW5kaWYKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRG
aWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+
LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIHVy
bFN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5z
aW9uOiBDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVz
b3VyY2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDog
ImJsb2NrZWQiLCB1cmxTdHJpbmcuYXNjaWkoKS5kYXRhKCkpOwogICAgIG1fc3RhdGUgPSBzdGF0
ZTsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjI4LDEyICsyOTEsMjAgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUg
c3RhdAogICAgIG1fY2xpZW50LmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVy
KG1fYmxvY2tlZEVycm9yKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
KyNlbHNlCiB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisjZWxzZQogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRh
QnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAg
ICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkK
ICAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3Vy
Y2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisjZW5kaWYKIH0KIAog
c3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpAQCAtMjQ1LDYgKzMxNiw3IEBAIHN0
YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKICAgICByZXR1cm4gYmxvY2tlZFBhZ2VV
Ukw7CiB9CiAKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVx
dWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRl
RGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgaWYgKGF1dG8gY29udGVudEZpbHRlciA9IGFj
dGl2ZUxvYWRlci5jb250ZW50RmlsdGVyKCkpIHsKQEAgLTI1OSw2ICszMzEsNyBAQCBib29sIENv
bnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
KyNlbmRpZgogCiBib29sIENvbnRlbnRGaWx0ZXI6OndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBjb25zdAogewpAQCAtMjgzLDYgKzM1
NiwxNiBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hCiAgICAgbV9j
bGllbnQuaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2Nr
ZWRQYWdlVVJMKCksIHN1YnN0aXR1dGVEYXRhKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJCdWZmZXJzKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9idWZmZXJzLnNp
emUoKTsgaSsrKQorICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX2J1ZmZlcnNbaV0sIG1f
ZW5jb2RlZERhdGFMZW5ndGhzW2ldKTsKKyAgICBtX2J1ZmZlcnMuY2xlYXIoKTsKKyAgICBtX2Vu
Y29kZWREYXRhTGVuZ3Rocy5jbGVhcigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTgg
KzUwLDI3IEBAIGNsYXNzIENvbnRlbnRGaWx0ZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBhZGRUeXBlKCkgeyB0eXBlcygpLmFwcGVuZCh0eXBlPFQ+
KCkpOyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0
ZShDb250ZW50RmlsdGVyQ2xpZW50Jik7Ci0gICAgfkNvbnRlbnRGaWx0ZXIoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZShD
b250ZW50RmlsdGVyQ2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkNvbnRlbnRGaWx0ZXIo
KTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVybiAieC1hcHBs
ZS1jb250ZW50LWZpbHRlciI7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZpbHRlcmlu
Z01haW5SZXNvdXJjZShjb25zdCBVUkwmKTsKKyNlbHNlCiAgICAgdm9pZCBzdGFydEZpbHRlcmlu
Z01haW5SZXNvdXJjZShDYWNoZWRSYXdSZXNvdXJjZSYpOwotICAgIHZvaWQgc3RvcEZpbHRlcmlu
Z01haW5SZXNvdXJjZSgpOworI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRmls
dGVyaW5nTWFpblJlc291cmNlKCk7CiAKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJv
b2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJl
c291cmNlVVJMKTsKKyNlbHNlCiAgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIGJvb2wgY29udGludWVBZnRlck5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7CisjZW5kaWYKIAogICAgIHN0YXRpYyBib29s
IGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXIm
IGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdpbGxIYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsKQEAg
LTgyLDExICs5MSwyMiBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
aW9uPiB2b2lkIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKEZ1bmN0aW9uJiYpOwog
ICAgIHZvaWQgZGlkRGVjaWRlKFN0YXRlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGVs
aXZlckJ1ZmZlcnMoKTsKKyNlbHNlCiAgICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hl
ZFJlc291cmNlJik7Ci0KKyNlbmRpZgorICAgIAogICAgIENvbnRhaW5lciBtX2NvbnRlbnRGaWx0
ZXJzOwogICAgIENvbnRlbnRGaWx0ZXJDbGllbnQmIG1fY2xpZW50OworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVVJMIG1fbWFpblJlc291
cmNlVVJMOworICAgIFZlY3RvcjxSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPj4gbV9idWZmZXJz
OworICAgIFZlY3RvcjxzaXplX3Q+IG1fZW5jb2RlZERhdGFMZW5ndGhzOworI2Vsc2UKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7Cisj
ZW5kaWYKICAgICBjb25zdCBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdDb250ZW50
RmlsdGVyIHsgbnVsbHB0ciB9OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3RvcHBlZCB9
OwogICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQg
ewpAQCAtNDEsNyArNDIsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2aXJ0dWFsIHZv
aWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwg
c2l6ZV90KSA9IDA7CisjZWxzZQogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdo
Q29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisjZW5kaWYKICAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
IFN1YnN0aXR1dGVEYXRhJikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDcgQEAgYm9v
bCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nKCkgY29uc3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAg
aWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90
aWZ5RmluaXNoZWQocmVzb3VyY2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTcxMyw3
ICs3MTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAg
ICAgIG5ld1JlcXVlc3Quc2V0VVJMKFdURk1vdmUodXJsKSk7CiAgICAgfQogCi0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1f
Y29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRS
ZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAjZW5kaWYKQEAgLTkxMSw3ICs5
MTEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgQVNT
RVJUKHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpKTsKICAgICBDb21wbGV0aW9uSGFuZGxlckNh
bGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCkBAIC0xMzI3LDcgKzEzMjcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYg
IW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgp
KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTE0NTUsNyArMTQ1NSw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAgc3RvcExvYWRpbmcoKTsKICAgICBp
ZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAg
ICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5S
ZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMDE3LDcgKzIwMTcsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBt
X2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgPyBDb250ZW50Rmls
dGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKICNlbmRpZgogCkBAIC0yMjE5LDcgKzIyMTks
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSgpCiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3Vy
Y2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGll
bnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZp
bHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMzUwLDcgKzIz
NTAsNyBAQCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IERvY3VtZW50TG9hCiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpCiB7Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1f
Y29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZpbHRlcmluZ01h
aW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2UpOwogI2VuZGlmCkBAIC0yNDA4LDkgKzI0MDgsMTAg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5UG9saQogfQogCiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCisjaWYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIGludCBzaXplKQogewotICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsK
KyAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyLCBzaXplKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRl
cjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCkBAIC0yNDI1LDYgKzI0MjYsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
aGFuZGxlUHJvdmlzaW9uYWxMbwogCiBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250
ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5k
bGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKKyAgICByZXR1cm4g
aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cit9CisjZW5kaWYgLy8gIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKK1Jlc291cmNlRXJyb3IgRG9jdW1lbnRM
b2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KQorewogICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkp
OwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1l
KCkpIHsKICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3Nj
cmlwdENvbnRyb2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0KCkgfSwgc2NyaXB0ID0g
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2Vk
KSB7CkBAIC0yNDM1LDcgKzI0NDIsNyBAQCBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpj
b250ZW50RmlsCiAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJs
b2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVy
KCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOwogfQotI2VuZGlmIC8v
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNlbmRpZgogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpzZXRBY3RpdmVDb250ZW50UnVsZUxpc3RBY3Rpb25QYXR0ZXJucyhjb25zdCBzdGQ6Om9wdGlv
bmFsPEhhc2hTZXQ8U3RyaW5nPj4mIHBhdHRlcm5zKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDcg
QEAgY2xhc3MgRG9jdW1lbnRMb2FkZXIKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50
TG9hZGVyPgogICAgICwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVi
bGljIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKICAgICAsIHB1YmxpYyBDb250ZW50RmlsdGVyQ2xpZW50CiAjZW5kaWYKICAgICAsIHByaXZh
dGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgewpAQCAtMzg2LDEwICszODYsMTMgQEAgcHVibGlj
OgogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeVRvUHJvcGFnYXRlKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgQ29udGVudEZpbHRlciogY29udGVudEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudEZpbHRlci5nZXQoKTsgfQogICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3Vu
dGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmlu
YWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlmCisgICAg
V0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2so
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCk7CisjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9u
LCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRC
dWZmZXIqKT4mJik7CkBAIC00ODYsNyArNDg5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgIC8vIENvbnRlbnRGaWx0ZXJDbGllbnQKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVudEZp
bHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwpAQCAtNjM3LDcgKzY0MCw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PiBtX2FwcGxpY2F0aW9u
Q2FjaGVIb3N0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1f
Y29udGVudFNlY3VyaXR5UG9saWN5OwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0
ZXI+IG1fY29udGVudEZpbHRlcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTcsNyArMjQ1Nyw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKIHsKICAgICBtX3Byb3Zpc2lv
bmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci51
cmwoKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogICAgIGF1dG8gY29udGVudEZpbHRlciA9IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIuY29udGVudEZpbHRlcigpOwogICAgIGF1dG8gY29udGVudEZpbHRlcldpbGxDb250aW51ZUxv
YWRpbmcgPSBmYWxzZTsKICNlbmRpZgpAQCAtMjQ2NSw3ICsyNDY1LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAgIGF1dG8gd2lsbENvbnRpbnVlTG9hZGlu
ZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6Ok5vOwogICAgIGlmIChoaXN0b3J5KCkucHJvdmlzaW9u
YWxJdGVtKCkpCiAgICAgICAgIHdpbGxDb250aW51ZUxvYWRpbmcgPSBXaWxsQ29udGludWVMb2Fk
aW5nOjpZZXM7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgaWYgKGNvbnRlbnRGaWx0ZXIgJiYgY29udGVudEZpbHRlci0+d2lsbEhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKSB7CiAgICAgICAgIHdpbGxDb250aW51
ZUxvYWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5nOjpZZXM7CiAgICAgICAgIGNvbnRlbnRGaWx0
ZXJXaWxsQ29udGludWVMb2FkaW5nID0gdHJ1ZTsKQEAgLTI0NzQsNyArMjQ3NCw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKIAogICAgIG1fY2xpZW50LT5kaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoZXJyb3IsIHdpbGxDb250aW51ZUxvYWRpbmcpOwog
Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgaWYgKGNvbnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nKQogICAgICAgICBjb250
ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gMjg2
MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tl
cjo6Y2hlY2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbG9hZGVyLT5zdWJzdGl0dXRl
RGF0YSgpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgIXN1YnN0aXR1dGVE
YXRhLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgYm9vbCBzaG91bGRDb250aW51
ZSA9IHRydWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgICAgIGlmIChhdXRvIGxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdCgqbG9hZGVyLCBzdWJz
dGl0dXRlRGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCShy
ZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSw3
IEBAIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmhhbmQKIAogYm9vbCBOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6aXNSZXF1aXJlZCgpCiB7CisgICAgV1RGTG9nQWx3
YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBpc1JlcXVpcmVkICVkIiwgW05FRmlsdGVyU291cmNlIGZp
bHRlclJlcXVpcmVkXSk7CiAgICAgcmV0dXJuIFtORUZpbHRlclNvdXJjZSBmaWx0ZXJSZXF1aXJl
ZF07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCShyZXZpc2lvbiAyODYw
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBib29sIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjplbmFiCiAjZWxzZQogICAgIGJvb2wgZW5hYmxlZCA9
IFtnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFzcygpIGlzTWFuYWdlZFNlc3Npb25dOwogI2VuZGlm
CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBlbmFibGVkICVkIiwgZW5hYmxl
ZCk7CiAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlciBpcyAlcy5cbiIsIGVuYWJsZWQgPyAiZW5hYmxlZCIgOiAibm90IGVuYWJsZWQiKTsKICAg
ICByZXR1cm4gZW5hYmxlZDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODY0MTIpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisy
MDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmlu
Z1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNl
bmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRS
ZXN1bHRGb3JDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9y
Q29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluOgorCiAyMDIxLTEyLTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CiAKICAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1vcnkgZnJvbSBhIFNoYXJl
ZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAy
ODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9QcmV2aWV3Q29udmVydGVyLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50
RmlsdGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIu
aD4KKyNlbmRpZgorCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFT
RV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9
JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIs
IGlzTWFpblJlc291cmNlPSVkLCBkZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0
d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94
eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9V
SW50NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1l
dGVycy5vcHRpb25zLmRlc3RpbmF0aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19f
KQogI2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlE
PSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJv
eHlJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRv
VUludDY0KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFt
ZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1Nf
XykKIApAQCAtMzAyLDYgKzMwNywxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0
cmlldmVDYWNoCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsKICAgICBMT0FERVJf
UkVMRUFTRV9MT0coInN0YXJ0TmV0d29ya0xvYWQ6IChpc0ZpcnN0TG9hZD0lZCwgdGltZW91dD0l
ZikiLCBsb2FkID09IEZpcnN0TG9hZDo6WWVzLCByZXF1ZXN0LnRpbWVvdXRJbnRlcnZhbCgpKTsK
KworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlciA9IENvbnRl
bnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRp
bnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQorICAgICAgICBtX2NvbnRl
bnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOworI2Vu
ZGlmCisKICAgICBpZiAobG9hZCA9PSBGaXJzdExvYWQ6OlllcykgewogICAgICAgICBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKIApAQCAtNzA0LDYgKzcxOSwxMSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlCiB7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlUmVzcG9uc2U6IChodHRwU3RhdHVzQ29kZT0lZCwgTUlNRVR5cGU9JSIgUFVCTElD
X0xPR19TVFJJTkcgIiwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoPSUiIFBSSWQ2NCAiLCBoYXNDYWNo
ZWRFbnRyeUZvclZhbGlkYXRpb249JWQsIGhhc05ldHdvcmtMb2FkQ2hlY2tlcj0lZCkiLCByZWNl
aXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UubWltZVR5cGUo
KS51dGY4KCkuZGF0YSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgp
LCAhIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24sICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwog
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKHJlY2VpdmVkUmVzcG9uc2UpKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworI2VuZGlmCisKICAgICBpZiAoaXNN
YWluUmVzb3VyY2UoKSkKICAgICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJl
Y2VpdmVkUmVzcG9uc2UpOwogCkBAIC05MTUsNiArOTM1LDExIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVh
bCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCiAgICAgICAg
ICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOwogICAgICAgICB9CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYg
KG1fY29udGVudEZpbHRlcikKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVB
ZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyNlbmRpZgor
CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNv
dXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xMDA0LDYgKzEwMjks
MTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaQogICAgIGlmICgh
bV9maXJzdFJlc3BvbnNlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgbV9maXJzdFJlc3BvbnNlVVJM
ID0gcmVkaXJlY3RSZXNwb25zZS51cmwoKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9j
b250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE+IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBp
ZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzdWx0
ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1
ZXN0KHJlZGlyZWN0UmVxdWVzdC51cmwoKSkpCkBAIC0xMDk4LDYgKzExMjgsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBMT0FERVJfUkVM
RUFTRV9MT0coImRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlOiIpOworICAgIFdURkxvZ0Fs
d2F5cygiTmV0d29ya0V4dGVuc2lvbjogZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2UiKTsK
ICAgICByZWRpcmVjdFJlc3BvbnNlLnNldFR5cGUoUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6T3Bh
cXVlcmVkaXJlY3QpOwogICAgIGlmICghaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAg
IGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBbXSAoYXV0bykg
eyB9KTsKQEAgLTEyNjAsNyArMTI5MSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
YnVmZmVyaW5nVGltCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNl
aXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoKSk7CisgICAgYm9vbCBzaG91bGRGaWx0ZXIgPSBmYWxzZTsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHNob3VsZEZpbHRlciA9IG1f
Y29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2Vp
dmVkKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0
aCk7CisjZW5kaWYKKyAgICBpZiAoIXNob3VsZEZpbHRlcikKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0s
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAogICAgIG1fYnVmZmVyZWREYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRh
TGVuZ3RoID0gMDsKQEAgLTEyNzAsNiArMTMwNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c2VuZEJ1ZmZlcihTCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRh
UmVjZWl2ZWQoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyNl
bmRpZgorCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVE
YXRhKHsgYnVmZmVyIH0sIGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKQEAgLTEzNjQsNiArMTQw
NSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUMKIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gZW50cnkpCiB7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeToiKTsKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtF
eHRlbnNpb246IHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5Iik7CiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKICAgICBpZiAoIWVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpLmlz
TnVsbCgpKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlUmVzb3VyY2UoZW50cnktPnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKCkpKTsKQEAgLTEz
ODksNiArMTQzMSwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZv
CiAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keURlY29kZWRTaXplID0gMDsKIAog
ICAgIHNlbmRCdWZmZXIoKmVudHJ5LT5idWZmZXIoKSwgZW50cnktPmJ1ZmZlcigpLT5zaXplKCkp
OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgaWYgKG1fY29udGVudEZpbHRlcikKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51
ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworI2VuZGlm
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNl
TG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKIH0KIApAQCAtMTcwNSw2ICsxNzUxLDMyIEBAIGJv
b2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0FwcEluaXRpYXQKICAgICByZXR1cm4gbV9wYXJh
bWV0ZXJzLnJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBXVEZMb2dBbHdheXMo
Ik5ldHdvcmtFeHRlbnNpb246IGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyIik7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKGJ1ZmZl
ciwgZW5jb2RlZERhdGFMZW5ndGgpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjog
Y29udGVudEZpbHRlckRpZEJsb2NrIik7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlJlc291cmNlRXJyb3Io
KTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQor
eworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogY2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIiKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6Q2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoZXJyb3IpKTsKK30K
Kwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSYpCit7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIExPQURFUl9SRUxFQVNFX0xPRwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTQzLDYgKzQ0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOworY2xhc3MgQ29udGVudEZp
bHRlcjsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNzAsNiArNzIsOSBAQCBjbGFzcyBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIgZmluYWwKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKICAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpDb250ZW50RmlsdGVyQ2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNo
cm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmIHJlcGx5ID0gbnVsbHB0cikKQEAgLTkwLDcgKzk1LDcg
QEAgcHVibGljOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZl
TmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKTsKIAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscyk7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CiAKICAg
ICB2b2lkIHNldFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkg
eyBtX3Jlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0K
QEAgLTE1MSw2ICsxNTYsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgp
OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VM
b2FkZXI+OjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50
ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPjo6ZGVyZWYoKTsgfQorI2VuZGlmCisKIHByaXZhdGU6
CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYp
OwogCkBAIC0xNTgsNiArMTY4LDE0IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKTsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImLCBzaXplX3QpIGZpbmFsOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgY29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOworICAgIHZv
aWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuVXNlQ2FjaGUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAgICAgYm9vbCBjYW5Vc2VD
YWNoZWRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIApA
QCAtMjU5LDYgKzI3NywxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9yZWRpcmVjdFJlc3BvbnNlOwogICAgIFVSTCBtX2ZpcnN0UmVzcG9uc2VVUkw7IC8vIEZp
cnN0IFVSTCBpbiByZXNwb25zZSdzIFVSTCBsaXN0IChodHRwczovL2ZldGNoLnNwZWMud2hhdHdn
Lm9yZy8jY29uY2VwdC1yZXNwb25zZS11cmwtbGlzdCkuCiAgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBtX2N1cnJlbnRD
b29wRW5mb3JjZW1lbnRSZXN1bHQ7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50
RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjIsNiArMzIyLDIyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNvdXIKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRC
bG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJs
b2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAg
aWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxl
Q29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0KSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1h
aW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOworfQorI2VuZGlmIC8v
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsNyBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgTmV0d29ya0xvYWRN
ZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwpAQCAt
OTMsNiArOTQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZShjb25z
dCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBjb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyAgICB2b2lkIGNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKKyNlbmRpZgorICAgIAogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cj4gbV9jb3JlTG9hZGVyOwogICAgIFRyYWNraW5nUGFyYW1ldGVycyBtX3RyYWNraW5nUGFyYW1l
dGVyczsKICAgICBXZWJSZXNvdXJjZUludGVyY2VwdENvbnRyb2xsZXIgbV9pbnRlcmNlcHRDb250
cm9sbGVyOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NjAy
NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw0ICszNywxMCBAQCBtZXNzYWdlcyAt
PiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAgICAgLy8gRGlkUmVjZWl2ZVJlc291cmNl
IGlzIGZvciB3aGVuIHdlIGhhdmUgdGhlIGVudGlyZSByZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBh
dCBvbmNlLCBzdWNoIGFzIHdoZW4gdGhlIHJlc291cmNlIGlzIGNhY2hlZCBpbiBtZW1vcnkKICAg
ICBEaWRSZWNlaXZlUmVzb3VyY2UoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJl
c291cmNlKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQpCisgICAgQ2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRG
aWx0ZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyNlbmRpZgorCiB9Cg==
</data>
<flag name="commit-queue"
          id="470955"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445723</attachid>
            <date>2021-12-02 08:58:53 -0800</date>
            <delta_ts>2021-12-02 14:56:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211202085852.patch</filename>
            <type>text/plain</type>
            <size>43791</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY0MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIxLTEyLTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBVkRlbGVnYXRpbmdQbGF5
YmFja0Nvb3JkaW5hdG9yIGVycm9yIGNvbXBpbGluZyBvbiBtYWNPUyAxMQpJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYz
LDExIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2lm
ICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEz
MDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDE2MDAwMCkpCisjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZW5kaWYKKwog
I2lmICFkZWZpbmVkKEVOQUJMRV9DT05URVhUX01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2RlZmluZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5ldHdv
cmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZp
bHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyQnVmZmVycyk6CisgICAgICAgICogbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpk
ZXRhY2hGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0
TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y2xlYXJNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmJl
Y29tZU1haW5SZXNvdXJjZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZCk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBv
bGljeSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cjo6aXNSZXF1aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlcjo6ZW5hYmxlZCk6CisKIDIwMjEtMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBQb3J0IGNhbGwgc2l0ZXMgdG8gU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6aWRlbnRpZmllcigpIGFuZCBkcm9wIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNv
bnRleHRJZGVudGlmaWVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzMwNSw3ICszMzA1LDcgQEAKIAkJQTE0ODMyQ0MxODdGNjdDNDAwREE2M0E2IC8qIFdlYkNvcmVU
aHJlYWRSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNDgzMjlFMTg3RjUwODcwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkUnVuLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0ODMyQ0YxODdGNjg0
NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMkExMTg3RjUwODcwMERBNjNB
NiAvKiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTFEQTMxRjg1OUQ4NzAwOTVGNUQ0IC8q
IFBheW1lbnRTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTQ5MURBMjFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCAqLzsg
fTsKLQkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgw
MENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IH07CisJCUExNDk3ODZGMUFCQUYzMzgwMENF
RjdFNCAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNDk3
ODcxMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODcwMUFCQUYzQTUwMENF
RjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTRCQjBBMDFGOTgxM0I4MDA2MDVBMzUgLyogTW9j
a1BheW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNEJCMDlFMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovOyB9OwogCQlBMTVE
NzUxNjFFNjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxMzFFNjhGN0IxMDBBMzVGQkMgLyog
QmxvYkNhbGxiYWNrLmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTggQEAgYm9vbCBD
b250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyV2lsbFNlbgogICAgIHJldHVybiAhcmVxdWVzdC5p
c051bGwoKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNl
KGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0
ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgdXJsLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkZpbHRlcmluZzsK
KyAgICBBU1NFUlQobV9tYWluUmVzb3VyY2VVUkwuaXNFbXB0eSgpKTsKKyAgICBtX21haW5SZXNv
dXJjZVVSTCA9IHVybDsKK30KKyNlbHNlCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVy
aW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICBpZiAo
bV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTEyMywxMiArMTM1LDE3IEBAIHZvaWQgQ29u
dGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NFUlQoIW1fbWFpblJlc291
cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0KKyNlbmRpZgogCiB2b2lk
IENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKQogewogICAgIGlmICht
X3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN0b3Bw
ZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBtX21haW5SZXNvdXJjZVVSTCA9IFVSTCgpOworI2Vsc2UKICAgICBtX21haW5SZXNvdXJj
ZSA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAg
LTE0NSw0MSArMTYyLDc3IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3Bv
bnMKICAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyNlbHNlCiBib29sIENvbnRlbnRGaWx0ZXI6
OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKKyNlbmRpZgogeworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogY29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZCIpOwogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90
ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZp
bHRlcmluZykgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNl
aXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBlbmNvZGVkRGF0YUxlbmd0aCwg
bV9tYWluUmVzb3VyY2VVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBmb3JF
YWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKFBs
YXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgY29udGVu
dEZpbHRlci5hZGREYXRhKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
IH0pOworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgeworICAgICAgICAg
ICAgZGVsaXZlckJ1ZmZlcnMoKTsKKyAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X2J1ZmZlcnMuYXBwZW5kKFJlZlB0ciB7ICZidWZmZXIgfSk7CisgICAgICAgICAgICBtX2VuY29k
ZWREYXRhTGVuZ3Rocy5hcHBlbmQoZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICB9CisjZWxz
ZQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQg
JWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5ndGgsIG1fbWFpblJlc291cmNlLT51
cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGZvckVhY2hDb250ZW50Rmls
dGVyVW50aWxCbG9ja2VkKFtkYXRhLCBsZW5ndGhdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29u
dGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEsIGxl
bmd0aCk7CiAgICAgICAgIH0pOwotCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxv
d2VkKQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWluUmVzb3VyY2UpOwor
I2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gbV9zdGF0
ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKQorI2Vsc2UKIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKKyNlbmRpZgogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBj
b250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQiKTsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVu
dD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVU5VU0VEX1BBUkFNKHJlc291cmNl
VVJMKTsKKy8vICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2VVUkwsIHJlc291cmNlVVJMID09IG1f
bWFpblJlc291cmNlVVJMKTsKKyNlbHNlCisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJl
c291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIAogICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcs
ICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwl
cz4uXG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
ICAgIGNvbnN0IFVSTCYgdXJsID0gbV9tYWluUmVzb3VyY2VVUkw7CisjZWxzZQorICAgICAgICBj
b25zdCBVUkwmIHVybCA9IG1fbWFpblJlc291cmNlLT51cmwoKTsKKyNlbmRpZgorICAgICAgICBM
T0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5n
IG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIHVybC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtdKFBsYXRmb3JtQ29u
dGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5m
aW5pc2hlZEFkZGluZ0RhdGEoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OkJsb2NrZWQpIHsKICAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb3dl
ZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgICAgICAgICAgZGVsaXZlckJ1ZmZlcnMoKTsKKyNlbHNlCiAgICAgICAgICAgICBkZWxpdmVy
UmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJjZSk7CisjZW5kaWYKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVkKQpAQCAtMjA2LDggKzI1OSwxMCBAQCBp
bmxpbmUgdm9pZCBDb250ZW50RmlsdGVyOjpmb3JFYWNoQ29udGVuCiAgICAgICAgICAgICBtX2Js
b2NraW5nQ29udGVudEZpbHRlciA9ICZjb250ZW50RmlsdGVyOwogICAgICAgICAgICAgZGlkRGVj
aWRlKFN0YXRlOjpCbG9ja2VkKTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNl
IGlmIChjb250ZW50RmlsdGVyLT5uZWVkc01vcmVEYXRhKCkpCisgICAgICAgIH0gZWxzZSBpZiAo
Y29udGVudEZpbHRlci0+bmVlZHNNb3JlRGF0YSgpKSB7CisgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIk5ldHdvcmtFeHRlbnNpb246IG5lZWRzIG1vcmUgZGF0YSIpOwogICAgICAgICAgICAgYWxs
RmlsdGVyc0FsbG93ZWRMb2FkID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
YWxsRmlsdGVyc0FsbG93ZWRMb2FkKQpAQCAtMjE5LDcgKzI3NCwxMyBAQCB2b2lkIENvbnRlbnRG
aWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6
OkFsbG93ZWQpOwogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKTsKICAgICBB
U1NFUlQoc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgfHwgc3RhdGUgPT0gU3RhdGU6OkJsb2NrZWQp
OwotICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQg
c2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0
ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwgbV9tYWluUmVzb3VyY2UgPyBtX21h
aW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkgOiAiIik7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBjb25zdCBT
dHJpbmcmIHVybFN0cmluZyA9IG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpOworI2Vsc2UKKyAg
ICBjb25zdCBTdHJpbmcmIHVybFN0cmluZyA9IG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpIDogZW1wdHlTdHJpbmcoKTsKKyNlbmRpZgorICAgIExPRyhDb250
ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZv
ciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJh
bGxvd2VkIiA6ICJibG9ja2VkIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBXVEZM
b2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IENvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNo
b3VsZCBiZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIHVybFN0cmluZy5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9j
a2VkKQogICAgICAgICByZXR1cm47CkBAIC0yMjgsMTIgKzI4OSwyMCBAQCB2b2lkIENvbnRlbnRG
aWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiAgICAgbV9jbGllbnQuY2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIobV9ibG9ja2VkRXJyb3IpOwogfQogCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZp
bHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZl
clJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRU
aHJvdWdoQ29udGVudEZpbHRlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbHNlCiAg
ICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNv
dXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQogICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgp
CkBAIC0yNDUsNiArMzE0LDcgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQog
ICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsKIH0KIAorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51
ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVM
b2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBpZiAo
YXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpAQCAt
MjU5LDYgKzMyOSw3IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXQK
IAogICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6d2ls
bEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
IGNvbnN0CiB7CkBAIC0yODMsNiArMzU0LDE2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6aGFuZGxl
UHJvdmlzaW9uYWxMb2EKICAgICBtX2NsaWVudC5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwoKSwgc3Vic3RpdHV0ZURhdGEpOwogfQog
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3Zv
aWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlckJ1ZmZlcnMoKQoreworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2J1ZmZlcnMuc2l6ZSgpOyBpKyspCisgICAgICAgIGRlbGl2ZXJSZXNvdXJj
ZURhdGEoKm1fYnVmZmVyc1tpXSwgbV9lbmNvZGVkRGF0YUxlbmd0aHNbaV0pOworICAgIG1fYnVm
ZmVycy5jbGVhcigpOworICAgIG1fZW5jb2RlZERhdGFMZW5ndGhzLmNsZWFyKCk7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCShyZXZp
c2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCwxOCArNTAsMjcgQEAgY2xhc3MgQ29udGVudEZpbHRlciB7CiBw
dWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFkZFR5cGUoKSB7
IHR5cGVzKCkuYXBwZW5kKHR5cGU8VD4oKSk7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKLSAgICB+Q29u
dGVudEZpbHRlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB+Q29udGVudEZpbHRlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNj
aGVtZSgpIHsgcmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQogCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOworI2Vsc2UK
ICAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7
Ci0gICAgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisjZW5kaWYKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAotICAgIGJvb2wg
Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51
ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29u
dGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlck5vdGlm
eUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpOworI2Vsc2UKICAgICBib29sIGNvbnRp
bnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CiAg
ICAgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyNl
bmRpZgogCiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVz
dChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYpOwogICAgIGJvb2wgd2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVz
b3VyY2VFcnJvciYpIGNvbnN0OwpAQCAtODIsMTEgKzkxLDIyIEBAIHByaXZhdGU6CiAKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRp
bEJsb2NrZWQoRnVuY3Rpb24mJik7CiAgICAgdm9pZCBkaWREZWNpZGUoU3RhdGUpOworI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBk
ZWxpdmVyUmVzb3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgdm9pZCBkZWxpdmVyQnVmZmVycygpOworI2Vsc2UKICAgICB2b2lkIGRl
bGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmKTsKLQorI2VuZGlmCisgICAgCiAgICAg
Q29udGFpbmVyIG1fY29udGVudEZpbHRlcnM7CiAgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9j
bGllbnQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICBVUkwgbV9tYWluUmVzb3VyY2VVUkw7CisgICAgVmVjdG9yPFJlZlB0cjxjb25zdCBT
aGFyZWRCdWZmZXI+PiBtX2J1ZmZlcnM7CisgICAgVmVjdG9yPHNpemVfdD4gbV9lbmNvZGVkRGF0
YUxlbmd0aHM7CisjZWxzZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBtX21haW5SZXNvdXJjZTsKKyNlbmRpZgogICAgIGNvbnN0IFBsYXRmb3JtQ29udGVudEZp
bHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAgICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJv
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAko
cmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xh
c3MgQ29udGVudEZpbHRlckNsaWVudCB7CkBAIC00MSw3ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBj
b25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAgdmlydHVhbCB2
b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQp
ID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlk
QmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29u
c3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBjb25z
dAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRG
aWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAgICAgICAgIHJl
dHVybjsKICNlbmRpZgpAQCAtNzEzLDcgKzcxMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RGTW92ZSh1cmwp
KTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXIt
PmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3Qp
KTsKICNlbmRpZgpAQCAtOTExLDcgKzkxMSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3Bv
bnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpOwog
ICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIg
JiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVzcG9u
c2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjcsNyArMTMyNyw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0jaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAg
aWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0
YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTQ1
NSw3ICsxNDU1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKICAg
ICBzdG9wTG9hZGluZygpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJj
ZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVu
dCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIwMTcsNyArMjAx
Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQogICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRh
LmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOwogI2Vu
ZGlmCiAKQEAgLTIyMTksNyArMjIxOSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFp
blJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5S
ZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9t
YWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRl
cikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7
CiAjZW5kaWYKQEAgLTIzNTAsNyArMjM1MCw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNl
Q2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRG
aWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5k
aWYKQEAgLTI0MDgsOSArMjQwOCwxMCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2Vj
dXJpdHlQb2xpCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi12b2lkIERvY3Vt
ZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgc2l6ZSkKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgaW50IHNpemUpCiB7Ci0gICAgZGF0
YVJlY2VpdmVkKGRhdGEsIHNpemUpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIsIHNpemUpOwog
fQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTI0MjUsNiArMjQyNiwxMiBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAKIFJlc291cmNlRXJy
b3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0KQogeworICAgIHJldHVybiBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9j
a0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKK30KKyNlbmRp
ZiAvLyAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKwor
UmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2Nr
KENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFj
aGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFw
V2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IFdlYWtQdHIgeyBmcmFtZSgp
LT5zY3JpcHQoKSB9LCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRl
ZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKQEAgLTI0MzUsNyArMjQ0Miw3IEBAIFJlc291cmNl
RXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWwKICAgICBmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIpKTsK
ICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJl
cXVlc3QoKSk7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2VuZGlm
CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEFjdGl2ZUNvbnRlbnRSdWxlTGlzdEFjdGlvblBh
dHRlcm5zKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiYgcGF0dGVybnMpCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjg2
MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDogcHVi
bGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ci0j
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICwgcHVibGljIENvbnRlbnRGaWx0ZXJDbGll
bnQKICNlbmRpZgogICAgICwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CkBAIC0z
ODYsMTAgKzM4NiwxMyBAQCBwdWJsaWM6CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSBjb25zdDsKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBDb250ZW50RmlsdGVyKiBjb250ZW50RmlsdGVy
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RmlsdGVyLmdldCgpOyB9CiAgICAgdm9pZCByZWYo
KSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpyZWYoKTsgfQogICAg
IHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+Ojpk
ZXJlZigpOyB9CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGhhbmRs
ZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmlu
ZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyNlbmRpZgogCiAgICAgdm9pZCBzdGFy
dEljb25Mb2FkaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmKTsKQEAgLTQ4Niw3ICs0ODksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLy8gQ29udGVudEZpbHRl
ckNsaWVudAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQg
UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7CkBAIC02
MzcsNyArNjQwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXBwbGljYXRpb25D
YWNoZUhvc3Q+IG1fYXBwbGljYXRpb25DYWNoZUhvc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2MDI1KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQ1Nyw3ICsyNDU3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJv
dmlzaQogewogICAgIG1fcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwgPSBwcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLnVybCgpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgYXV0byBjb250ZW50RmlsdGVyID0g
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5jb250ZW50RmlsdGVyKCk7CiAgICAgYXV0byBjb250
ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZyA9IGZhbHNlOwogI2VuZGlmCkBAIC0yNDY1LDcg
KzI0NjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAgICAg
YXV0byB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENvbnRpbnVlTG9hZGluZzo6Tm87CiAgICAg
aWYgKGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSkKICAgICAgICAgd2lsbENvbnRpbnVlTG9h
ZGluZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAoY29udGVudEZpbHRlciAm
JiBjb250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikp
IHsKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6Olll
czsKICAgICAgICAgY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcgPSB0cnVlOwpAQCAt
MjQ3NCw3ICsyNDc0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlz
aQogCiAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChlcnJvciwg
d2lsbENvbnRpbnVlTG9hZGluZyk7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAoY29udGVudEZpbHRlcldpbGxDb250aW51
ZUxvYWRpbmcpCiAgICAgICAgIGNvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmUoZXJyb3IpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hCiAgICAgYXV0byYgc3Vic3RpdHV0ZURh
dGEgPSBsb2FkZXItPnN1YnN0aXR1dGVEYXRhKCk7CiAgICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSAmJiAhc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewogICAg
ICAgICBib29sIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYgKGF1dG8gbG9hZGVy
ID0gbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAg
c2hvdWxkQ29udGludWUgPSBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURh
dGFSZXF1ZXN0KCpsb2FkZXIsIHN1YnN0aXR1dGVEYXRhKTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjUsNiArMjI1LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6aGFuZAogCiBib29sIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppc1JlcXVp
cmVkKCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IGlzUmVxdWlyZWQg
JWQiLCBbTkVGaWx0ZXJTb3VyY2UgZmlsdGVyUmVxdWlyZWRdKTsKICAgICByZXR1cm4gW05FRmls
dGVyU291cmNlIGZpbHRlclJlcXVpcmVkXTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW0JKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02
Myw2ICs2Myw3IEBAIGJvb2wgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmVuYWIKICNl
bHNlCiAgICAgYm9vbCBlbmFibGVkID0gW2dldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgaXNN
YW5hZ2VkU2Vzc2lvbl07CiAjZW5kaWYKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNp
b246IGVuYWJsZWQgJWQiLCBlbmFibGVkKTsKICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIlBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyIGlzICVzLlxuIiwgZW5hYmxlZCA/ICJlbmFibGVk
IiA6ICJub3QgZW5hYmxlZCIpOwogICAgIHJldHVybiBlbmFibGVkOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI4NjQxMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMTItMDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29udGVudCBmaWx0ZXJpbmcgdG8gTmV0d29y
a2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50Rmls
dGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNh
bmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNv
bnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1h
aW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTItMDEgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBj
b3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiAr
NjcsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXZpZXdDb252ZXJ0ZXIuaD4KICNlbmRpZgog
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oPgorI2VuZGlmCisKICNkZWZpbmUgTE9BREVSX1JFTEVB
U0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZVByb3h5SUQ9
JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2U9JWQsIGRlc3RpbmF0aW9uPSV1
LCBpc1N5bmNocm9ub3VzPSVkXSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBt
X3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc01haW5SZXNvdXJjZSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9wYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24pLCBpc1N5bmNo
cm9ub3VzKCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xPR19FUlJP
UihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gW3BhZ2VQcm94eUlE
PSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIs
IHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVkLCBkZXN0aW5hdGlvbj0l
dSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3RpbmF0aW9uKSwgaXNTeW5j
aHJvbm91cygpLCAjI19fVkFfQVJHU19fKQogCkBAIC0zMDIsNiArMzA3LDE2IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2gKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9h
ZCBsb2FkKQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygic3RhcnROZXR3b3JrTG9hZDogKGlz
Rmlyc3RMb2FkPSVkLCB0aW1lb3V0PSVmKSIsIGxvYWQgPT0gRmlyc3RMb2FkOjpZZXMsIHJlcXVl
c3QudGltZW91dEludGVydmFsKCkpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIW1fY29udGVudEZpbHRlcikKKyAgICAgICAg
bV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBpZiAo
IW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlKCkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGlzTWFpblJlc291
cmNlKCkpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3Vy
Y2UocmVxdWVzdC51cmwoKSk7CisjZW5kaWYKKwogICAgIGlmIChsb2FkID09IEZpcnN0TG9hZDo6
WWVzKSB7CiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCkBAIC03MDQsNiAr
NzE5LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmUKIHsKICAg
ICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2Rl
PSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRlbnRMZW5n
dGg9JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFzTmV0d29y
a0xvYWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVj
ZWl2ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgISFt
X25ldHdvcmtMb2FkQ2hlY2tlcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVu
dEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVjZWl2ZWRSZXNwb25zZSkp
CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7
CisjZW5kaWYKKwogICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBkaWRSZWNlaXZl
TWFpblJlc291cmNlUmVzcG9uc2UocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTkxNSw2ICs5MzUs
MTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAgICAg
ICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRh
IHNpemUgZmVhdHVyZS4KICAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAt
MSk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKQorICAgICAgICAgICAgbV9j
b250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJl
cXVlc3QudXJsKCkpOworI2VuZGlmCisKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAg
ICB9CiAKQEAgLTEwMDQsNiArMTAyOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZWRpCiAgICAgaWYgKCFtX2ZpcnN0UmVzcG9uc2VVUkwuaXNWYWxpZCgpKQogICAg
ICAgICBtX2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAo
bV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2Vu
ZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgICAgIHJldHVybjsKKyNl
bmRpZgorCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgewog
ICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkKQEAgLTEw
OTgsNiArMTEyOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwK
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVz
cG9uc2U6Iik7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBkaWRGaW5pc2hX
aXRoUmVkaXJlY3RSZXNwb25zZSIpOwogICAgIHJlZGlyZWN0UmVzcG9uc2Uuc2V0VHlwZShSZXNv
dXJjZVJlc3BvbnNlOjpUeXBlOjpPcGFxdWVyZWRpcmVjdCk7CiAgICAgaWYgKCFpc0Nyb3NzT3Jp
Z2luUHJlZmV0Y2goKSkKICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSksIFtdIChhdXRvKSB7IH0pOwpAQCAtMTI2MCw3ICsxMjkxLDEyIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW0KICAgICBpZiAobV9idWZmZXJlZERh
dGEtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVm
ZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBib29sIHNob3VsZEZpbHRlciA9IGZh
bHNlOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgc2hvdWxkRmlsdGVyID0gbV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXIt
PmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoKm1fYnVmZmVyZWREYXRhLmdldCgpLCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbmRpZgorICAgIGlmICghc2hvdWxkRmlsdGVy
KQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURh
dGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkp
OwogCiAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwpAQCAtMTI3MCw2ICsxMzA2LDExIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFMKIHsKICAgICBBU1NFUlQo
IWlzU3luY2hyb25vdXMoKSk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZp
bHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
KSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyBidWZmZXIgfSwgZW5jb2RlZERhdGFMZW5ndGgp
KTsKIH0KIApAQCAtMTM2NCw2ICsxNDA1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJldHJpZXZlQwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JD
YWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBlbnRyeSkKIHsK
ICAgICBMT0FERVJfUkVMRUFTRV9MT0coInNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5OiIpOworICAg
IFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogc2VuZFJlc3VsdEZvckNhY2hlRW50cnki
KTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIGlmICghZW50cnktPnNoYXJl
YWJsZVJlc291cmNlSGFuZGxlKCkuaXNOdWxsKCkpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNvdXJjZShlbnRyeS0+c2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUoKSkpOwpAQCAtMTM4OSw2ICsxNDMxLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VC
b2R5RGVjb2RlZFNpemUgPSAwOwogCiAgICAgc2VuZEJ1ZmZlcigqZW50cnktPmJ1ZmZlcigpLCBl
bnRyeS0+YnVmZmVyKCktPnNpemUoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyKQorICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKSk7CisjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogfQogCkBA
IC0xNzA1LDYgKzE3NTEsMzIgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQXBwSW5p
dGlhdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpOwog
fQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
K3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3Ro
KQoreworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIiKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCkpOworfQorCitXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRp
ZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxl
ciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgV1RGTG9nQWx3
YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBjb250ZW50RmlsdGVyRGlkQmxvY2siKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1
bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5z
aW9uOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciIpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29u
dGVudEZpbHRlcihlcnJvcikpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikKK3sKKyAgICBXVEZMb2dBbHdh
eXMoIk5ldHdvcmtFeHRlbnNpb246IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlciIpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5k
ZWYgTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4NjAyNSkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVu
dC5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRlbnRGaWx0ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBv
bGljeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgpAQCAtNDMs
NiArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U7CitjbGFzcyBDb250ZW50RmlsdGVyOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBOZXR3
b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC03MCw2ICs3Miw5
IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAgICwgcHVibGljIElQQzo6
TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eUNsaWVudAogICAgICwgcHVibGljIFdlYkNvcmU6OkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRGlzYWJsZXIKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJDbGllbnQKKyNlbmRp
ZgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVhdGUoTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYgcmVwbHkgPSBu
dWxscHRyKQpAQCAtOTAsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCi0gICAgdm9pZCBjb250aW51ZVdpbGxTZW5k
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBib29sIGlzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzKTsKIAogICAgIHZvaWQgc2V0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlKSB7IG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsg
fQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNwb25zZTsgfQpAQCAtMTUxLDYgKzE1NiwxMSBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzQXBwSW5pdGlhdGVkKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZD
b3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj46OnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigp
IGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+OjpkZXJlZigp
OyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJv
bm91c0xvYWREZWxheWVkUmVwbHkmJik7CiAKQEAgLTE1OCw2ICsxNjgsMTQgQEAgcHJpdmF0ZToK
ICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpOyB9CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IC8vIENvbnRlbnRGaWx0ZXJDbGllbnQKKyAgICB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250
ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgZmluYWw7Cisg
ICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgdm9pZCBo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBi
bG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBmaW5hbDsKKyNlbmRpZgor
CiAgICAgYm9vbCBjYW5Vc2VDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBj
b25zdDsKICAgICBib29sIGNhblVzZUNhY2hlZFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIGNvbnN0OwogCkBAIC0yNTksNiArMjc3LDEwIEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3JlZGlyZWN0UmVzcG9uc2U7CiAgICAgVVJMIG1f
Zmlyc3RSZXNwb25zZVVSTDsgLy8gRmlyc3QgVVJMIGluIHJlc3BvbnNlJ3MgVVJMIGxpc3QgKGh0
dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXJlc3BvbnNlLXVybC1saXN0KS4K
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3Jj
ZW1lbnRSZXN1bHQ+IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdDsKKworI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAy
ODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw2ICszMjIsMjIgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9ja0hhbmRs
ZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKK30KKwordm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgaWYgKCFtX2NvcmVMb2Fk
ZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291cmNlTG9h
ZChlcnJvcik7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODYwMjUpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CkBAIC05Myw2ICs5NCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQpOworICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworI2VuZGlmCisgICAgCiAgICAgUmVmUHRy
PFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7CiAgICAgVHJhY2tpbmdQYXJh
bWV0ZXJzIG1fdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIFdlYlJlc291cmNlSW50ZXJjZXB0Q29u
dHJvbGxlciBtX2ludGVyY2VwdENvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM3
LDQgKzM3LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2UKICAg
ICAvLyBEaWRSZWNlaXZlUmVzb3VyY2UgaXMgZm9yIHdoZW4gd2UgaGF2ZSB0aGUgZW50aXJlIHJl
c291cmNlIGRhdGEgYXZhaWxhYmxlIGF0IG9uY2UsIHN1Y2ggYXMgd2hlbiB0aGUgcmVzb3VyY2Ug
aXMgY2FjaGVkIGluIG1lbW9yeQogICAgIERpZFJlY2VpdmVSZXNvdXJjZShXZWJLaXQ6OlNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUgcmVzb3VyY2UpCiAjZW5kaWYKKworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQ29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
KQorI2VuZGlmCisKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445775</attachid>
            <date>2021-12-02 14:56:38 -0800</date>
            <delta_ts>2021-12-02 15:57:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211202145637.patch</filename>
            <type>text/plain</type>
            <size>43820</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY0MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIxLTEyLTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBVkRlbGVnYXRpbmdQbGF5
YmFja0Nvb3JkaW5hdG9yIGVycm9yIGNvbXBpbGluZyBvbiBtYWNPUyAxMQpJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYz
LDExIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2lm
ICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEz
MDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDE2MDAwMCkpCisjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZW5kaWYKKwog
I2lmICFkZWZpbmVkKEVOQUJMRV9DT05URVhUX01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2RlZmluZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5ldHdv
cmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZp
bHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyQnVmZmVycyk6CisgICAgICAgICogbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpk
ZXRhY2hGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0
TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y2xlYXJNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmJl
Y29tZU1haW5SZXNvdXJjZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZCk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBv
bGljeSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cjo6aXNSZXF1aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlcjo6ZW5hYmxlZCk6CisKIDIwMjEtMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBQb3J0IGNhbGwgc2l0ZXMgdG8gU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6aWRlbnRpZmllcigpIGFuZCBkcm9wIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNv
bnRleHRJZGVudGlmaWVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzMwNSw3ICszMzA1LDcgQEAKIAkJQTE0ODMyQ0MxODdGNjdDNDAwREE2M0E2IC8qIFdlYkNvcmVU
aHJlYWRSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNDgzMjlFMTg3RjUwODcwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkUnVuLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0ODMyQ0YxODdGNjg0
NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMkExMTg3RjUwODcwMERBNjNB
NiAvKiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTFEQTMxRjg1OUQ4NzAwOTVGNUQ0IC8q
IFBheW1lbnRTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTQ5MURBMjFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCAqLzsg
fTsKLQkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgw
MENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IH07CisJCUExNDk3ODZGMUFCQUYzMzgwMENF
RjdFNCAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNDk3
ODcxMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODcwMUFCQUYzQTUwMENF
RjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTRCQjBBMDFGOTgxM0I4MDA2MDVBMzUgLyogTW9j
a1BheW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNEJCMDlFMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovOyB9OwogCQlBMTVE
NzUxNjFFNjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxMzFFNjhGN0IxMDBBMzVGQkMgLyog
QmxvYkNhbGxiYWNrLmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTggQEAgYm9vbCBD
b250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyV2lsbFNlbgogICAgIHJldHVybiAhcmVxdWVzdC5p
c051bGwoKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNl
KGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0
ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgdXJsLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkZpbHRlcmluZzsK
KyAgICBBU1NFUlQobV9tYWluUmVzb3VyY2VVUkwuaXNFbXB0eSgpKTsKKyAgICBtX21haW5SZXNv
dXJjZVVSTCA9IHVybDsKK30KKyNlbHNlCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVy
aW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICBpZiAo
bV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTEyMywxMiArMTM1LDE3IEBAIHZvaWQgQ29u
dGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NFUlQoIW1fbWFpblJlc291
cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0KKyNlbmRpZgogCiB2b2lk
IENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKQogewogICAgIGlmICht
X3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN0b3Bw
ZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBtX21haW5SZXNvdXJjZVVSTCA9IFVSTCgpOworI2Vsc2UKICAgICBtX21haW5SZXNvdXJj
ZSA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAg
LTE0NSw0MSArMTYyLDc3IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3Bv
bnMKICAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyNlbHNlCiBib29sIENvbnRlbnRGaWx0ZXI6
OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKKyNlbmRpZgogeworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogY29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZCIpOwogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90
ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZp
bHRlcmluZykgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNl
aXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBlbmNvZGVkRGF0YUxlbmd0aCwg
bV9tYWluUmVzb3VyY2VVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBmb3JF
YWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKFBs
YXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgY29udGVu
dEZpbHRlci5hZGREYXRhKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
IH0pOworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgeworICAgICAgICAg
ICAgZGVsaXZlckJ1ZmZlcnMoKTsKKyAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X2J1ZmZlcnMuYXBwZW5kKFJlZlB0ciB7ICZidWZmZXIgfSk7CisgICAgICAgICAgICBtX2VuY29k
ZWREYXRhTGVuZ3Rocy5hcHBlbmQoZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICB9CisjZWxz
ZQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQg
JWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5ndGgsIG1fbWFpblJlc291cmNlLT51
cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGZvckVhY2hDb250ZW50Rmls
dGVyVW50aWxCbG9ja2VkKFtkYXRhLCBsZW5ndGhdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29u
dGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEsIGxl
bmd0aCk7CiAgICAgICAgIH0pOwotCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxv
d2VkKQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWluUmVzb3VyY2UpOwor
I2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gbV9zdGF0
ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKQorI2Vsc2UKIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKKyNlbmRpZgogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBj
b250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQiKTsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVu
dD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVU5VU0VEX1BBUkFNKHJlc291cmNl
VVJMKTsKKy8vICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2VVUkwsIHJlc291cmNlVVJMID09IG1f
bWFpblJlc291cmNlVVJMKTsKKyNlbHNlCisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJl
c291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIAogICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcs
ICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwl
cz4uXG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
ICAgIGNvbnN0IFVSTCYgdXJsID0gbV9tYWluUmVzb3VyY2VVUkw7CisjZWxzZQorICAgICAgICBj
b25zdCBVUkwmIHVybCA9IG1fbWFpblJlc291cmNlLT51cmwoKTsKKyNlbmRpZgorICAgICAgICBM
T0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5n
IG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIHVybC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtdKFBsYXRmb3JtQ29u
dGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5m
aW5pc2hlZEFkZGluZ0RhdGEoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OkJsb2NrZWQpIHsKICAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb3dl
ZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgICAgICAgICAgZGVsaXZlckJ1ZmZlcnMoKTsKKyNlbHNlCiAgICAgICAgICAgICBkZWxpdmVy
UmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJjZSk7CisjZW5kaWYKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVkKQpAQCAtMjA2LDggKzI1OSwxMCBAQCBp
bmxpbmUgdm9pZCBDb250ZW50RmlsdGVyOjpmb3JFYWNoQ29udGVuCiAgICAgICAgICAgICBtX2Js
b2NraW5nQ29udGVudEZpbHRlciA9ICZjb250ZW50RmlsdGVyOwogICAgICAgICAgICAgZGlkRGVj
aWRlKFN0YXRlOjpCbG9ja2VkKTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNl
IGlmIChjb250ZW50RmlsdGVyLT5uZWVkc01vcmVEYXRhKCkpCisgICAgICAgIH0gZWxzZSBpZiAo
Y29udGVudEZpbHRlci0+bmVlZHNNb3JlRGF0YSgpKSB7CisgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIk5ldHdvcmtFeHRlbnNpb246IG5lZWRzIG1vcmUgZGF0YSIpOwogICAgICAgICAgICAgYWxs
RmlsdGVyc0FsbG93ZWRMb2FkID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
YWxsRmlsdGVyc0FsbG93ZWRMb2FkKQpAQCAtMjE5LDcgKzI3NCwxMyBAQCB2b2lkIENvbnRlbnRG
aWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6
OkFsbG93ZWQpOwogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKTsKICAgICBB
U1NFUlQoc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgfHwgc3RhdGUgPT0gU3RhdGU6OkJsb2NrZWQp
OwotICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQg
c2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0
ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwgbV9tYWluUmVzb3VyY2UgPyBtX21h
aW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkgOiAiIik7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBjb25zdCBT
dHJpbmcmIHVybFN0cmluZyA9IG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpOworI2Vsc2UKKyAg
ICBjb25zdCBTdHJpbmcmIHVybFN0cmluZyA9IG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpIDogZW1wdHlTdHJpbmcoKTsKKyNlbmRpZgorICAgIExPRyhDb250
ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZv
ciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJh
bGxvd2VkIiA6ICJibG9ja2VkIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBXVEZM
b2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IENvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNo
b3VsZCBiZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIHVybFN0cmluZy5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9j
a2VkKQogICAgICAgICByZXR1cm47CkBAIC0yMjgsMTIgKzI4OSwyMCBAQCB2b2lkIENvbnRlbnRG
aWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiAgICAgbV9jbGllbnQuY2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIobV9ibG9ja2VkRXJyb3IpOwogfQogCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZp
bHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZl
clJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRU
aHJvdWdoQ29udGVudEZpbHRlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbHNlCiAg
ICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNv
dXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQogICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgp
CkBAIC0yNDUsNiArMzE0LDcgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQog
ICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsKIH0KIAorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51
ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVM
b2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBpZiAo
YXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpAQCAt
MjU5LDYgKzMyOSw3IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXQK
IAogICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6d2ls
bEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
IGNvbnN0CiB7CkBAIC0yODMsNiArMzU0LDE2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6aGFuZGxl
UHJvdmlzaW9uYWxMb2EKICAgICBtX2NsaWVudC5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwoKSwgc3Vic3RpdHV0ZURhdGEpOwogfQog
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3Zv
aWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlckJ1ZmZlcnMoKQoreworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2J1ZmZlcnMuc2l6ZSgpOyBpKyspCisgICAgICAgIGRlbGl2ZXJSZXNvdXJj
ZURhdGEoKm1fYnVmZmVyc1tpXSwgbV9lbmNvZGVkRGF0YUxlbmd0aHNbaV0pOworICAgIG1fYnVm
ZmVycy5jbGVhcigpOworICAgIG1fZW5jb2RlZERhdGFMZW5ndGhzLmNsZWFyKCk7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCShyZXZp
c2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCwxOCArNTAsMjcgQEAgY2xhc3MgQ29udGVudEZpbHRlciB7CiBw
dWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFkZFR5cGUoKSB7
IHR5cGVzKCkuYXBwZW5kKHR5cGU8VD4oKSk7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKLSAgICB+Q29u
dGVudEZpbHRlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB+Q29udGVudEZpbHRlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNj
aGVtZSgpIHsgcmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQogCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOworI2Vsc2UK
ICAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7
Ci0gICAgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisjZW5kaWYKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAotICAgIGJvb2wg
Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51
ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29u
dGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlck5vdGlm
eUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpOworI2Vsc2UKICAgICBib29sIGNvbnRp
bnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CiAg
ICAgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyNl
bmRpZgogCiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVz
dChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYpOwogICAgIGJvb2wgd2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVz
b3VyY2VFcnJvciYpIGNvbnN0OwpAQCAtODIsMTEgKzkxLDIyIEBAIHByaXZhdGU6CiAKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRp
bEJsb2NrZWQoRnVuY3Rpb24mJik7CiAgICAgdm9pZCBkaWREZWNpZGUoU3RhdGUpOworI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBk
ZWxpdmVyUmVzb3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgdm9pZCBkZWxpdmVyQnVmZmVycygpOworI2Vsc2UKICAgICB2b2lkIGRl
bGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmKTsKLQorI2VuZGlmCisgICAgCiAgICAg
Q29udGFpbmVyIG1fY29udGVudEZpbHRlcnM7CiAgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9j
bGllbnQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICBVUkwgbV9tYWluUmVzb3VyY2VVUkw7CisgICAgVmVjdG9yPFJlZlB0cjxjb25zdCBT
aGFyZWRCdWZmZXI+PiBtX2J1ZmZlcnM7CisgICAgVmVjdG9yPHNpemVfdD4gbV9lbmNvZGVkRGF0
YUxlbmd0aHM7CisjZWxzZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBtX21haW5SZXNvdXJjZTsKKyNlbmRpZgogICAgIGNvbnN0IFBsYXRmb3JtQ29udGVudEZp
bHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAgICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJv
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAko
cmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xh
c3MgQ29udGVudEZpbHRlckNsaWVudCB7CkBAIC00MSw3ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBj
b25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAgdmlydHVhbCB2
b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQp
ID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlk
QmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29u
c3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBjb25z
dAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRG
aWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAgICAgICAgIHJl
dHVybjsKICNlbmRpZgpAQCAtNzEzLDcgKzcxMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RGTW92ZSh1cmwp
KTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXIt
PmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3Qp
KTsKICNlbmRpZgpAQCAtOTExLDcgKzkxMSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3Bv
bnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpOwog
ICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIg
JiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVzcG9u
c2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjcsNyArMTMyNyw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0jaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAg
aWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0
YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTQ1
NSw3ICsxNDU1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKICAg
ICBzdG9wTG9hZGluZygpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJj
ZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVu
dCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIwMTcsNyArMjAx
Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQogICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRh
LmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOwogI2Vu
ZGlmCiAKQEAgLTIyMTksNyArMjIxOSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFp
blJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5S
ZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9t
YWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRl
cikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7
CiAjZW5kaWYKQEAgLTIzNTAsNyArMjM1MCw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNl
Q2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRG
aWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5k
aWYKQEAgLTI0MDgsOSArMjQwOCwxMCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2Vj
dXJpdHlQb2xpCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi12b2lkIERvY3Vt
ZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgc2l6ZSkKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgaW50IHNpemUpCiB7Ci0gICAgZGF0
YVJlY2VpdmVkKGRhdGEsIHNpemUpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIsIHNpemUpOwog
fQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTI0MjUsNiArMjQyNiwxMiBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAKIFJlc291cmNlRXJy
b3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0KQogeworICAgIHJldHVybiBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9j
a0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKK30KKyNlbmRp
ZiAvLyAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKwor
UmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2Nr
KENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFj
aGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFw
V2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IFdlYWtQdHIgeyBmcmFtZSgp
LT5zY3JpcHQoKSB9LCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRl
ZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKQEAgLTI0MzUsNyArMjQ0Miw3IEBAIFJlc291cmNl
RXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWwKICAgICBmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIpKTsK
ICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJl
cXVlc3QoKSk7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2VuZGlm
CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEFjdGl2ZUNvbnRlbnRSdWxlTGlzdEFjdGlvblBh
dHRlcm5zKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiYgcGF0dGVybnMpCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjg2
MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDogcHVi
bGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ci0j
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAg
ICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVudAogI2VuZGlmCiAgICAgLCBwcml2YXRlIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTM4NiwxMCArMzg2LDEzIEBAIHB1YmxpYzoKICAg
ICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
I2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
IENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRG
aWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxE
b2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsg
UmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgorICAgIFdFQkNP
UkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpOworI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWlu
dDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVy
Kik+JiYpOwpAQCAtNDg2LDcgKzQ4OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50
KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJE
aWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKQEAgLTYzNyw3ICs2NDAsNyBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBcHBsaWNhdGlvbkNhY2hlSG9zdD4gbV9hcHBsaWNhdGlvbkNhY2hl
SG9zdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRl
bnRTZWN1cml0eVBvbGljeTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBt
X2NvbnRlbnRGaWx0ZXI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDU3LDcgKzI0NTcsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiB7CiAgICAgbV9wcm92aXNpb25hbExv
YWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIudXJsKCk7
CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKICAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNv
bnRlbnRGaWx0ZXIoKTsKICAgICBhdXRvIGNvbnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5n
ID0gZmFsc2U7CiAjZW5kaWYKQEAgLTI0NjUsNyArMjQ2NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKICAgICBhdXRvIHdpbGxDb250aW51ZUxvYWRpbmcgPSBX
aWxsQ29udGludWVMb2FkaW5nOjpObzsKICAgICBpZiAoaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRl
bSgpKQogICAgICAgICB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENvbnRpbnVlTG9hZGluZzo6
WWVzOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQogICAgIGlmIChjb250ZW50RmlsdGVyICYmIGNvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSkgewogICAgICAgICB3aWxsQ29udGludWVMb2Fk
aW5nID0gV2lsbENvbnRpbnVlTG9hZGluZzo6WWVzOwogICAgICAgICBjb250ZW50RmlsdGVyV2ls
bENvbnRpbnVlTG9hZGluZyA9IHRydWU7CkBAIC0yNDc0LDcgKzI0NzQsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nKTsKIAotI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
IGlmIChjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZykKICAgICAgICAgY29udGVudEZp
bHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNo
ZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEo
KTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0YS5m
YWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0
cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQogICAgICAgICBpZiAoYXV0byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0
ZURhdGEpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQkocmV2aXNp
b24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyNSw2ICsyMjUsNyBAQCB2
b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpoYW5kCiAKIGJvb2wgTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmlzUmVxdWlyZWQoKQogeworICAgIFdURkxvZ0Fsd2F5cygi
TmV0d29ya0V4dGVuc2lvbjogaXNSZXF1aXJlZCAlZCIsIFtORUZpbHRlclNvdXJjZSBmaWx0ZXJS
ZXF1aXJlZF0pOwogICAgIHJldHVybiBbTkVGaWx0ZXJTb3VyY2UgZmlsdGVyUmVxdWlyZWRdOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQkocmV2aXNpb24gMjg2MDI1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgYm9vbCBQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYgogI2Vsc2UKICAgICBib29sIGVuYWJsZWQgPSBbZ2V0
V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBpc01hbmFnZWRTZXNzaW9uXTsKICNlbmRpZgorICAg
IFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogZW5hYmxlZCAlZCIsIGVuYWJsZWQpOwog
ICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIg
aXMgJXMuXG4iLCBlbmFibGVkID8gImVuYWJsZWQiIDogIm5vdCBlbmFibGVkIik7CiAgICAgcmV0
dXJuIGVuYWJsZWQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NDEyKQorKysgU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0x
Mi0wMiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92
ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5nIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc2MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0
Rm9yQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRl
bnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bjoKKwogMjAyMS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAg
ICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBTaGFyZWRNZW1v
cnkgaW50byBhIFNoYXJlZEJ1ZmZlcgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2MDI1
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UHJldmlld0NvbnZlcnRlci5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRl
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg+Cisj
ZW5kaWYKKwogI2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9H
KE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBS
SXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBpc01h
aW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0
KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRlcnMu
b3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykKICNk
ZWZpbmUgTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJP
UihOZXR3b3JrLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgaXNN
YWluUmVzb3VyY2U9JWQsIGRlc3RpbmF0aW9uPSV1LCBpc1N5bmNocm9ub3VzPSVkXSBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2
NCgpLCBpc01haW5SZXNvdXJjZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wYXJhbWV0ZXJz
Lm9wdGlvbnMuZGVzdGluYXRpb24pLCBpc1N5bmNocm9ub3VzKCksICMjX19WQV9BUkdTX18pCiAK
QEAgLTMwMiw2ICszMDcsMTYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZl
Q2FjaAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2FkIGxvYWQpCiB7CiAgICAgTE9BREVSX1JFTEVB
U0VfTE9HKCJzdGFydE5ldHdvcmtMb2FkOiAoaXNGaXJzdExvYWQ9JWQsIHRpbWVvdXQ9JWYpIiwg
bG9hZCA9PSBGaXJzdExvYWQ6OlllcywgcmVxdWVzdC50aW1lb3V0SW50ZXJ2YWwoKSk7CisKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlm
ICghbV9jb250ZW50RmlsdGVyKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50Rmls
dGVyOjpjcmVhdGUoKnRoaXMpOworICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFm
dGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSkpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkKKyAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShyZXF1ZXN0LnVybCgpKTsKKyNlbmRpZgor
CiAgICAgaWYgKGxvYWQgPT0gRmlyc3RMb2FkOjpZZXMpIHsKICAgICAgICAgY29uc3VtZVNhbmRi
b3hFeHRlbnNpb25zKCk7CiAKQEAgLTcwNCw2ICs3MTksMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVj
ZWl2ZVJlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIE1JTUVUeXBlPSUiIFBVQkxJQ19MT0df
U1RSSU5HICIsIGV4cGVjdGVkQ29udGVudExlbmd0aD0lIiBQUklkNjQgIiwgaGFzQ2FjaGVkRW50
cnlGb3JWYWxpZGF0aW9uPSVkLCBoYXNOZXR3b3JrTG9hZENoZWNrZXI9JWQpIiwgcmVjZWl2ZWRS
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLm1pbWVUeXBlKCkudXRm
OCgpLmRhdGEoKSwgcmVjZWl2ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSwgISFt
X2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uLCAhIW1fbmV0d29ya0xvYWRDaGVja2VyKTsKIAorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYg
KG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9u
c2VSZWNlaXZlZChyZWNlaXZlZFJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyNlbmRpZgorCiAgICAgaWYgKGlzTWFpblJl
c291cmNlKCkpCiAgICAgICAgIGRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZShyZWNlaXZl
ZFJlc3BvbnNlKTsKIApAQCAtOTE1LDYgKzkzNSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hCiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFs
dWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgogICAgICAgICAgICAg
c2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKICAgICAgICAgfQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIpCisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSk7CisjZW5kaWYKKwogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VM
b2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KIApAQCAtMTAwNCw2ICsxMDI5LDExIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGkKICAgICBpZiAoIW1fZmly
c3RSZXNwb25zZVVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIG1fZmlyc3RSZXNwb25zZVVSTCA9IHJl
ZGlyZWN0UmVzcG9uc2UudXJsKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVu
dEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAgaWYgKCFz
ZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7CiAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChy
ZWRpcmVjdFJlcXVlc3QudXJsKCkpKQpAQCAtMTA5OCw2ICsxMTI4LDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgTE9BREVSX1JFTEVBU0Vf
TE9HKCJkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZToiKTsKKyAgICBXVEZMb2dBbHdheXMo
Ik5ldHdvcmtFeHRlbnNpb246IGRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlIik7CiAgICAg
cmVkaXJlY3RSZXNwb25zZS5zZXRUeXBlKFJlc291cmNlUmVzcG9uc2U6OlR5cGU6Ok9wYXF1ZXJl
ZGlyZWN0KTsKICAgICBpZiAoIWlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICBkaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgW10gKGF1dG8pIHsgfSk7
CkBAIC0xMjYwLDcgKzEyOTEsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZl
cmluZ1RpbQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURh
dGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgIGJvb2wgc2hvdWxkRmlsdGVyID0gZmFsc2U7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBzaG91bGRGaWx0ZXIgPSBtX2NvbnRl
bnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCgq
bV9idWZmZXJlZERhdGEuZ2V0KCksIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpOwor
I2VuZGlmCisgICAgaWYgKCFzaG91bGRGaWx0ZXIpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1
ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0
aCA9IDA7CkBAIC0xMjcwLDYgKzEzMDYsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNlbmRCdWZmZXIoUwogewogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKG1f
Y29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2Vp
dmVkKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpKQorICAgICAgICByZXR1cm47CisjZW5kaWYK
KwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7
IGJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCkBAIC0xMzY0LDYgKzE0MDUsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDCiB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtDYWNoZTo6RW50cnk+IGVudHJ5KQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygic2Vu
ZFJlc3VsdEZvckNhY2hlRW50cnk6Iik7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5z
aW9uOiBzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeSIpOwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpCiAgICAgaWYgKCFlbnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKS5pc051bGwo
KSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZVJlc291cmNlKGVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpKSk7CkBAIC0xMzg5LDYg
KzE0MzEsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGbwogICAg
IG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSA9IDA7CiAKICAgICBz
ZW5kQnVmZmVyKCplbnRyeS0+YnVmZmVyKCksIGVudHJ5LT5idWZmZXIoKS0+c2l6ZSgpKTsKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlm
IChtX2NvbnRlbnRGaWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRl
ck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyNlbmRpZgogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQo
bmV0d29ya0xvYWRNZXRyaWNzKSk7CiB9CiAKQEAgLTE3MDUsNiArMTc1MSwzMiBAQCBib29sIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBcHBJbml0aWF0CiAgICAgcmV0dXJuIG1fcGFyYW1ldGVy
cy5yZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3
b3JrRXh0ZW5zaW9uOiBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlciIpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShidWZmZXIsIGVu
Y29kZWREYXRhTGVuZ3RoKSk7Cit9CisKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCkKK3sKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IGNvbnRl
bnRGaWx0ZXJEaWRCbG9jayIpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCkpOworICAgIHJldHVybiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCk7Cit9
CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9y
Q29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAg
ICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IGNhbmNlbE1haW5SZXNvdXJjZUxvYWRG
b3JDb250ZW50RmlsdGVyIik7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGVycm9yKSk7Cit9CisKK3Zv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJv
bUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGEmKQoreworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogaGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyIik7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBMT0FERVJfUkVMRUFTRV9MT0cKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlckNsaWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Lmg+CkBAIC00Myw2ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKK2NsYXNzIENvbnRlbnRGaWx0ZXI7
CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKQEAgLTcwLDYgKzcyLDkgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9h
ZGVyIGZpbmFsCiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBwdWJsaWMg
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgLCBwdWJsaWMgV2ViQ29y
ZTo6Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcgorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLCBwdWJsaWMgV2ViQ29y
ZTo6Q29udGVudEZpbHRlckNsaWVudAorI2VuZGlmCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3
b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91
c0xvYWREZWxheWVkUmVwbHkmJiByZXBseSA9IG51bGxwdHIpCkBAIC05MCw3ICs5NSw3IEBAIHB1
YmxpYzoKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdv
cmtSZXNvdXJjZUxvYWRlck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIG5ld1JlcXVlc3QsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMp
OworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOwogCiAgICAgdm9p
ZCBzZXRSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpIHsgbV9y
ZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CkBAIC0x
NTEsNiArMTU2LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBcHBJbml0aWF0ZWQoKTsKIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
dm9pZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVy
Pjo6cmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPE5l
dHdvcmtSZXNvdXJjZUxvYWRlcj46OmRlcmVmKCk7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmKTsKIApA
QCAtMTU4LDYgKzE2OCwxNCBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyLnRvVUludDY0KCk7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAorICAg
IHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiwgc2l6ZV90KSBmaW5hbDsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNv
bnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIs
IFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKKyAgICB2b2lkIGNh
bmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSYpIGZpbmFsOworI2VuZGlmCisKICAgICBib29sIGNhblVzZUNhY2hlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIGJvb2wgY2FuVXNlQ2FjaGVk
UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKQEAgLTI1
OSw2ICsyNzcsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVkaXJlY3RSZXNwb25zZTsKICAgICBVUkwgbV9maXJzdFJlc3BvbnNlVVJMOyAvLyBGaXJzdCBV
UkwgaW4gcmVzcG9uc2UncyBVUkwgbGlzdCAoaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcv
I2NvbmNlcHQtcmVzcG9uc2UtdXJsLWxpc3QpLgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4gbV9jdXJyZW50Q29vcEVu
Zm9yY2VtZW50UmVzdWx0OworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEZpbHRl
cj4gbV9jb250ZW50RmlsdGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIyLDYgKzMyMiwyMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIGlmICgh
bV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRl
bnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCkpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVz
b3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKK30KKyNlbmRpZiAvLyBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI3VuZGVmIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmgJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmlj
czsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAgLTkzLDYg
Kzk0LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgY29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CisjZW5kaWYKKyAgICAKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1f
Y29yZUxvYWRlcjsKICAgICBUcmFja2luZ1BhcmFtZXRlcnMgbV90cmFja2luZ1BhcmFtZXRlcnM7
CiAgICAgV2ViUmVzb3VyY2VJbnRlcmNlcHRDb250cm9sbGVyIG1faW50ZXJjZXB0Q29udHJvbGxl
cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODYwMjUpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzcsNCArMzcsMTAgQEAgbWVzc2FnZXMgLT4gV2Vi
UmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZQogICAgIC8vIERpZFJlY2VpdmVSZXNvdXJjZSBpcyBm
b3Igd2hlbiB3ZSBoYXZlIHRoZSBlbnRpcmUgcmVzb3VyY2UgZGF0YSBhdmFpbGFibGUgYXQgb25j
ZSwgc3VjaCBhcyB3aGVuIHRoZSByZXNvdXJjZSBpcyBjYWNoZWQgaW4gbWVtb3J5CiAgICAgRGlk
UmVjZWl2ZVJlc291cmNlKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSByZXNvdXJj
ZSkKICNlbmRpZgorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0KQorICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVy
KFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisjZW5kaWYKKwogfQo=
</data>
<flag name="commit-queue"
          id="471040"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445784</attachid>
            <date>2021-12-02 15:55:57 -0800</date>
            <delta_ts>2021-12-05 23:26:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211202155556.patch</filename>
            <type>text/plain</type>
            <size>43740</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY0MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIxLTEyLTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBVkRlbGVnYXRpbmdQbGF5
YmFja0Nvb3JkaW5hdG9yIGVycm9yIGNvbXBpbGluZyBvbiBtYWNPUyAxMQpJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYz
LDExIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2lm
ICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEz
MDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDE2MDAwMCkpCisjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZW5kaWYKKwog
I2lmICFkZWZpbmVkKEVOQUJMRV9DT05URVhUX01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2RlZmluZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5ldHdv
cmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZp
bHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyQnVmZmVycyk6CisgICAgICAgICogbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpk
ZXRhY2hGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0
TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y2xlYXJNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmJl
Y29tZU1haW5SZXNvdXJjZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZCk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBv
bGljeSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cjo6aXNSZXF1aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlcjo6ZW5hYmxlZCk6CisKIDIwMjEtMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBQb3J0IGNhbGwgc2l0ZXMgdG8gU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6aWRlbnRpZmllcigpIGFuZCBkcm9wIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNv
bnRleHRJZGVudGlmaWVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzMwNSw3ICszMzA1LDcgQEAKIAkJQTE0ODMyQ0MxODdGNjdDNDAwREE2M0E2IC8qIFdlYkNvcmVU
aHJlYWRSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNDgzMjlFMTg3RjUwODcwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkUnVuLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0ODMyQ0YxODdGNjg0
NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMkExMTg3RjUwODcwMERBNjNB
NiAvKiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTFEQTMxRjg1OUQ4NzAwOTVGNUQ0IC8q
IFBheW1lbnRTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTQ5MURBMjFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCAqLzsg
fTsKLQkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgw
MENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IH07CisJCUExNDk3ODZGMUFCQUYzMzgwMENF
RjdFNCAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNDk3
ODcxMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODcwMUFCQUYzQTUwMENF
RjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTRCQjBBMDFGOTgxM0I4MDA2MDVBMzUgLyogTW9j
a1BheW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNEJCMDlFMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovOyB9OwogCQlBMTVE
NzUxNjFFNjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxMzFFNjhGN0IxMDBBMzVGQkMgLyog
QmxvYkNhbGxiYWNrLmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTggQEAgYm9vbCBD
b250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyV2lsbFNlbgogICAgIHJldHVybiAhcmVxdWVzdC5p
c051bGwoKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNl
KGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0
ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgdXJsLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkZpbHRlcmluZzsK
KyAgICBBU1NFUlQobV9tYWluUmVzb3VyY2VVUkwuaXNFbXB0eSgpKTsKKyAgICBtX21haW5SZXNv
dXJjZVVSTCA9IHVybDsKK30KKyNlbHNlCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVy
aW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICBpZiAo
bV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTEyMywxMiArMTM1LDE3IEBAIHZvaWQgQ29u
dGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NFUlQoIW1fbWFpblJlc291
cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0KKyNlbmRpZgogCiB2b2lk
IENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKQogewogICAgIGlmICht
X3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN0b3Bw
ZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBtX21haW5SZXNvdXJjZVVSTCA9IFVSTCgpOworI2Vsc2UKICAgICBtX21haW5SZXNvdXJj
ZSA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAg
LTE0NSw0MSArMTYyLDc2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3Bv
bnMKICAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyNlbHNlCiBib29sIENvbnRlbnRGaWx0ZXI6
OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKKyNlbmRpZgogeworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogY29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZCIpOwogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90
ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZp
bHRlcmluZykgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNl
aXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBlbmNvZGVkRGF0YUxlbmd0aCwg
bV9tYWluUmVzb3VyY2VVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBmb3JF
YWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKFBs
YXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgY29udGVu
dEZpbHRlci5hZGREYXRhKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
IH0pOworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgeworICAgICAgICAg
ICAgZGVsaXZlckJ1ZmZlcnMoKTsKKyAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X2J1ZmZlcnMuYXBwZW5kKFJlZlB0ciB7ICZidWZmZXIgfSk7CisgICAgICAgICAgICBtX2VuY29k
ZWREYXRhTGVuZ3Rocy5hcHBlbmQoZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICB9CisjZWxz
ZQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQg
JWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5ndGgsIG1fbWFpblJlc291cmNlLT51
cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGZvckVhY2hDb250ZW50Rmls
dGVyVW50aWxCbG9ja2VkKFtkYXRhLCBsZW5ndGhdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29u
dGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEsIGxl
bmd0aCk7CiAgICAgICAgIH0pOwotCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxv
d2VkKQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWluUmVzb3VyY2UpOwor
I2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gbV9zdGF0
ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKQorI2Vsc2UKIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKKyNlbmRpZgogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBj
b250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQiKTsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVu
dD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVU5VU0VEX1BBUkFNKHJlc291cmNl
VVJMKTsKKy8vICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2VVUkwsIHJlc291cmNlVVJMID09IG1f
bWFpblJlc291cmNlVVJMKTsKKyNlbHNlCisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJl
c291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIAogICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5c
biIsIG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyNlbHNlCiAg
ICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBm
aWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVzb3VyY2UtPnVybCgp
LnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyNlbmRpZgogICAgICAgICBmb3JFYWNoQ29udGVu
dEZpbHRlclVudGlsQmxvY2tlZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0
ZXIpIHsKICAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CiAg
ICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG93ZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgICAgIGRlbGl2ZXJCdWZm
ZXJzKCk7CisjZWxzZQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWluUmVz
b3VyY2UpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6U3RvcHBlZCkKQEAgLTIwNiw4ICsyNTgsMTAgQEAgaW5saW5lIHZvaWQgQ29udGVudEZpbHRl
cjo6Zm9yRWFjaENvbnRlbgogICAgICAgICAgICAgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgPSAm
Y29udGVudEZpbHRlcjsKICAgICAgICAgICAgIGRpZERlY2lkZShTdGF0ZTo6QmxvY2tlZCk7CiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoY29udGVudEZpbHRlci0+bmVl
ZHNNb3JlRGF0YSgpKQorICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRGaWx0ZXItPm5lZWRzTW9y
ZURhdGEoKSkgeworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBu
ZWVkcyBtb3JlIGRhdGEiKTsKICAgICAgICAgICAgIGFsbEZpbHRlcnNBbGxvd2VkTG9hZCA9IGZh
bHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGFsbEZpbHRlcnNBbGxvd2VkTG9hZCkK
QEAgLTIxOSw3ICsyNzMsMTMgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUg
c3RhdAogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQo
bV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCk7CiAgICAgQVNTRVJUKHN0YXRlID09IFN0YXRlOjpB
bGxvd2VkIHx8IHN0YXRlID09IFN0YXRlOjpCbG9ja2VkKTsKLSAgICBMT0coQ29udGVudEZpbHRl
cmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3IgbWFpbiBy
ZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAiYWxsb3dlZCIg
OiAiYmxvY2tlZCIsIG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLmFzY2lpKCkuZGF0YSgpIDogIiIpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcgPSBtX21h
aW5SZXNvdXJjZVVSTC5zdHJpbmcoKTsKKyNlbHNlCisgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcgPSBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKSA6IGVt
cHR5U3RyaW5nKCk7CisjZW5kaWYKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRG
aWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+
LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIHVy
bFN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5z
aW9uOiBDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVz
b3VyY2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDog
ImJsb2NrZWQiLCB1cmxTdHJpbmcuYXNjaWkoKS5kYXRhKCkpOwogICAgIG1fc3RhdGUgPSBzdGF0
ZTsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjI4LDEyICsyODgsMjAgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUg
c3RhdAogICAgIG1fY2xpZW50LmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVy
KG1fYmxvY2tlZEVycm9yKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
KyNlbHNlCiB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisjZWxzZQogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRh
QnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAg
ICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkK
ICAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3Vy
Y2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisjZW5kaWYKIH0KIAog
c3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpAQCAtMjQ1LDYgKzMxMyw3IEBAIHN0
YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKICAgICByZXR1cm4gYmxvY2tlZFBhZ2VV
Ukw7CiB9CiAKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVx
dWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRl
RGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgaWYgKGF1dG8gY29udGVudEZpbHRlciA9IGFj
dGl2ZUxvYWRlci5jb250ZW50RmlsdGVyKCkpIHsKQEAgLTI1OSw2ICszMjgsNyBAQCBib29sIENv
bnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
KyNlbmRpZgogCiBib29sIENvbnRlbnRGaWx0ZXI6OndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBjb25zdAogewpAQCAtMjgzLDYgKzM1
MywxNiBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hCiAgICAgbV9j
bGllbnQuaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2Nr
ZWRQYWdlVVJMKCksIHN1YnN0aXR1dGVEYXRhKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJCdWZmZXJzKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9idWZmZXJzLnNp
emUoKTsgaSsrKQorICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX2J1ZmZlcnNbaV0sIG1f
ZW5jb2RlZERhdGFMZW5ndGhzW2ldKTsKKyAgICBtX2J1ZmZlcnMuY2xlYXIoKTsKKyAgICBtX2Vu
Y29kZWREYXRhTGVuZ3Rocy5jbGVhcigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTgg
KzUwLDI3IEBAIGNsYXNzIENvbnRlbnRGaWx0ZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBhZGRUeXBlKCkgeyB0eXBlcygpLmFwcGVuZCh0eXBlPFQ+
KCkpOyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0
ZShDb250ZW50RmlsdGVyQ2xpZW50Jik7Ci0gICAgfkNvbnRlbnRGaWx0ZXIoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZShD
b250ZW50RmlsdGVyQ2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkNvbnRlbnRGaWx0ZXIo
KTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVybiAieC1hcHBs
ZS1jb250ZW50LWZpbHRlciI7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZpbHRlcmlu
Z01haW5SZXNvdXJjZShjb25zdCBVUkwmKTsKKyNlbHNlCiAgICAgdm9pZCBzdGFydEZpbHRlcmlu
Z01haW5SZXNvdXJjZShDYWNoZWRSYXdSZXNvdXJjZSYpOwotICAgIHZvaWQgc3RvcEZpbHRlcmlu
Z01haW5SZXNvdXJjZSgpOworI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRmls
dGVyaW5nTWFpblJlc291cmNlKCk7CiAKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJv
b2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJl
c291cmNlVVJMKTsKKyNlbHNlCiAgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIGJvb2wgY29udGludWVBZnRlck5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7CisjZW5kaWYKIAogICAgIHN0YXRpYyBib29s
IGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXIm
IGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdpbGxIYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsKQEAg
LTgyLDExICs5MSwyMiBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
aW9uPiB2b2lkIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKEZ1bmN0aW9uJiYpOwog
ICAgIHZvaWQgZGlkRGVjaWRlKFN0YXRlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGVs
aXZlckJ1ZmZlcnMoKTsKKyNlbHNlCiAgICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hl
ZFJlc291cmNlJik7Ci0KKyNlbmRpZgorICAgIAogICAgIENvbnRhaW5lciBtX2NvbnRlbnRGaWx0
ZXJzOwogICAgIENvbnRlbnRGaWx0ZXJDbGllbnQmIG1fY2xpZW50OworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVVJMIG1fbWFpblJlc291
cmNlVVJMOworICAgIFZlY3RvcjxSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPj4gbV9idWZmZXJz
OworICAgIFZlY3RvcjxzaXplX3Q+IG1fZW5jb2RlZERhdGFMZW5ndGhzOworI2Vsc2UKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7Cisj
ZW5kaWYKICAgICBjb25zdCBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdDb250ZW50
RmlsdGVyIHsgbnVsbHB0ciB9OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3RvcHBlZCB9
OwogICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQg
ewpAQCAtNDEsNyArNDIsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2aXJ0dWFsIHZv
aWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwg
c2l6ZV90KSA9IDA7CisjZWxzZQogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdo
Q29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisjZW5kaWYKICAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
IFN1YnN0aXR1dGVEYXRhJikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDcgQEAgYm9v
bCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nKCkgY29uc3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAg
aWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90
aWZ5RmluaXNoZWQocmVzb3VyY2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTcxMyw3
ICs3MTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAg
ICAgIG5ld1JlcXVlc3Quc2V0VVJMKFdURk1vdmUodXJsKSk7CiAgICAgfQogCi0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1f
Y29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRS
ZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAjZW5kaWYKQEAgLTkxMSw3ICs5
MTEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgQVNT
RVJUKHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpKTsKICAgICBDb21wbGV0aW9uSGFuZGxlckNh
bGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCkBAIC0xMzI3LDcgKzEzMjcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYg
IW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgp
KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTE0NTUsNyArMTQ1NSw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAgc3RvcExvYWRpbmcoKTsKICAgICBp
ZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAg
ICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5S
ZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMDE3LDcgKzIwMTcsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBt
X2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgPyBDb250ZW50Rmls
dGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKICNlbmRpZgogCkBAIC0yMjE5LDcgKzIyMTks
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSgpCiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3Vy
Y2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGll
bnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZp
bHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMzUwLDcgKzIz
NTAsNyBAQCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IERvY3VtZW50TG9hCiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpCiB7Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1f
Y29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZpbHRlcmluZ01h
aW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2UpOwogI2VuZGlmCkBAIC0yNDA4LDkgKzI0MDgsMTAg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5UG9saQogfQogCiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCisjaWYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIGludCBzaXplKQogewotICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsK
KyAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyLCBzaXplKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRl
cjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCkBAIC0yNDI1LDYgKzI0MjYsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
aGFuZGxlUHJvdmlzaW9uYWxMbwogCiBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250
ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5k
bGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKKyAgICByZXR1cm4g
aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cit9CisjZW5kaWYgLy8gIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKK1Jlc291cmNlRXJyb3IgRG9jdW1lbnRM
b2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KQorewogICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkp
OwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1l
KCkpIHsKICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3Nj
cmlwdENvbnRyb2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0KCkgfSwgc2NyaXB0ID0g
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2Vk
KSB7CkBAIC0yNDM1LDcgKzI0NDIsNyBAQCBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpj
b250ZW50RmlsCiAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJs
b2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVy
KCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOwogfQotI2VuZGlmIC8v
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNlbmRpZgogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpzZXRBY3RpdmVDb250ZW50UnVsZUxpc3RBY3Rpb25QYXR0ZXJucyhjb25zdCBzdGQ6Om9wdGlv
bmFsPEhhc2hTZXQ8U3RyaW5nPj4mIHBhdHRlcm5zKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDcg
QEAgY2xhc3MgRG9jdW1lbnRMb2FkZXIKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50
TG9hZGVyPgogICAgICwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVi
bGljIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICwgcHVibGljIENvbnRlbnRGaWx0
ZXJDbGllbnQKICNlbmRpZgogICAgICwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7
CkBAIC0zODYsMTAgKzM4NiwxMyBAQCBwdWJsaWM6CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSBjb25zdDsK
IAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBDb250ZW50RmlsdGVyKiBjb250ZW50
RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RmlsdGVyLmdldCgpOyB9CiAgICAgdm9p
ZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpyZWYoKTsg
fQogICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2Fk
ZXI+OjpkZXJlZigpOyB9CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9y
IGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIs
IFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyNlbmRpZgogCiAgICAgdm9p
ZCBzdGFydEljb25Mb2FkaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmKTsKQEAgLTQ4Niw3ICs0ODks
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLy8gQ29udGVu
dEZpbHRlckNsaWVudAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3Vn
aENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7
CkBAIC02MzcsNyArNjQwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXBwbGlj
YXRpb25DYWNoZUhvc3Q+IG1fYXBwbGljYXRpb25DYWNoZUhvc3Q7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKLSNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2
MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ1Nyw3ICsyNDU3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaQogewogICAgIG1fcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwg
PSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLnVybCgpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgYXV0byBjb250ZW50Rmls
dGVyID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5jb250ZW50RmlsdGVyKCk7CiAgICAgYXV0
byBjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZyA9IGZhbHNlOwogI2VuZGlmCkBAIC0y
NDY1LDcgKzI0NjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNp
CiAgICAgYXV0byB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENvbnRpbnVlTG9hZGluZzo6Tm87
CiAgICAgaWYgKGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSkKICAgICAgICAgd2lsbENvbnRp
bnVlTG9hZGluZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsKLSNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAoY29udGVudEZp
bHRlciAmJiBjb250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShl
cnJvcikpIHsKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdpbGxDb250aW51ZUxvYWRp
bmc6OlllczsKICAgICAgICAgY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcgPSB0cnVl
OwpAQCAtMjQ3NCw3ICsyNDc0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaQogCiAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChl
cnJvciwgd2lsbENvbnRpbnVlTG9hZGluZyk7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAoY29udGVudEZpbHRlcldpbGxD
b250aW51ZUxvYWRpbmcpCiAgICAgICAgIGNvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUoZXJyb3IpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hCiAgICAgYXV0byYgc3Vic3Rp
dHV0ZURhdGEgPSBsb2FkZXItPnN1YnN0aXR1dGVEYXRhKCk7CiAgICAgaWYgKHN1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSAmJiAhc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkg
ewogICAgICAgICBib29sIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYgKGF1dG8g
bG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpKQogICAgICAg
ICAgICAgc2hvdWxkQ29udGludWUgPSBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3Rp
dHV0ZURhdGFSZXF1ZXN0KCpsb2FkZXIsIHN1YnN0aXR1dGVEYXRhKTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjUsNiArMjI1LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlcjo6aGFuZAogCiBib29sIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpp
c1JlcXVpcmVkKCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IGlzUmVx
dWlyZWQgJWQiLCBbTkVGaWx0ZXJTb3VyY2UgZmlsdGVyUmVxdWlyZWRdKTsKICAgICByZXR1cm4g
W05FRmlsdGVyU291cmNlIGZpbHRlclJlcXVpcmVkXTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw2ICs2Myw3IEBAIGJvb2wgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmVu
YWIKICNlbHNlCiAgICAgYm9vbCBlbmFibGVkID0gW2dldFdlYkZpbHRlckV2YWx1YXRvckNsYXNz
KCkgaXNNYW5hZ2VkU2Vzc2lvbl07CiAjZW5kaWYKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtF
eHRlbnNpb246IGVuYWJsZWQgJWQiLCBlbmFibGVkKTsKICAgICBMT0coQ29udGVudEZpbHRlcmlu
ZywgIlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyIGlzICVzLlxuIiwgZW5hYmxlZCA/ICJl
bmFibGVkIiA6ICJub3QgZW5hYmxlZCIpOwogICAgIHJldHVybiBlbmFibGVkOwogfQpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI4NjQxMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMTItMDIgIFBlciBBcm5lIFZvbGxhbiAg
PHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29udGVudCBmaWx0ZXJpbmcgdG8g
TmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250
ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250
ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNh
bmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTItMDEgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBhbGxvY2F0aW5n
IGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNiArNjcsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXZpZXdDb252ZXJ0ZXIuaD4KICNl
bmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oPgorI2VuZGlmCisKICNkZWZpbmUgTE9BREVS
X1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZVBy
b3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2U9JWQsIGRlc3RpbmF0
aW9uPSV1LCBpc1N5bmNocm9ub3VzPSVkXSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0
aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc01haW5SZXNvdXJjZSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24pLCBp
c1N5bmNocm9ub3VzKCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xP
R19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gW3BhZ2VQ
cm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVkLCBkZXN0aW5h
dGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwg
dGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3RpbmF0aW9uKSwg
aXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQogCkBAIC0zMDIsNiArMzA3LDE2IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2gKIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hZCBsb2FkKQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygic3RhcnROZXR3b3JrTG9h
ZDogKGlzRmlyc3RMb2FkPSVkLCB0aW1lb3V0PSVmKSIsIGxvYWQgPT0gRmlyc3RMb2FkOjpZZXMs
IHJlcXVlc3QudGltZW91dEludGVydmFsKCkpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIW1fY29udGVudEZpbHRlcikKKyAg
ICAgICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICBpZiAoIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1
ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGlzTWFp
blJlc291cmNlKCkpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWlu
UmVzb3VyY2UocmVxdWVzdC51cmwoKSk7CisjZW5kaWYKKwogICAgIGlmIChsb2FkID09IEZpcnN0
TG9hZDo6WWVzKSB7CiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCkBAIC03
MDQsNiArNzE5LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmUK
IHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0
dXNDb2RlPSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRl
bnRMZW5ndGg9JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFz
TmV0d29ya0xvYWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSwgcmVjZWl2ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVz
cG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlv
biwgISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1f
Y29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVjZWl2ZWRSZXNw
b25zZSkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CisjZW5kaWYKKwogICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBkaWRS
ZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTkxNSw2
ICs5MzUsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAg
ICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2Rl
ZCBkYXRhIHNpemUgZmVhdHVyZS4KICAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWRE
YXRhLCAtMSk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKQorICAgICAgICAg
ICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0
ZXJzLnJlcXVlc3QudXJsKCkpOworI2VuZGlmCisKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3Mp
KTsKICAgICB9CiAKQEAgLTEwMDQsNiArMTAyOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6d2lsbFNlbmRSZWRpCiAgICAgaWYgKCFtX2ZpcnN0UmVzcG9uc2VVUkwuaXNWYWxpZCgp
KQogICAgICAgICBtX2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwog
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJX
aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgICAgIHJldHVy
bjsKKyNlbmRpZgorCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwo
KSkgewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkK
QEAgLTEwOTgsNiArMTEyOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51
ZVdpbGwKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJlY3RS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlKQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkRmluaXNoV2l0aFJlZGly
ZWN0UmVzcG9uc2U6Iik7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBkaWRG
aW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZSIpOwogICAgIHJlZGlyZWN0UmVzcG9uc2Uuc2V0VHlw
ZShSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpPcGFxdWVyZWRpcmVjdCk7CiAgICAgaWYgKCFpc0Ny
b3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVkaXJlY3RSZXNwb25zZSksIFtdIChhdXRvKSB7IH0pOwpAQCAtMTI2MCw3ICsxMjkxLDEyIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW0KICAgICBpZiAobV9idWZm
ZXJlZERhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0s
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBib29sIHNob3VsZEZpbHRl
ciA9IGZhbHNlOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgc2hvdWxkRmlsdGVyID0gbV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRG
aWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoKm1fYnVmZmVyZWREYXRhLmdldCgpLCBt
X2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbmRpZgorICAgIGlmICghc2hvdWxk
RmlsdGVyKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVj
ZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxl
bmd0aCkpOwogCiAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwpAQCAtMTI3MCw2ICsxMzA2
LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFMKIHsKICAgICBB
U1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyBidWZmZXIgfSwgZW5jb2RlZERhdGFM
ZW5ndGgpKTsKIH0KIApAQCAtMTM2NCw2ICsxNDA1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJldHJpZXZlQwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1
bHRGb3JDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBlbnRy
eSkKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5OiIp
OworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogc2VuZFJlc3VsdEZvckNhY2hl
RW50cnkiKTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIGlmICghZW50cnkt
PnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKCkuaXNOdWxsKCkpIHsKICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNvdXJjZShlbnRyeS0+c2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGUoKSkpOwpAQCAtMTM4OSw2ICsxNDMxLDEwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVz
cG9uc2VCb2R5RGVjb2RlZFNpemUgPSAwOwogCiAgICAgc2VuZEJ1ZmZlcigqZW50cnktPmJ1ZmZl
cigpLCBlbnRyeS0+YnVmZmVyKCktPnNpemUoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyKQorICAg
ICAgICBtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFt
ZXRlcnMucmVxdWVzdC51cmwoKSk7CisjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwog
fQogCkBAIC0xNzA1LDYgKzE3NTEsMzIgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omlz
QXBwSW5pdGlhdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRpYXRl
ZCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRh
TGVuZ3RoKQoreworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIiKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCkpOworfQor
CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZp
bHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2Nr
SGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgV1RG
TG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBjb250ZW50RmlsdGVyRGlkQmxvY2siKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2Nr
TG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3Jr
RXh0ZW5zaW9uOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciIpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5jZWxNYWluUmVzb3VyY2VMb2Fk
Rm9yQ29udGVudEZpbHRlcihlcnJvcikpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVS
TCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikKK3sKKyAgICBXVEZM
b2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlciIpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjdW5kZWYgTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4NjAy
NSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrTG9h
ZENsaWVudC5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0NvbnRlbnRGaWx0ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgpA
QCAtNDMsNiArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZp
bGVSZWZlcmVuY2U7CitjbGFzcyBDb250ZW50RmlsdGVyOwogY2xhc3MgRm9ybURhdGE7CiBjbGFz
cyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC03MCw2
ICs3Miw5IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAgICwgcHVibGlj
IElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeUNsaWVudAogICAgICwgcHVibGljIFdlYkNvcmU6OkNyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbENoZWNrRGlzYWJsZXIKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJDbGllbnQK
KyNlbmRpZgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRl
cj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVh
dGUoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYgcmVw
bHkgPSBudWxscHRyKQpAQCAtOTAsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZSBo
YW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCi0gICAgdm9pZCBjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29s
IGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKTsKKyAgICB2b2lkIGNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBib29sIGlzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzKTsKIAogICAgIHZvaWQgc2V0UmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSB7IG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3Bv
bnNlKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQpAQCAtMTUxLDYgKzE1NiwxMSBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzQXBwSW5pdGlhdGVkKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwg
eyBSZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj46OnJlZigpOyB9CisgICAgdm9pZCBk
ZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+Ojpk
ZXJlZigpOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIo
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1T
eW5jaHJvbm91c0xvYWREZWxheWVkUmVwbHkmJik7CiAKQEAgLTE1OCw2ICsxNjgsMTQgQEAgcHJp
dmF0ZToKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgp
OyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIC8vIENvbnRlbnRGaWx0ZXJDbGllbnQKKyAgICB2b2lkIGRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgZmlu
YWw7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soV2Vi
Q29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9y
Q29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAg
dm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3Qg
VVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBmaW5hbDsKKyNl
bmRpZgorCiAgICAgYm9vbCBjYW5Vc2VDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKSBjb25zdDsKICAgICBib29sIGNhblVzZUNhY2hlZFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCkBAIC0yNTksNiArMjc3LDEwIEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3JlZGlyZWN0UmVzcG9uc2U7CiAgICAg
VVJMIG1fZmlyc3RSZXNwb25zZVVSTDsgLy8gRmlyc3QgVVJMIGluIHJlc3BvbnNlJ3MgVVJMIGxp
c3QgKGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXJlc3BvbnNlLXVybC1s
aXN0KS4KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
RW5mb3JjZW1lbnRSZXN1bHQ+IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdDsKKworI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw2ICszMjIsMjIgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cgogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9j
a0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKK30KKwordm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgaWYgKCFtX2Nv
cmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291
cmNlTG9hZChlcnJvcik7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODYw
MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJl
bmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CkBAIC05Myw2ICs5NCwxMSBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUm
KTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpOworICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRG
aWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworI2VuZGlmCisgICAgCiAgICAg
UmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7CiAgICAgVHJhY2tp
bmdQYXJhbWV0ZXJzIG1fdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIFdlYlJlc291cmNlSW50ZXJj
ZXB0Q29udHJvbGxlciBtX2ludGVyY2VwdENvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTM3LDQgKzM3LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJl
Y2UKICAgICAvLyBEaWRSZWNlaXZlUmVzb3VyY2UgaXMgZm9yIHdoZW4gd2UgaGF2ZSB0aGUgZW50
aXJlIHJlc291cmNlIGRhdGEgYXZhaWxhYmxlIGF0IG9uY2UsIHN1Y2ggYXMgd2hlbiB0aGUgcmVz
b3VyY2UgaXMgY2FjaGVkIGluIG1lbW9yeQogICAgIERpZFJlY2VpdmVSZXNvdXJjZShXZWJLaXQ6
OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgcmVzb3VyY2UpCiAjZW5kaWYKKworI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQ29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5i
bG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDYW5j
ZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yKQorI2VuZGlmCisKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446005</attachid>
            <date>2021-12-05 23:26:45 -0800</date>
            <delta_ts>2021-12-06 02:03:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211206082644.patch</filename>
            <type>text/plain</type>
            <size>49120</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY0MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIxLTEyLTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBVkRlbGVnYXRpbmdQbGF5
YmFja0Nvb3JkaW5hdG9yIGVycm9yIGNvbXBpbGluZyBvbiBtYWNPUyAxMQpJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYz
LDEyIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2lm
ICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEy
MDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDE2MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dB
VENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSkKKyNkZWZpbmUgRU5BQkxFX0NP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUyBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkcKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFWFRfTUVOVVMpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVTIDAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjEtMTItMDIgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29udGVudCBm
aWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlz
aGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW50Rmls
dGVyVW50aWxCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERl
Y2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJCdWZmZXJzKToK
KyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2spOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjppc1JlcXVpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjplbmFibGVkKToKKwogMjAyMS0xMS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBvcnQgY2FsbCBzaXRlcyB0
byBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjppZGVudGlmaWVyKCkgYW5kIGRyb3AgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg2MDI1
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzA1LDcgKzMzMDUsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBE
QTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOUUxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJl
YWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMy
QTExODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFG
ODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXlt
ZW50U2Vzc2lvbi5oICovOyB9OwotCQlBMTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVu
dEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0
OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAv
KiBDb250ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTE0OTc4NzExQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZp
bHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0
OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEz
QjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE0QkIwOUUxRjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50
LmggKi87IH07CiAJCUExNUQ3NTE2MUU2OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2
OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYg
KzExMywxOCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAgICAg
cmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0
ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUgIT0g
U3RhdGU6OlN0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhDb250ZW50RmlsdGVy
aW5nLCAiQ29udGVudEZpbHRlciB3aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0
IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6RmlsdGVyaW5nOworICAgIEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkp
OworICAgIG1fbWFpblJlc291cmNlVVJMID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVudEZp
bHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291
cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEyICsx
MzUsMTcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFT
U0VSVCghbV9tYWluUmVzb3VyY2UpOwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNlOwog
fQorI2VuZGlmCiAKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJj
ZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIG1fbWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxzZQog
ICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQpAQCAtMTQ1LDExICsxNjIsMjkgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyUmVzcG9ucwogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2Vk
OwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIGJv
b2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKQorI2VuZGlmCiB7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3Jr
RXh0ZW5zaW9uOiBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkIik7CiAgICAgUmVmPENvbnRlbnRG
aWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGVu
Y29kZWREYXRhTGVuZ3RoLCBtX21haW5SZXNvdXJjZVVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtidWZmZXIgPSBS
ZWYgeyBidWZmZXIgfV0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7Cisg
ICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxv
d2VkKSB7CisgICAgICAgICAgICBkZWxpdmVyQnVmZmVycygpOworICAgICAgICAgICAgZGVsaXZl
clJlc291cmNlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG1fYnVmZmVycy5hcHBlbmQoUmVmUHRyIHsgJmJ1ZmZlciB9KTsKKyAg
ICAgICAgICAgIG1fZW5jb2RlZERhdGFMZW5ndGhzLmFwcGVuZChlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVu
dEZpbHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGxlbmd0aCwg
bV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAg
Zm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2RhdGEsIGxlbmd0aF0oUGxhdGZvcm1D
b250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVy
LmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKQEAgLTE1NywyOSArMTkyLDQ3IEBAIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWMKIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6QWxsb3dlZCkKICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJl
c291cmNlKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0
dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKKyNlbHNlCiBi
b29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAm
cmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4
dGVuc2lvbjogY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkIik7CiAgICAgUmVmPENvbnRlbnRG
aWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0KKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVOVVNFRF9QQVJB
TShyZXNvdXJjZVVSTCk7CisvLyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlVVJMLCByZXNvdXJj
ZVVSTCA9PSBtX21haW5SZXNvdXJjZVVSTCk7CisjZWxzZQorICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CiAgICAgaWYgKG1fbWFpblJlc291
cmNlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAKICAg
ICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0
ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNl
IGF0IDwlcz4uXG4iLCBtX21haW5SZXNvdXJjZVVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CisjZWxzZQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2ls
bCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIG1fbWFpblJlc291
cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisjZW5kaWYKICAgICAgICAgZm9y
RWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW10oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBj
b250ZW50RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmZpbmlzaGVkQWRkaW5n
RGF0YSgpOwogICAgICAgICB9KTsKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6Qmxv
Y2tlZCkgewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOworI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgICAgICBk
ZWxpdmVyQnVmZmVycygpOworI2Vsc2UKICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEo
Km1fbWFpblJlc291cmNlKTsKKyNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OlN0b3BwZWQpCkBAIC0yMDYsOCArMjU5LDEwIEBAIGlubGluZSB2b2lkIENv
bnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW4KICAgICAgICAgICAgIG1fYmxvY2tpbmdDb250ZW50
RmlsdGVyID0gJmNvbnRlbnRGaWx0ZXI7CiAgICAgICAgICAgICBkaWREZWNpZGUoU3RhdGU6OkJs
b2NrZWQpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRG
aWx0ZXItPm5lZWRzTW9yZURhdGEoKSkKKyAgICAgICAgfSBlbHNlIGlmIChjb250ZW50RmlsdGVy
LT5uZWVkc01vcmVEYXRhKCkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4
dGVuc2lvbjogbmVlZHMgbW9yZSBkYXRhIik7CiAgICAgICAgICAgICBhbGxGaWx0ZXJzQWxsb3dl
ZExvYWQgPSBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChhbGxGaWx0ZXJzQWxs
b3dlZExvYWQpCkBAIC0yMTksNyArMjc0LDEzIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVj
aWRlKFN0YXRlIHN0YXQKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QWxsb3dlZCk7CiAg
ICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpOwogICAgIEFTU0VSVChzdGF0ZSA9
PSBTdGF0ZTo6QWxsb3dlZCB8fCBzdGF0ZSA9PSBTdGF0ZTo6QmxvY2tlZCk7Ci0gICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMg
Zm9yIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8g
ImFsbG93ZWQiIDogImJsb2NrZWQiLCBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51
cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSA6ICIiKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nID0gbV9tYWluUmVzb3VyY2VVUkwuc3RyaW5nKCk7CisjZWxzZQorICAgIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nID0gbV9tYWluUmVzb3VyY2UgPyBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkgOiBlbXB0eVN0cmluZygpOworI2VuZGlmCisgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcs
ICJDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVzb3Vy
Y2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDogImJs
b2NrZWQiLCB1cmxTdHJpbmcuYXNjaWkoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiTmV0
d29ya0V4dGVuc2lvbjogQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZv
ciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJh
bGxvd2VkIiA6ICJibG9ja2VkIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX3N0
YXRlID0gc3RhdGU7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAg
IHJldHVybjsKQEAgLTIyOCwxMiArMjg5LDIwIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVj
aWRlKFN0YXRlIHN0YXQKICAgICBtX2NsaWVudC5jYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29u
dGVudEZpbHRlcihtX2Jsb2NrZWRFcnJvcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVy
UmVzb3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERh
dGFMZW5ndGgpCisjZWxzZQogdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRh
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKKyNlbmRpZgogewogICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpBbGxvd2VkKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworI2Vsc2UKICAgICBBU1NFUlQocmVz
b3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNl
QnVmZmVyKCkpCiAgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworI2Vu
ZGlmCiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI0NSw2ICsz
MTQsNyBAQCBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCiAgICAgcmV0dXJuIGJs
b2NrZWRQYWdlVVJMOwogfQogCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0
dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3Qg
U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGlmIChhdXRvIGNvbnRlbnRG
aWx0ZXIgPSBhY3RpdmVMb2FkZXIuY29udGVudEZpbHRlcigpKSB7CkBAIC0yNTksNiArMzI5LDcg
QEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdAogCiAgICAgcmV0dXJu
IHRydWU7CiB9CisjZW5kaWYKIAogYm9vbCBDb250ZW50RmlsdGVyOjp3aWxsSGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgY29uc3QKIHsKQEAg
LTI4Myw2ICszNTQsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExv
YQogICAgIG1fY2xpZW50LmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihibG9ja2VkUGFnZVVSTCgpLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBDb250ZW50Rmls
dGVyOjpkZWxpdmVyQnVmZmVycygpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
YnVmZmVycy5zaXplKCk7IGkrKykKKyAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9idWZm
ZXJzW2ldLCBtX2VuY29kZWREYXRhTGVuZ3Roc1tpXSk7CisgICAgbV9idWZmZXJzLmNsZWFyKCk7
CisgICAgbV9lbmNvZGVkRGF0YUxlbmd0aHMuY2xlYXIoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI4NjAyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDIyICs1MCwzMSBAQCBjbGFzcyBDb250ZW50RmlsdGVyIHsKIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgYWRkVHlwZSgpIHsgdHlwZXMoKS5hcHBl
bmQodHlwZTxUPigpKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50Rmls
dGVyPiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYpOwotICAgIH5Db250ZW50RmlsdGVyKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVy
PiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5Db250
ZW50RmlsdGVyKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogdXJsU2NoZW1lKCkgeyByZXR1
cm4gIngtYXBwbGUtY29udGVudC1maWx0ZXIiOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rh
cnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJik7CisjZWxzZQogICAgIHZvaWQgc3Rh
cnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmKTsKLSAgICB2b2lkIHN0
b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogCi0gICAgYm9vbCBjb250aW51ZUFmdGVy
V2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyRGF0
YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29u
c3QgVVJMJiByZXNvdXJjZVVSTCk7CisjZWxzZQogICAgIGJvb2wgY29udGludWVBZnRlckRhdGFS
ZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAgICBib29sIGNvbnRp
bnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpOworI2VuZGlmCiAKICAgICBz
dGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3Vt
ZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAgICAgYm9v
bCB3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJikg
Y29uc3Q7Ci0gICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIHVzaW5nIFN0
YXRlID0gUGxhdGZvcm1Db250ZW50RmlsdGVyOjpTdGF0ZTsKQEAgLTgyLDExICs5MSwyMiBAQCBw
cml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPiB2b2lkIGZvckVhY2hD
b250ZW50RmlsdGVyVW50aWxCbG9ja2VkKEZ1bmN0aW9uJiYpOwogICAgIHZvaWQgZGlkRGVjaWRl
KFN0YXRlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBz
aXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckJ1ZmZlcnMoKTsKKyNl
bHNlCiAgICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJik7Ci0KKyNl
bmRpZgorICAgIAogICAgIENvbnRhaW5lciBtX2NvbnRlbnRGaWx0ZXJzOwogICAgIENvbnRlbnRG
aWx0ZXJDbGllbnQmIG1fY2xpZW50OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgVVJMIG1fbWFpblJlc291cmNlVVJMOworICAgIFZlY3Rv
cjxSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPj4gbV9idWZmZXJzOworICAgIFZlY3RvcjxzaXpl
X3Q+IG1fZW5jb2RlZERhdGFMZW5ndGhzOworI2Vsc2UKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7CisjZW5kaWYKICAgICBjb25zdCBQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdDb250ZW50RmlsdGVyIHsgbnVsbHB0ciB9
OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3RvcHBlZCB9OwogICAgIFJlc291cmNlRXJy
b3IgbV9ibG9ja2VkRXJyb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3Rp
dHV0ZURhdGE7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAtNDEsNyArNDIsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90KSA9IDA7CisjZWxz
ZQogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCB1aW50OF90KiwgaW50KSA9IDA7CisjZW5kaWYKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikg
PSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZp
c2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4LDggQEAgRG9jdW1lbnRMb2FkZXI6OkRvY3Vt
ZW50TG9hZGVyKGNvbnN0IFJlcwogewogICAgIC8vIEZJWE1FOiBWZWN0b3IgZGVmYXVsdCBjb25z
dHJ1Y3RvciBzaG91bGRuJ3QgbmVlZCB0byBrbm93IHRoZSBzaXplIG9mIHRoZSBlbGVtZW50cywK
ICAgICAvLyBzbyBtX2FjdGl2ZUNvbnRlbnRSdWxlTGlzdEFjdGlvblBhdHRlcm5zIG91Z2h0IHRv
IGJlIGFibGUgdG8gYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBpbml0aWFsaXplciBsaXN0IGluIHRo
ZSBoZWFkZXIgd2l0aG91dCBpbmNsdWRpbmcgVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmguCisKKyAg
ICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IFN1YnN0aXR1dGUgZGF0YSBpcyB2YWxp
ZDogJWQiLCBzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpOwogfQogCiBGcmFtZUxvYWRlciogRG9j
dW1lbnRMb2FkZXI6OmZyYW1lTG9hZGVyKCkgY29uc3QKQEAgLTQyMyw3ICs0MjUsNyBAQCBib29s
IERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3Rp
ZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEzLDcg
KzcxNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAg
ICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RGTW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9j
b250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJl
cXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTExLDcgKzkx
Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBBU1NF
UlQocmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2Fs
bGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29u
dGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAj
ZW5kaWYKQEAgLTEzMjcsNyArMTMyOSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNl
aXZlZChDYWNoZWQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAh
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCkp
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTQ1NSw3ICsxNDU3LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKICAgICBzdG9wTG9hZGluZygpOwogICAgIGlm
IChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAg
ICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29u
dGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJl
c291cmNlKCk7CiAjZW5kaWYKQEAgLTIwMTcsNyArMjAxOSw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYm
ICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIG1f
Y29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0
ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOwogI2VuZGlmCiAKQEAgLTIyMTksNyArMjIyMSw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJj
ZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVu
dCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIzNTAsNyArMjM1
Miw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnRMb2EKIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKIHsKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9j
b250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFp
blJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5kaWYKQEAgLTI0MDcsNyArMjQwOSw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXVEZNb3ZlKGV2
ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdo
Q29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAgICBkYXRh
UmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CkBAIC0yNDE4LDEyICsyNDIwLDE5IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUwKICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2Fk
KGVycm9yKTsKIH0KIAorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRl
ckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3Ry
aW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgcmV0dXJuIGhhbmRsZUNv
bnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCkpOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGZyYW1lTG9hZGVyKCkt
PmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1
dGVEYXRhKSk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIAotUmVzb3VyY2VF
cnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorUmVzb3VyY2VFcnJvciBE
b2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQpCiB7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1l
bnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkg
JiYgZnJhbWUoKSkgewpAQCAtMjQzMyw4ICsyNDQyLDQwIEBAIFJlc291cmNlRXJyb3IgRG9jdW1l
bnRMb2FkZXI6OmNvbnRlbnRGaWwKICAgICAgICAgfSk7CiAgICAgfQogICAgIGZyYW1lTG9hZGVy
KCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFu
ZGxlcikpOwotICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50RmlsdGVy
RXJyb3IocmVxdWVzdCgpKTsKKyAgICBhdXRvIGVycm9yID0gZnJhbWVMb2FkZXIoKS0+YmxvY2tl
ZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fYmxvY2tlZEJ5Q29udGVudEZp
bHRlciA9IHRydWU7CisgICAgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsKKyNlbmRpZgorCisgICAg
cmV0dXJuIGVycm9yOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50Rmls
dGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25z
dCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgZnJhbWVMb2FkZXIoKS0+
bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0
ZURhdGEpKTsKIH0KKworYm9vbCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQorewor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
cmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJvckNv
ZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4oKSA9PSBl
cnJvci5kb21haW4oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAmJiBtX2Nv
bnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyNl
bmRpZgorfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVOVVNFRF9Q
QVJBTShlcnJvcik7CisjZWxzZQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCisgICAgICAgIG1f
Y29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisjZW5k
aWYKK30KKwogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogdm9pZCBEb2N1
bWVudExvYWRlcjo6c2V0QWN0aXZlQ29udGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMoY29uc3Qg
c3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+JiBwYXR0ZXJucykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcg
KzE0OSw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxE
b2N1bWVudExvYWRlcj4KICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKICAg
ICAsIHB1YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKLSNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAsIHB1YmxpYyBDb250
ZW50RmlsdGVyQ2xpZW50CiAjZW5kaWYKICAgICAsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQgewpAQCAtMzg2LDEwICszODYsMTQgQEAgcHVibGljOgogICAgIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkg
Y29uc3Q7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQ29udGVudEZpbHRlciog
Y29udGVudEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZpbHRlci5nZXQoKTsgfQog
ICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6
cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3Vt
ZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3Vy
Y2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShj
b25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOworI2VuZGlm
CiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwpAQCAt
NDM0LDYgKzQzOCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQ
cm92aXNpb25hbExvYWRTdGFydGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRpbnVpbmdMb2Fk
QWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOyB9CiAgICAgdm9pZCBzZXRJc0NvbnRpbnVpbmdM
b2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVy
UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCkgeyBtX2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lv
bmFsTG9hZFN0YXJ0ZWQgPSBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFy
dGVkOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisgICAgYm9vbCBjb250ZW50
RmlsdGVyV2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOworICAgIHZvaWQgY29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JF
X0VYUE9SVCBEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpOwogCkBAIC00ODYsNyArNDk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQogICAgIC8vIENvbnRlbnRGaWx0ZXJDbGllbnQKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4
X3QqLCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVu
dEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwpAQCAtNjM4LDcgKzY0NywxMiBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVu
dFNlY3VyaXR5UG9saWN5OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmICFF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisjZWxzZQorICAgIGJv
b2wgbV9ibG9ja2VkQnlDb250ZW50RmlsdGVyIHsgZmFsc2UgfTsKKyAgICBSZXNvdXJjZUVycm9y
IG1fYmxvY2tlZEVycm9yOworI2VuZGlmCiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyODYwMjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDU4LDcgKzI0NTgsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQ
cm92aXNpCiAgICAgbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIudXJsKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCi0gICAgYXV0byBjb250ZW50RmlsdGVyID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5j
b250ZW50RmlsdGVyKCk7CiAgICAgYXV0byBjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGlu
ZyA9IGZhbHNlOwogI2VuZGlmCiAKQEAgLTI0NjYsNyArMjQ2NSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKICAgICBpZiAoaGlzdG9yeSgpLnByb3Zpc2lvbmFs
SXRlbSgpKQogICAgICAgICB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENvbnRpbnVlTG9hZGlu
Zzo6WWVzOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBpZiAoY29udGVudEZp
bHRlciAmJiBjb250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShl
cnJvcikpIHsKKyAgICBpZiAocHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5jb250ZW50RmlsdGVy
V2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKSB7CiAgICAgICAgIHdpbGxD
b250aW51ZUxvYWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5nOjpZZXM7CiAgICAgICAgIGNvbnRl
bnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nID0gdHJ1ZTsKICAgICB9CkBAIC0yNDc2LDcgKzI0
NzUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGNvbnRlbnRGaWx0ZXJXaWxsQ29udGlu
dWVMb2FkaW5nKQotICAgICAgICBjb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGVycm9yKTsKKyAgICAgICAgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5jb250ZW50
RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiAjZW5kaWYKIAogICAg
IG1fcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwgPSB7IH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MSw3ICsxNDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05h
CiAgICAgYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBsb2FkZXItPnN1YnN0aXR1dGVEYXRhKCk7CiAg
ICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiAhc3Vic3RpdHV0ZURhdGEuZmFpbGlu
Z1VSTCgpLmlzRW1wdHkoKSkgewogICAgICAgICBib29sIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
ICAgICAgICAgaWYgKGF1dG8gbG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVu
dExvYWRlcigpKQogICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KCpsb2FkZXIsIHN1YnN0aXR1dGVEYXRh
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgJKHJl
dmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgICAg
ICAKKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFN1YnN0aXR1dGVEYXRhJik7CisKICAg
ICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAg
ICAgIFVSTCBtX2ZhaWxpbmdVUkw7CkBAIC02Nyw0ICs3MCwyOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3VsZFJldmVhbFRvU2Vz
c2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwogICAgIH07
CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFN1YnN0aXR1dGVEYXRhOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29udGVudCA8PCBt
X2ZhaWxpbmdVUkwgPDwgbV9yZXNwb25zZSA8PCBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3Rv
cnk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFN1YnN0aXR1dGVEYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3Vic3RpdHV0ZURhdGEmIGRhdGEpCit7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhLm1fY29udGVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX2ZhaWxpbmdVUkwpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9yZXNwb25zZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5t
X3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjUsNiArMjI1LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlcjo6aGFuZAogCiBib29sIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppc1Jl
cXVpcmVkKCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IGlzUmVxdWly
ZWQgJWQiLCBbTkVGaWx0ZXJTb3VyY2UgZmlsdGVyUmVxdWlyZWRdKTsKICAgICByZXR1cm4gW05F
RmlsdGVyU291cmNlIGZpbHRlclJlcXVpcmVkXTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIubW0JKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw2ICs2Myw3IEBAIGJvb2wgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmVuYWIK
ICNlbHNlCiAgICAgYm9vbCBlbmFibGVkID0gW2dldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkg
aXNNYW5hZ2VkU2Vzc2lvbl07CiAjZW5kaWYKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRl
bnNpb246IGVuYWJsZWQgJWQiLCBlbmFibGVkKTsKICAgICBMT0coQ29udGVudEZpbHRlcmluZywg
IlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyIGlzICVzLlxuIiwgZW5hYmxlZCA/ICJlbmFi
bGVkIiA6ICJub3QgZW5hYmxlZCIpOwogICAgIHJldHVybiBlbmFibGVkOwogfQpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI4NjQxMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMTItMDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29udGVudCBmaWx0ZXJpbmcgdG8gTmV0
d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50
RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJv
bUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVy
RGlkQmxvY2tMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTItMDEgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBhbGxvY2F0aW5nIGFu
ZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NiArNjcsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXZpZXdDb252ZXJ0ZXIuaD4KICNlbmRp
ZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oPgorI2VuZGlmCisKICNkZWZpbmUgTE9BREVSX1JF
TEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZVByb3h5
SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2U9JWQsIGRlc3RpbmF0aW9u
PSV1LCBpc1N5bmNocm9ub3VzPSVkXSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlz
LCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBt
X3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc01haW5SZXNvdXJjZSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9wYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24pLCBpc1N5
bmNocm9ub3VzKCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xPR19F
UlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gW3BhZ2VQcm94
eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0
ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVkLCBkZXN0aW5hdGlv
bj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhp
cywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3RpbmF0aW9uKSwgaXNT
eW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQogCkBAIC0zMDIsNiArMzA3LDE2IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2gKIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0
TG9hZCBsb2FkKQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygic3RhcnROZXR3b3JrTG9hZDog
KGlzRmlyc3RMb2FkPSVkLCB0aW1lb3V0PSVmKSIsIGxvYWQgPT0gRmlyc3RMb2FkOjpZZXMsIHJl
cXVlc3QudGltZW91dEludGVydmFsKCkpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIW1fY29udGVudEZpbHRlcikKKyAgICAg
ICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBp
ZiAoIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlKCkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGlzTWFpblJl
c291cmNlKCkpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVz
b3VyY2UocmVxdWVzdC51cmwoKSk7CisjZW5kaWYKKwogICAgIGlmIChsb2FkID09IEZpcnN0TG9h
ZDo6WWVzKSB7CiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCkBAIC03MDQs
NiArNzE5LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmUKIHsK
ICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXND
b2RlPSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRlbnRM
ZW5ndGg9JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFzTmV0
d29ya0xvYWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwg
cmVjZWl2ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwg
ISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVjZWl2ZWRSZXNwb25z
ZSkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9y
ZSk7CisjZW5kaWYKKwogICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBkaWRSZWNl
aXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTkxNSw2ICs5
MzUsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAg
ICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBk
YXRhIHNpemUgZmVhdHVyZS4KICAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRh
LCAtMSk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKQorICAgICAgICAgICAg
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJz
LnJlcXVlc3QudXJsKCkpOworI2VuZGlmCisKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsK
ICAgICB9CiAKQEAgLTEwMDQsNiArMTAyOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZWRpCiAgICAgaWYgKCFtX2ZpcnN0UmVzcG9uc2VVUkwuaXNWYWxpZCgpKQog
ICAgICAgICBtX2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgICAgIHJldHVybjsK
KyNlbmRpZgorCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkg
ewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkKQEAg
LTEwOTgsNiArMTEyOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdp
bGwKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlKQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkRmluaXNoV2l0aFJlZGlyZWN0
UmVzcG9uc2U6Iik7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBkaWRGaW5p
c2hXaXRoUmVkaXJlY3RSZXNwb25zZSIpOwogICAgIHJlZGlyZWN0UmVzcG9uc2Uuc2V0VHlwZShS
ZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpPcGFxdWVyZWRpcmVjdCk7CiAgICAgaWYgKCFpc0Nyb3Nz
T3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVk
aXJlY3RSZXNwb25zZSksIFtdIChhdXRvKSB7IH0pOwpAQCAtMTI2MCw3ICsxMjkxLDEyIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW0KICAgICBpZiAobV9idWZmZXJl
ZERhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBib29sIHNob3VsZEZpbHRlciA9
IGZhbHNlOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCisgICAgc2hvdWxkRmlsdGVyID0gbV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoKm1fYnVmZmVyZWREYXRhLmdldCgpLCBtX2J1
ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbmRpZgorICAgIGlmICghc2hvdWxkRmls
dGVyKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0
aCkpOwogCiAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAg
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwpAQCAtMTI3MCw2ICsxMzA2LDEx
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFMKIHsKICAgICBBU1NF
UlQoIWlzU3luY2hyb25vdXMoKSk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVu
dEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIsIGVuY29kZWREYXRhTGVu
Z3RoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyBidWZmZXIgfSwgZW5jb2RlZERhdGFMZW5n
dGgpKTsKIH0KIApAQCAtMTM2NCw2ICsxNDA1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJldHJpZXZlQwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRG
b3JDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBlbnRyeSkK
IHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5OiIpOwor
ICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogc2VuZFJlc3VsdEZvckNhY2hlRW50
cnkiKTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIGlmICghZW50cnktPnNo
YXJlYWJsZVJlc291cmNlSGFuZGxlKCkuaXNOdWxsKCkpIHsKICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNvdXJjZShlbnRyeS0+c2hhcmVhYmxl
UmVzb3VyY2VIYW5kbGUoKSkpOwpAQCAtMTM4OSw2ICsxNDMxLDEwIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9u
c2VCb2R5RGVjb2RlZFNpemUgPSAwOwogCiAgICAgc2VuZEJ1ZmZlcigqZW50cnktPmJ1ZmZlcigp
LCBlbnRyeS0+YnVmZmVyKCktPnNpemUoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyKQorICAgICAg
ICBtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRl
cnMucmVxdWVzdC51cmwoKSk7CisjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogfQog
CkBAIC0xNzA1LDYgKzE3NTEsMzUgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQXBw
SW5pdGlhdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRpYXRlZCgp
OwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVu
Z3RoKQoreworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIiKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCkpOworfQorCitX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRl
ckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgV1RGTG9n
QWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBjb250ZW50RmlsdGVyRGlkQmxvY2siKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICByZXR1
cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVl
c3QpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkRm9yQ29udGVudEZpbHRlciIpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihlcnJvcikpOwor
ICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29u
c3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1
dGVEYXRhKQoreworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogaGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyIik7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKK30KKyNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIExPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQuaD4KQEAgLTQzLDYgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOworY2xhc3MgQ29udGVudEZpbHRlcjsKIGNs
YXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwpAQCAtNzAsNiArNzIsOSBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIg
ZmluYWwKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpD
b250ZW50RmlsdGVyQ2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9h
ZERlbGF5ZWRSZXBseSYmIHJlcGx5ID0gbnVsbHB0cikKQEAgLTkwLDcgKzk1LDcgQEAgcHVibGlj
OgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Jl
c291cmNlTG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAot
ICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7Cisg
ICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CiAKICAgICB2b2lkIHNl
dFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyBtX3Jlc3Bv
bnNlID0gV1RGTW92ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KQEAgLTE1MSw2
ICsxNTYsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpOwogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lk
IHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+Ojpy
ZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0d29y
a1Jlc291cmNlTG9hZGVyPjo6ZGVyZWYoKTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0
d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYpOwogCkBAIC0x
NTgsNiArMTY4LDE0IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIudG9VSW50NjQoKTsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CisgICAgdm9p
ZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImLCBzaXplX3QpIGZpbmFsOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY29udGVu
dEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3Ry
aW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOworICAgIHZvaWQgY2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJikgZmluYWw7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuVXNlQ2FjaGUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAgICAgYm9vbCBjYW5Vc2VDYWNoZWRSZWRp
cmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIApAQCAtMjU5LDYg
KzI3NywxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZWRp
cmVjdFJlc3BvbnNlOwogICAgIFVSTCBtX2ZpcnN0UmVzcG9uc2VVUkw7IC8vIEZpcnN0IFVSTCBp
biByZXNwb25zZSdzIFVSTCBsaXN0IChodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29u
Y2VwdC1yZXNwb25zZS11cmwtbGlzdCkuCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcm9z
c09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBtX2N1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQ7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RmlsdGVyPiBt
X2NvbnRlbnRGaWx0ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIs
NiArMzIyLDI5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQo
Y29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxl
ciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgaWYgKCFtX2Nv
cmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZp
bHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0KSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJj
ZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
KQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOworfQorCit2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29u
c3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJl
KGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1YnN0aXR1dGVEYXRhLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQyLDYgKzQzLDcg
QEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmlj
czsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAgLTkzLDYg
Kzk1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgY29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CisgICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0
ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmKTsKKyNlbmRpZgorICAgIAogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4g
bV9jb3JlTG9hZGVyOwogICAgIFRyYWNraW5nUGFyYW1ldGVycyBtX3RyYWNraW5nUGFyYW1ldGVy
czsKICAgICBXZWJSZXNvdXJjZUludGVyY2VwdENvbnRyb2xsZXIgbV9pbnRlcmNlcHRDb250cm9s
bGVyOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NjAyNSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw0ICszNywxMSBAQCBtZXNzYWdlcyAtPiBX
ZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAgICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlz
IGZvciB3aGVuIHdlIGhhdmUgdGhlIGVudGlyZSByZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBv
bmNlLCBzdWNoIGFzIHdoZW4gdGhlIHJlc291cmNlIGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBE
aWRSZWNlaXZlUmVzb3VyY2UoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291
cmNlKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpCisgICAgQ2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSkKKyNlbmRpZgorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446012</attachid>
            <date>2021-12-06 02:03:44 -0800</date>
            <delta_ts>2021-12-07 02:15:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211206110342.patch</filename>
            <type>text/plain</type>
            <size>49615</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY0MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIxLTEyLTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBVkRlbGVnYXRpbmdQbGF5
YmFja0Nvb3JkaW5hdG9yIGVycm9yIGNvbXBpbGluZyBvbiBtYWNPUyAxMQpJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYz
LDEyIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2lm
ICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEy
MDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDE2MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dB
VENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSkKKyNkZWZpbmUgRU5BQkxFX0NP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUyBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkcKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFWFRfTUVOVVMpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVTIDAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjEtMTItMDIgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29udGVudCBm
aWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlz
aGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW50Rmls
dGVyVW50aWxCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERl
Y2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJCdWZmZXJzKToK
KyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2spOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjppc1JlcXVpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjplbmFibGVkKToKKwogMjAyMS0xMS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBvcnQgY2FsbCBzaXRlcyB0
byBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjppZGVudGlmaWVyKCkgYW5kIGRyb3AgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg2MDI1
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzA1LDcgKzMzMDUsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBE
QTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOUUxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJl
YWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMy
QTExODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFG
ODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXlt
ZW50U2Vzc2lvbi5oICovOyB9OwotCQlBMTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVu
dEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0
OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAv
KiBDb250ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTE0OTc4NzExQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZp
bHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0
OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEz
QjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE0QkIwOUUxRjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50
LmggKi87IH07CiAJCUExNUQ3NTE2MUU2OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2
OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYg
KzExMywxOCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAgICAg
cmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0
ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUgIT0g
U3RhdGU6OlN0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhDb250ZW50RmlsdGVy
aW5nLCAiQ29udGVudEZpbHRlciB3aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0
IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6RmlsdGVyaW5nOworICAgIEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkp
OworICAgIG1fbWFpblJlc291cmNlVVJMID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVudEZp
bHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291
cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEyICsx
MzUsMTcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFT
U0VSVCghbV9tYWluUmVzb3VyY2UpOwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNlOwog
fQorI2VuZGlmCiAKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJj
ZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIG1fbWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxzZQog
ICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQpAQCAtMTQ1LDExICsxNjIsMjcgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyUmVzcG9ucwogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2Vk
OwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIGJv
b2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKQorI2VuZGlmCiB7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3Jr
RXh0ZW5zaW9uOiBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkIik7CiAgICAgUmVmPENvbnRlbnRG
aWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGVu
Y29kZWREYXRhTGVuZ3RoLCBtX21haW5SZXNvdXJjZVVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtidWZmZXIgPSBS
ZWYgeyBidWZmZXIgfV0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7Cisg
ICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxv
d2VkKSB7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CisgICAgICAg
ICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fYnVmZmVycy5hcHBlbmQoUmVzb3VyY2VEYXRhSXRl
bSB7IFJlZlB0ciB7ICZidWZmZXIgfSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisjZWxzZQogICAg
ICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJWQgYnl0
ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5ndGgsIG1fbWFpblJlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50
aWxCbG9ja2VkKFtkYXRhLCBsZW5ndGhdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZp
bHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEsIGxlbmd0aCk7
CkBAIC0xNTcsMjkgKzE5MCw0NyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJE
YXRhUmVjCiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpCiAgICAgICAg
ICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJjZSk7CisjZW5kaWYKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpC
bG9ja2VkOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVk
KGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCisjZWxzZQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQorI2VuZGlm
CiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291
cmNlKTsKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IGNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZCIpOwogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRD
bGllbnQgeyBtX2NsaWVudCB9OwotCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBVTlVTRURfUEFSQU0ocmVzb3VyY2VVUkwpOworLy8gICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWluUmVzb3VyY2VV
UkwpOworI2Vsc2UKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9t
YWluUmVzb3VyY2UpOwogICAgIGlmIChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkZpbHRlcmluZykgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3
aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVz
b3VyY2VVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworI2Vsc2UKICAgICAgICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWlu
IHJlc291cmNlIGF0IDwlcz4uXG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOworI2VuZGlmCiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxC
bG9ja2VkKFtdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAg
ICAgICAgY29udGVudEZpbHRlci5maW5pc2hlZEFkZGluZ0RhdGEoKTsKICAgICAgICAgfSk7CiAK
ICAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpIHsKICAgICAgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6QWxsb3dlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0
YSgpOworI2Vsc2UKICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291
cmNlKTsKKyNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OlN0b3BwZWQpCkBAIC0yMDYsOCArMjU3LDEwIEBAIGlubGluZSB2b2lkIENvbnRlbnRGaWx0ZXI6
OmZvckVhY2hDb250ZW4KICAgICAgICAgICAgIG1fYmxvY2tpbmdDb250ZW50RmlsdGVyID0gJmNv
bnRlbnRGaWx0ZXI7CiAgICAgICAgICAgICBkaWREZWNpZGUoU3RhdGU6OkJsb2NrZWQpOwogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRGaWx0ZXItPm5lZWRz
TW9yZURhdGEoKSkKKyAgICAgICAgfSBlbHNlIGlmIChjb250ZW50RmlsdGVyLT5uZWVkc01vcmVE
YXRhKCkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogbmVl
ZHMgbW9yZSBkYXRhIik7CiAgICAgICAgICAgICBhbGxGaWx0ZXJzQWxsb3dlZExvYWQgPSBmYWxz
ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChhbGxGaWx0ZXJzQWxsb3dlZExvYWQpCkBA
IC0yMTksNyArMjcyLDEzIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0
YXQKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKG1f
c3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpOwogICAgIEFTU0VSVChzdGF0ZSA9PSBTdGF0ZTo6QWxs
b3dlZCB8fCBzdGF0ZSA9PSBTdGF0ZTo6QmxvY2tlZCk7Ci0gICAgTE9HKENvbnRlbnRGaWx0ZXJp
bmcsICJDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVz
b3VyY2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDog
ImJsb2NrZWQiLCBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSA6ICIiKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0gbV9tYWlu
UmVzb3VyY2VVUkwuc3RyaW5nKCk7CisjZWxzZQorICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
ID0gbV9tYWluUmVzb3VyY2UgPyBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkgOiBlbXB0
eVN0cmluZygpOworI2VuZGlmCisgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50Rmls
dGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5c
biIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDogImJsb2NrZWQiLCB1cmxT
dHJpbmcuYXNjaWkoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lv
bjogQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291
cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJi
bG9ja2VkIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX3N0YXRlID0gc3RhdGU7
CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTIyOCwxMiArMjg3LDIwIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0
YXQKICAgICBtX2NsaWVudC5jYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciht
X2Jsb2NrZWRFcnJvcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQordm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCisj
ZWxzZQogdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKKyNlbmRpZgogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpB
bGxvd2VkKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGJ1ZmZl
ciwgZW5jb2RlZERhdGFMZW5ndGgpOworI2Vsc2UKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAg
IGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCiAg
ICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNl
QnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworI2VuZGlmCiB9CiAKIHN0
YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI0NSw2ICszMTIsNyBAQCBzdGF0
aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCiAgICAgcmV0dXJuIGJsb2NrZWRQYWdlVVJM
OwogfQogCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVl
c3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURh
dGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGlmIChhdXRvIGNvbnRlbnRGaWx0ZXIgPSBhY3Rp
dmVMb2FkZXIuY29udGVudEZpbHRlcigpKSB7CkBAIC0yNTksNiArMzI3LDcgQEAgYm9vbCBDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdAogCiAgICAgcmV0dXJuIHRydWU7CiB9Cisj
ZW5kaWYKIAogYm9vbCBDb250ZW50RmlsdGVyOjp3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgY29uc3QKIHsKQEAgLTI4Myw2ICszNTIs
MTUgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYQogICAgIG1fY2xp
ZW50LmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihibG9ja2Vk
UGFnZVVSTCgpLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVy
U3RvcmVkUmVzb3VyY2VEYXRhKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9i
dWZmZXJzLnNpemUoKTsgaSsrKQorICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX2J1ZmZl
cnNbaV0uYnVmZmVyLCBtX2J1ZmZlcnNbaV0uZW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fYnVm
ZmVycy5jbGVhcigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjMgKzUwLDM0IEBAIGNs
YXNzIENvbnRlbnRGaWx0ZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgdm9pZCBhZGRUeXBlKCkgeyB0eXBlcygpLmFwcGVuZCh0eXBlPFQ+KCkpOyB9CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZShDb250ZW50Rmls
dGVyQ2xpZW50Jik7Ci0gICAgfkNvbnRlbnRGaWx0ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZShDb250ZW50RmlsdGVy
Q2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkNvbnRlbnRGaWx0ZXIoKTsKIAogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVybiAieC1hcHBsZS1jb250ZW50LWZp
bHRlciI7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNvdXJj
ZShjb25zdCBVUkwmKTsKKyNlbHNlCiAgICAgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNvdXJj
ZShDYWNoZWRSYXdSZXNvdXJjZSYpOwotICAgIHZvaWQgc3RvcEZpbHRlcmluZ01haW5SZXNvdXJj
ZSgpOworI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJl
c291cmNlKCk7CiAKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgY29udGludWVB
ZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBj
b250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVk
QnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKTsK
KyNlbHNlCiAgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpOwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJik7CisjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGNvbnRpbnVlQWZ0
ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRl
ciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdpbGxIYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsKLSAgICB2b2lkIGhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAKKyAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBibG9ja2VkRXJyb3IoKSBjb25z
dCB7IHJldHVybiBtX2Jsb2NrZWRFcnJvcjsgfQorICAgIAogcHJpdmF0ZToKICAgICB1c2luZyBT
dGF0ZSA9IFBsYXRmb3JtQ29udGVudEZpbHRlcjo6U3RhdGU7CiAKQEAgLTgyLDExICs5MywyNyBA
QCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPiB2b2lkIGZvckVh
Y2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKEZ1bmN0aW9uJiYpOwogICAgIHZvaWQgZGlkRGVj
aWRlKFN0YXRlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
LCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGVsaXZlclN0b3JlZFJlc291
cmNlRGF0YSgpOworI2Vsc2UKICAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVz
b3VyY2UmKTsKLQorI2VuZGlmCisgICAgCiAgICAgQ29udGFpbmVyIG1fY29udGVudEZpbHRlcnM7
CiAgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9jbGllbnQ7CisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBVUkwgbV9tYWluUmVzb3VyY2VV
Ukw7CisgICAgCisgICAgc3RydWN0IFJlc291cmNlRGF0YUl0ZW0geworICAgICAgICBSZWZQdHI8
Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxl
bmd0aDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxSZXNvdXJjZURhdGFJdGVtPiBtX2J1ZmZl
cnM7CisjZWxzZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X21haW5SZXNvdXJjZTsKKyNlbmRpZgogICAgIGNvbnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciog
bV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNp
b24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQ29u
dGVudEZpbHRlckNsaWVudCB7CkBAIC00MSw3ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9
IDA7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAgdmlydHVhbCB2b2lkIGRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsK
KyNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2so
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9y
Q29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
OCw2ICsxNzgsOCBAQCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzCiB7
CiAgICAgLy8gRklYTUU6IFZlY3RvciBkZWZhdWx0IGNvbnN0cnVjdG9yIHNob3VsZG4ndCBuZWVk
IHRvIGtub3cgdGhlIHNpemUgb2YgdGhlIGVsZW1lbnRzLAogICAgIC8vIHNvIG1fYWN0aXZlQ29u
dGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMgb3VnaHQgdG8gYmUgYWJsZSB0byBiZSBpbml0aWFs
aXplZCB3aXRoIGFuIGluaXRpYWxpemVyIGxpc3QgaW4gdGhlIGhlYWRlciB3aXRob3V0IGluY2x1
ZGluZyBVc2VyQ29udGVudFVSTFBhdHRlcm4uaC4KKworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29y
a0V4dGVuc2lvbjogU3Vic3RpdHV0ZSBkYXRhIGlzIHZhbGlkOiAlZCIsIHN1YnN0aXR1dGVEYXRh
LmlzVmFsaWQoKSk7CiB9CiAKIEZyYW1lTG9hZGVyKiBEb2N1bWVudExvYWRlcjo6ZnJhbWVMb2Fk
ZXIoKSBjb25zdApAQCAtNDIzLDcgKzQyNSw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9h
ZGluZygpIGNvbnN0CiB2b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYg
IW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKHJlc291cmNlKSkK
ICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC03MTMsNyArNzE1LDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICBuZXdSZXF1ZXN0LnNldFVSTChX
VEZNb3ZlKHVybCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
bmV3UmVxdWVzdCkpOwogI2VuZGlmCkBAIC05MTEsNyArOTEzLDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjbwogICAgIEFTU0VSVChyZXNwb25zZS5jZXJ0aWZpY2F0
ZUluZm8oKSk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhh
bmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29u
dGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNl
aXZlZChyZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTMyNyw3ICsxMzI5
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZAogCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRp
bnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCkBAIC0xNDU1LDcgKzE0NTcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9t
RnJhbWUoKQogICAgIHN0b3BMb2FkaW5nKCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1f
bWFpblJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMpKQogICAgICAgICBtX21haW5SZXNvdXJjZS0+
cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAt
MjAxNyw3ICsyMDE5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJl
cwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgbV9jb250ZW50RmlsdGVyID0gIW1fc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpID8gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKSA6IG51
bGxwdHI7CiAjZW5kaWYKIApAQCAtMjIxOSw3ICsyMjIxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6Y2xlYXJNYWluUmVzb3VyY2UoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
aWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMpKQog
ICAgICAgICBtX21haW5SZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9j
b250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWlu
UmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMjM1MCw3ICsyMzUyLDcgQEAgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSBEb2N1bWVudExvYQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpiZWNvbWVN
YWluUmVzb3VyY2VDbGllbnQoKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAg
IG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKm1fbWFpblJlc291
cmNlKTsKICNlbmRpZgpAQCAtMjQwNyw3ICsyNDA5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
ZW5xdWV1ZVNlY3VyaXR5UG9saQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmVucXVldWVTZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdURk1vdmUoZXZlbnRJbml0KSk7CiB9CiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBzaXplKQogewogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsK
QEAgLTI0MTgsMTIgKzI0MjAsMTkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJl
c291cmNlTAogICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCitSZXNvdXJj
ZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCkKK3sKKyAgICByZXR1cm4gaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVu
YmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cit9CisK
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYgc3Vi
c3RpdHV0ZURhdGEpCiB7CiAgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0
KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KKyNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogCi1SZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpj
b250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCitSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVD
b250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKICAgICB1bmJs
b2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7CkBAIC0yNDMz
LDggKzI0NDIsNDAgQEAgUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbAog
ICAgICAgICB9KTsKICAgICB9CiAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7Ci0gICAgcmV0dXJuIGZy
YW1lTG9hZGVyKCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOworICAg
IGF1dG8gZXJyb3IgPSBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3Io
cmVxdWVzdCgpKTsKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgbV9ibG9ja2VkQnlDb250ZW50RmlsdGVyID0gdHJ1ZTsKKyAgICBtX2Js
b2NrZWRFcnJvciA9IGVycm9yOworI2VuZGlmCisKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK3Zv
aWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWls
dXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJz
dGl0dXRlRGF0YSkKK3sKKyAgICBmcmFtZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3Qo
KmZyYW1lKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogfQorCitib29sIERv
Y3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyV2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICByZXR1cm4gbV9ibG9ja2VkQnlDb250
ZW50RmlsdGVyICYmIG1fYmxvY2tlZEVycm9yLmVycm9yQ29kZSgpID09IGVycm9yLmVycm9yQ29k
ZSgpICYmIG1fYmxvY2tlZEVycm9yLmRvbWFpbigpID09IGVycm9yLmRvbWFpbigpOworI2Vsc2UK
KyAgICByZXR1cm4gbV9jb250ZW50RmlsdGVyICYmIG1fY29udGVudEZpbHRlci0+d2lsbEhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworI2VuZGlmCit9CisKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyNlbHNlCisg
ICAgaWYgKG1fY29udGVudEZpbHRlcikKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyNlbmRpZgorfQorCiAjZW5kaWYgLy8gRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRBY3RpdmVD
b250ZW50UnVsZUxpc3RBY3Rpb25QYXR0ZXJucyhjb25zdCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8
U3RyaW5nPj4mIHBhdHRlcm5zKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgRG9jdW1l
bnRMb2FkZXIKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPgogICAgICwg
cHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVibGljIENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQogICAgICwgcHVibGljIENvbnRlbnRGaWx0ZXJDbGllbnQKICNlbmRp
ZgogICAgICwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CkBAIC0zODYsMTAgKzM4
NiwxNCBAQCBwdWJsaWM6CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSBjb25zdDsKIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKICAgICBDb250ZW50RmlsdGVyKiBjb250ZW50RmlsdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50RmlsdGVyLmdldCgpOyB9CiAgICAgdm9pZCByZWYoKSBjb25zdCBm
aW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpyZWYoKTsgfQogICAgIHZvaWQgZGVy
ZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpkZXJlZigpOyB9
CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGhhbmRsZUNvbnRlbnRG
aWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUNv
bnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRJY29u
TG9hZGluZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJik7CkBAIC00MzQsNiArNDM4LDExIEBAIHB1Ymxp
YzoKICAgICBib29sIGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQ7IH0KICAgICB2b2lkIHNldElzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9h
ZFN0YXJ0ZWQoYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVk
KSB7IG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCA9IGlzQ29u
dGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7IH0KIAorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKKyAgICBib29sIGNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBjb250ZW50
RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7
CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVy
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTQ4
Niw3ICs0OTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0jaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAg
Ly8gQ29udGVudEZpbHRlckNsaWVudAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCkgZmluYWw7CkBAIC02MzgsNyArNjQ3LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0
ZXI+IG1fY29udGVudEZpbHRlcjsKKyNlbHNlCisgICAgYm9vbCBtX2Jsb2NrZWRCeUNvbnRlbnRG
aWx0ZXIgeyBmYWxzZSB9OworICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CisjZW5k
aWYKICNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTgsNyArMjQ1OCw2IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKICAgICBtX3Byb3Zpc2lv
bmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci51
cmwoKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBhdXRvIGNvbnRlbnRG
aWx0ZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXIoKTsKICAgICBh
dXRvIGNvbnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nID0gZmFsc2U7CiAjZW5kaWYKIApA
QCAtMjQ2Niw3ICsyNDY1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJv
dmlzaQogICAgIGlmIChoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAgIHdpbGxD
b250aW51ZUxvYWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5nOjpZZXM7CiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChjb250ZW50RmlsdGVyICYmIGNvbnRlbnRGaWx0ZXIt
PndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSkgeworICAgIGlmIChwcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShlcnJvcikpIHsKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdpbGxD
b250aW51ZUxvYWRpbmc6OlllczsKICAgICAgICAgY29udGVudEZpbHRlcldpbGxDb250aW51ZUxv
YWRpbmcgPSB0cnVlOwogICAgIH0KQEAgLTI0NzYsNyArMjQ3NSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKICAgICBpZiAoY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcpCi0gICAgICAgIGNv
bnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAg
ICBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlKGVycm9yKTsKICNlbmRpZgogCiAgICAgbV9wcm92aXNpb25hbExvYWRFcnJv
ckJlaW5nSGFuZGxlZFVSTCA9IHsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xp
Y3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRl
RGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBpZiAoYXV0byBsb2Fk
ZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAg
ICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRl
RGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDcgKzU5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KTsgfQogICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2Zh
aWxpbmdVUkw7IH0KICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgICAgIAorCisgICAgICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZShEZWNvZGVyJiwgU3Vic3RpdHV0ZURhdGEmKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGVudDsKICAgICAgICAgVVJMIG1fZmFpbGluZ1VSTDsK
QEAgLTY3LDQgKzcwLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAgICAgfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgU3Vic3RpdHV0ZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV9jb250ZW50IDw8IG1fZmFpbGluZ1VSTCA8PCBtX3Jlc3Bv
bnNlIDw8IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KK2Jvb2wgU3Vic3RpdHV0ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEu
bV9jb250ZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLm1fZmFpbGluZ1VSTCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX3Jlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9u
SGlzdG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5t
bQkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyNSw2ICsy
MjUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpoYW5kCiAKIGJvb2wg
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmlzUmVxdWlyZWQoKQogeworICAgIFdURkxv
Z0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogaXNSZXF1aXJlZCAlZCIsIFtORUZpbHRlclNvdXJj
ZSBmaWx0ZXJSZXF1aXJlZF0pOwogICAgIHJldHVybiBbTkVGaWx0ZXJTb3VyY2UgZmlsdGVyUmVx
dWlyZWRdOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQkocmV2aXNpb24g
Mjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgYm9vbCBQ
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYgogI2Vsc2UKICAgICBib29sIGVuYWJs
ZWQgPSBbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBpc01hbmFnZWRTZXNzaW9uXTsKICNl
bmRpZgorICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogZW5hYmxlZCAlZCIsIGVu
YWJsZWQpOwogICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIgaXMgJXMuXG4iLCBlbmFibGVkID8gImVuYWJsZWQiIDogIm5vdCBlbmFibGVkIik7
CiAgICAgcmV0dXJuIGVuYWJsZWQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NTQxKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBA
QAorMjAyMS0xMi0wNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5nIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFdpdGhSZWRpcmVj
dFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9h
ZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkRm9yQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKwogMjAy
MS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmls
dGVyRWZmZWN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDYgKzY3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3Q29udmVy
dGVyLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4KKyNlbmRpZgorCiAjZGVm
aW5lIExPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVw
IC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1l
SUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVk
LCBkZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVy
OjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVz
b3VyY2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3Rp
bmF0aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0FERVJf
UkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFt
ZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0l
ZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCksIGlzTWFpblJl
c291cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRlcnMub3B0aW9ucy5kZXN0
aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMzAyLDYgKzMw
NywxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInN0YXJ0
TmV0d29ya0xvYWQ6IChpc0ZpcnN0TG9hZD0lZCwgdGltZW91dD0lZikiLCBsb2FkID09IEZpcnN0
TG9hZDo6WWVzLCByZXF1ZXN0LnRpbWVvdXRJbnRlcnZhbCgpKTsKKworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKCFtX2NvbnRlbnRG
aWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgq
dGhpcyk7CisgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJl
cXVlc3QocmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChpc01haW5SZXNvdXJjZSgpKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0Rmls
dGVyaW5nTWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOworI2VuZGlmCisKICAgICBpZiAobG9h
ZCA9PSBGaXJzdExvYWQ6OlllcykgewogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMo
KTsKIApAQCAtNzA0LDYgKzcxOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlCiB7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IChodHRwU3RhdHVzQ29kZT0lZCwgTUlNRVR5cGU9JSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoPSUiIFBSSWQ2NCAiLCBoYXNDYWNoZWRFbnRyeUZvclZhbGlkYXRp
b249JWQsIGhhc05ldHdvcmtMb2FkQ2hlY2tlcj0lZCkiLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpLCBy
ZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCAhIW1fY2FjaGVFbnRyeUZv
clZhbGlkYXRpb24sICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50Rmls
dGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJl
Y2VpdmVkUmVzcG9uc2UpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUG9saWN5
QWN0aW9uOjpJZ25vcmUpOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkKICAg
ICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlY2VpdmVkUmVzcG9uc2UpOwog
CkBAIC05MTUsNiArOTM1LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2EKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUg
dGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCiAgICAgICAgICAgICBzZW5kQnVmZmVyKCpt
X2J1ZmZlcmVkRGF0YSwgLTEpOwogICAgICAgICB9CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikK
KyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVk
KG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyNlbmRpZgorCiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xv
YWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xMDA0LDYgKzEwMjksMTEgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaQogICAgIGlmICghbV9maXJzdFJlc3BvbnNlVVJM
LmlzVmFsaWQoKSkKICAgICAgICAgbV9maXJzdFJlc3BvbnNlVVJMID0gcmVkaXJlY3RSZXNwb25z
ZS51cmwoKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250
aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQorICAg
ICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IHByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBpZiAoIXNlc3Npb25JRCgpLmlz
RXBoZW1lcmFsKCkpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KHJlZGlyZWN0UmVxdWVz
dC51cmwoKSkpCkBAIC0xMDk4LDYgKzExMjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y29udGludWVXaWxsCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoV2l0
aFJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZEZpbmlz
aFdpdGhSZWRpcmVjdFJlc3BvbnNlOiIpOworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVu
c2lvbjogZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2UiKTsKICAgICByZWRpcmVjdFJlc3Bv
bnNlLnNldFR5cGUoUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6T3BhcXVlcmVkaXJlY3QpOwogICAg
IGlmICghaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIGRpZFJlY2VpdmVSZXNwb25z
ZShXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBbXSAoYXV0bykgeyB9KTsKQEAgLTEyNjAsNyAr
MTI5MSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltCiAgICAg
aWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZl
cmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgYm9vbCBz
aG91bGRGaWx0ZXIgPSBmYWxzZTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIHNob3VsZEZpbHRlciA9IG1fY29udGVudEZpbHRlciAmJiAh
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKCptX2J1ZmZlcmVkRGF0
YS5nZXQoKSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCk7CisjZW5kaWYKKyAgICBp
ZiAoIXNob3VsZEZpbHRlcikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5j
b2RlZERhdGFMZW5ndGgpKTsKIAogICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKQEAgLTEy
NzAsNiArMTMwNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihT
CiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVy
ICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyLCBl
bmNvZGVkRGF0YUxlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyIH0sIGVu
Y29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKQEAgLTEzNjQsNiArMTQwNSw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUMKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpF
bnRyeT4gZW50cnkpCiB7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJzZW5kUmVzdWx0Rm9yQ2Fj
aGVFbnRyeToiKTsKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IHNlbmRSZXN1
bHRGb3JDYWNoZUVudHJ5Iik7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBp
ZiAoIWVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpLmlzTnVsbCgpKSB7CiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzb3VyY2UoZW50
cnktPnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKCkpKTsKQEAgLTEzODksNiArMTQzMSwxMCBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvCiAgICAgbmV0d29ya0xvYWRN
ZXRyaWNzLnJlc3BvbnNlQm9keURlY29kZWRTaXplID0gMDsKIAogICAgIHNlbmRCdWZmZXIoKmVu
dHJ5LT5idWZmZXIoKSwgZW50cnktPmJ1ZmZlcigpLT5zaXplKCkpOworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZp
bHRlcikKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNo
ZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworI2VuZGlmCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1l
dHJpY3MpKTsKIH0KIApAQCAtMTcwNSw2ICsxNzUxLDQwIEBAIGJvb2wgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjppc0FwcEluaXRpYXQKICAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaXNB
cHBJbml0aWF0ZWQoKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246
IGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyIik7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5n
dGgpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQor
eworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogY29udGVudEZpbHRlckRpZEJs
b2NrIik7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFy
YW1ldGVycy5yZXF1ZXN0KTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQoreworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogY2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIiKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChtX2NvbnRlbnRGaWx0ZXIpOworICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZShlcnJvcik7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBi
bG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQor
eworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogaGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyIik7CisgICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCwg
c3Vic3RpdHV0ZURhdGEpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9j
b250ZW50RmlsdGVyKTsKKyAgICAgICAgYXV0byYgZXJyb3IgPSBtX2NvbnRlbnRGaWx0ZXItPmJs
b2NrZWRFcnJvcigpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
Q2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoZXJyb3IpKTsKKyAgICB9Cit9
CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBMT0FERVJfUkVMRUFTRV9MT0cK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CkBAIC00Myw2ICs0NCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKK2NsYXNzIENvbnRlbnRG
aWx0ZXI7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTcwLDYgKzcyLDkgQEAgY2xhc3MgTmV0d29ya1Jlc291
cmNlTG9hZGVyIGZpbmFsCiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBw
dWJsaWMgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgLCBwdWJsaWMg
V2ViQ29yZTo6Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcgorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLCBwdWJsaWMg
V2ViQ29yZTo6Q29udGVudEZpbHRlckNsaWVudAorI2VuZGlmCiAgICAgLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5j
aHJvbm91c0xvYWREZWxheWVkUmVwbHkmJiByZXBseSA9IG51bGxwdHIpCkBAIC05MCw3ICs5NSw3
IEBAIHB1YmxpYzoKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2
ZU5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOwogCiAg
ICAgdm9pZCBzZXRSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Up
IHsgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9
CkBAIC0xNTEsNiArMTU2LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBcHBJbml0aWF0ZWQo
KTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgdm9pZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNl
TG9hZGVyPjo6cmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3Vu
dGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj46OmRlcmVmKCk7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYm
KTsKIApAQCAtMTU4LDYgKzE2OCwxNCBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCk7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLy8gQ29udGVudEZpbHRlckNsaWVu
dAorICAgIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJiwgc2l6ZV90KSBmaW5hbDsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKKyAgICB2
b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOworI2VuZGlmCisKICAgICBib29sIGNhblVzZUNhY2hl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIGJvb2wgY2FuVXNl
Q2FjaGVkUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAK
QEAgLTI1OSw2ICsyNzcsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKICAgICBVUkwgbV9maXJzdFJlc3BvbnNlVVJMOyAvLyBG
aXJzdCBVUkwgaW4gcmVzcG9uc2UncyBVUkwgbGlzdCAoaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3
Zy5vcmcvI2NvbmNlcHQtcmVzcG9uc2UtdXJsLWxpc3QpLgogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4gbV9jdXJyZW50
Q29vcEVuZm9yY2VtZW50UmVzdWx0OworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVu
dEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIyLDYgKzMyMiwyOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzb3VyCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5i
bG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAg
IGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRs
ZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxN
YWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvcikKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1
bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKK30KKwordm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50
RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9j
b3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhh
bmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBz
dWJzdGl0dXRlRGF0YSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODYw
MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1N1YnN0aXR1dGVEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQyLDYgKzQzLDcgQEAgY2xhc3MgRm9ybURhdGFS
ZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAgLTkzLDYgKzk1LDEyIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBX
ZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29u
dGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBoYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRpZgorICAg
IAogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9hZGVyOwogICAg
IFRyYWNraW5nUGFyYW1ldGVycyBtX3RyYWNraW5nUGFyYW1ldGVyczsKICAgICBXZWJSZXNvdXJj
ZUludGVyY2VwdENvbnRyb2xsZXIgbV9pbnRlcmNlcHRDb250cm9sbGVyOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw0ICszNywxMSBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBM
ZWdhY3lSZWNlCiAgICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlzIGZvciB3aGVuIHdlIGhhdmUg
dGhlIGVudGlyZSByZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBvbmNlLCBzdWNoIGFzIHdoZW4g
dGhlIHJlc291cmNlIGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBEaWRSZWNlaXZlUmVzb3VyY2Uo
V2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlKQogI2VuZGlmCisKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIENv
bnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisg
ICAgQ2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvcikKKyAgICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIoVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJz
dGl0dXRlRGF0YSkKKyNlbmRpZgorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446141</attachid>
            <date>2021-12-07 02:15:55 -0800</date>
            <delta_ts>2021-12-07 04:42:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211207111553.patch</filename>
            <type>text/plain</type>
            <size>51277</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY0MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIxLTEyLTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBVkRlbGVnYXRpbmdQbGF5
YmFja0Nvb3JkaW5hdG9yIGVycm9yIGNvbXBpbGluZyBvbiBtYWNPUyAxMQpJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYz
LDEyIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2lm
ICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEy
MDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDE2MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dB
VENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSkKKyNkZWZpbmUgRU5BQkxFX0NP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUyBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkcKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFWFRfTUVOVVMpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVTIDAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjEtMTItMDIgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29udGVudCBm
aWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlz
aGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW50Rmls
dGVyVW50aWxCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERl
Y2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJCdWZmZXJzKToK
KyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2spOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjppc1JlcXVpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjplbmFibGVkKToKKwogMjAyMS0xMS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBvcnQgY2FsbCBzaXRlcyB0
byBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjppZGVudGlmaWVyKCkgYW5kIGRyb3AgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg2MDI1
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzA1LDcgKzMzMDUsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBE
QTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOUUxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJl
YWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMy
QTExODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFG
ODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXlt
ZW50U2Vzc2lvbi5oICovOyB9OwotCQlBMTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVu
dEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0
OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAv
KiBDb250ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTE0OTc4NzExQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZp
bHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0
OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEz
QjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE0QkIwOUUxRjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50
LmggKi87IH07CiAJCUExNUQ3NTE2MUU2OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2
OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYg
KzExMywxOCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAgICAg
cmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0
ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUgIT0g
U3RhdGU6OlN0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhDb250ZW50RmlsdGVy
aW5nLCAiQ29udGVudEZpbHRlciB3aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0
IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6RmlsdGVyaW5nOworICAgIEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkp
OworICAgIG1fbWFpblJlc291cmNlVVJMID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVudEZp
bHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291
cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEyICsx
MzUsMTcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFT
U0VSVCghbV9tYWluUmVzb3VyY2UpOwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNlOwog
fQorI2VuZGlmCiAKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJj
ZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIG1fbWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxzZQog
ICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQpAQCAtMTQ1LDExICsxNjIsMjcgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyUmVzcG9ucwogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2Vk
OwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIGJv
b2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKQorI2VuZGlmCiB7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3Jr
RXh0ZW5zaW9uOiBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkIik7CiAgICAgUmVmPENvbnRlbnRG
aWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGVu
Y29kZWREYXRhTGVuZ3RoLCBtX21haW5SZXNvdXJjZVVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtidWZmZXIgPSBS
ZWYgeyBidWZmZXIgfV0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7Cisg
ICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxv
d2VkKSB7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CisgICAgICAg
ICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fYnVmZmVycy5hcHBlbmQoUmVzb3VyY2VEYXRhSXRl
bSB7IFJlZlB0ciB7ICZidWZmZXIgfSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisjZWxzZQogICAg
ICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJWQgYnl0
ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5ndGgsIG1fbWFpblJlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50
aWxCbG9ja2VkKFtkYXRhLCBsZW5ndGhdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZp
bHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEsIGxlbmd0aCk7
CkBAIC0xNTcsMjkgKzE5MCw0NyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJE
YXRhUmVjCiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpCiAgICAgICAg
ICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJjZSk7CisjZW5kaWYKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpC
bG9ja2VkOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVk
KGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCisjZWxzZQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQorI2VuZGlm
CiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291
cmNlKTsKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IGNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZCIpOwogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRD
bGllbnQgeyBtX2NsaWVudCB9OwotCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBVTlVTRURfUEFSQU0ocmVzb3VyY2VVUkwpOworLy8gICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWluUmVzb3VyY2VV
UkwpOworI2Vsc2UKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9t
YWluUmVzb3VyY2UpOwogICAgIGlmIChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkZpbHRlcmluZykgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3
aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVz
b3VyY2VVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworI2Vsc2UKICAgICAgICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWlu
IHJlc291cmNlIGF0IDwlcz4uXG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOworI2VuZGlmCiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxC
bG9ja2VkKFtdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAg
ICAgICAgY29udGVudEZpbHRlci5maW5pc2hlZEFkZGluZ0RhdGEoKTsKICAgICAgICAgfSk7CiAK
ICAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpIHsKICAgICAgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6QWxsb3dlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0
YSgpOworI2Vsc2UKICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291
cmNlKTsKKyNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OlN0b3BwZWQpCkBAIC0yMDYsOCArMjU3LDEwIEBAIGlubGluZSB2b2lkIENvbnRlbnRGaWx0ZXI6
OmZvckVhY2hDb250ZW4KICAgICAgICAgICAgIG1fYmxvY2tpbmdDb250ZW50RmlsdGVyID0gJmNv
bnRlbnRGaWx0ZXI7CiAgICAgICAgICAgICBkaWREZWNpZGUoU3RhdGU6OkJsb2NrZWQpOwogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRGaWx0ZXItPm5lZWRz
TW9yZURhdGEoKSkKKyAgICAgICAgfSBlbHNlIGlmIChjb250ZW50RmlsdGVyLT5uZWVkc01vcmVE
YXRhKCkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogbmVl
ZHMgbW9yZSBkYXRhIik7CiAgICAgICAgICAgICBhbGxGaWx0ZXJzQWxsb3dlZExvYWQgPSBmYWxz
ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChhbGxGaWx0ZXJzQWxsb3dlZExvYWQpCkBA
IC0yMTksNyArMjcyLDEzIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0
YXQKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKG1f
c3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpOwogICAgIEFTU0VSVChzdGF0ZSA9PSBTdGF0ZTo6QWxs
b3dlZCB8fCBzdGF0ZSA9PSBTdGF0ZTo6QmxvY2tlZCk7Ci0gICAgTE9HKENvbnRlbnRGaWx0ZXJp
bmcsICJDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVz
b3VyY2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDog
ImJsb2NrZWQiLCBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSA6ICIiKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0gbV9tYWlu
UmVzb3VyY2VVUkwuc3RyaW5nKCk7CisjZWxzZQorICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
ID0gbV9tYWluUmVzb3VyY2UgPyBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkgOiBlbXB0
eVN0cmluZygpOworI2VuZGlmCisgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50Rmls
dGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5c
biIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDogImJsb2NrZWQiLCB1cmxT
dHJpbmcuYXNjaWkoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lv
bjogQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291
cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJi
bG9ja2VkIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX3N0YXRlID0gc3RhdGU7
CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTIyOCwxMiArMjg3LDIwIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0
YXQKICAgICBtX2NsaWVudC5jYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciht
X2Jsb2NrZWRFcnJvcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQordm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCisj
ZWxzZQogdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKKyNlbmRpZgogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpB
bGxvd2VkKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGJ1ZmZl
ciwgZW5jb2RlZERhdGFMZW5ndGgpOworI2Vsc2UKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAg
IGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCiAg
ICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNl
QnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworI2VuZGlmCiB9CiAKIHN0
YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI0NSw2ICszMTIsNyBAQCBzdGF0
aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCiAgICAgcmV0dXJuIGJsb2NrZWRQYWdlVVJM
OwogfQogCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVl
c3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURh
dGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGlmIChhdXRvIGNvbnRlbnRGaWx0ZXIgPSBhY3Rp
dmVMb2FkZXIuY29udGVudEZpbHRlcigpKSB7CkBAIC0yNTksNiArMzI3LDcgQEAgYm9vbCBDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdAogCiAgICAgcmV0dXJuIHRydWU7CiB9Cisj
ZW5kaWYKIAogYm9vbCBDb250ZW50RmlsdGVyOjp3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgY29uc3QKIHsKQEAgLTI4Myw2ICszNTIs
MTUgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYQogICAgIG1fY2xp
ZW50LmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihibG9ja2Vk
UGFnZVVSTCgpLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVy
U3RvcmVkUmVzb3VyY2VEYXRhKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9i
dWZmZXJzLnNpemUoKTsgaSsrKQorICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX2J1ZmZl
cnNbaV0uYnVmZmVyLCBtX2J1ZmZlcnNbaV0uZW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fYnVm
ZmVycy5jbGVhcigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjMgKzUwLDM0IEBAIGNs
YXNzIENvbnRlbnRGaWx0ZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgdm9pZCBhZGRUeXBlKCkgeyB0eXBlcygpLmFwcGVuZCh0eXBlPFQ+KCkpOyB9CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZShDb250ZW50Rmls
dGVyQ2xpZW50Jik7Ci0gICAgfkNvbnRlbnRGaWx0ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZShDb250ZW50RmlsdGVy
Q2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkNvbnRlbnRGaWx0ZXIoKTsKIAogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVybiAieC1hcHBsZS1jb250ZW50LWZp
bHRlciI7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNvdXJj
ZShjb25zdCBVUkwmKTsKKyNlbHNlCiAgICAgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNvdXJj
ZShDYWNoZWRSYXdSZXNvdXJjZSYpOwotICAgIHZvaWQgc3RvcEZpbHRlcmluZ01haW5SZXNvdXJj
ZSgpOworI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJl
c291cmNlKCk7CiAKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgY29udGludWVB
ZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBj
b250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVk
QnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKTsK
KyNlbHNlCiAgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpOwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJik7CisjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGNvbnRpbnVlQWZ0
ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRl
ciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdpbGxIYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsKLSAgICB2b2lkIGhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAKKyAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBibG9ja2VkRXJyb3IoKSBjb25z
dCB7IHJldHVybiBtX2Jsb2NrZWRFcnJvcjsgfQorICAgIAogcHJpdmF0ZToKICAgICB1c2luZyBT
dGF0ZSA9IFBsYXRmb3JtQ29udGVudEZpbHRlcjo6U3RhdGU7CiAKQEAgLTgyLDExICs5MywyNyBA
QCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPiB2b2lkIGZvckVh
Y2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKEZ1bmN0aW9uJiYpOwogICAgIHZvaWQgZGlkRGVj
aWRlKFN0YXRlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
LCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGVsaXZlclN0b3JlZFJlc291
cmNlRGF0YSgpOworI2Vsc2UKICAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVz
b3VyY2UmKTsKLQorI2VuZGlmCisgICAgCiAgICAgQ29udGFpbmVyIG1fY29udGVudEZpbHRlcnM7
CiAgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9jbGllbnQ7CisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBVUkwgbV9tYWluUmVzb3VyY2VV
Ukw7CisgICAgCisgICAgc3RydWN0IFJlc291cmNlRGF0YUl0ZW0geworICAgICAgICBSZWZQdHI8
Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxl
bmd0aDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxSZXNvdXJjZURhdGFJdGVtPiBtX2J1ZmZl
cnM7CisjZWxzZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X21haW5SZXNvdXJjZTsKKyNlbmRpZgogICAgIGNvbnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciog
bV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNp
b24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQ29u
dGVudEZpbHRlckNsaWVudCB7CkBAIC00MSw3ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9
IDA7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAgdmlydHVhbCB2b2lkIGRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsK
KyNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2so
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9y
Q29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
OCw2ICsxNzgsOCBAQCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzCiB7
CiAgICAgLy8gRklYTUU6IFZlY3RvciBkZWZhdWx0IGNvbnN0cnVjdG9yIHNob3VsZG4ndCBuZWVk
IHRvIGtub3cgdGhlIHNpemUgb2YgdGhlIGVsZW1lbnRzLAogICAgIC8vIHNvIG1fYWN0aXZlQ29u
dGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMgb3VnaHQgdG8gYmUgYWJsZSB0byBiZSBpbml0aWFs
aXplZCB3aXRoIGFuIGluaXRpYWxpemVyIGxpc3QgaW4gdGhlIGhlYWRlciB3aXRob3V0IGluY2x1
ZGluZyBVc2VyQ29udGVudFVSTFBhdHRlcm4uaC4KKworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29y
a0V4dGVuc2lvbjogU3Vic3RpdHV0ZSBkYXRhIGlzIHZhbGlkOiAlZCIsIHN1YnN0aXR1dGVEYXRh
LmlzVmFsaWQoKSk7CiB9CiAKIEZyYW1lTG9hZGVyKiBEb2N1bWVudExvYWRlcjo6ZnJhbWVMb2Fk
ZXIoKSBjb25zdApAQCAtNDIzLDcgKzQyNSw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9h
ZGluZygpIGNvbnN0CiB2b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYg
IW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKHJlc291cmNlKSkK
ICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC03MTMsNyArNzE1LDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICBuZXdSZXF1ZXN0LnNldFVSTChX
VEZNb3ZlKHVybCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
bmV3UmVxdWVzdCkpOwogI2VuZGlmCkBAIC05MTEsNyArOTEzLDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjbwogICAgIEFTU0VSVChyZXNwb25zZS5jZXJ0aWZpY2F0
ZUluZm8oKSk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhh
bmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29u
dGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNl
aXZlZChyZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTMyNyw3ICsxMzI5
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZAogCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRp
bnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCkBAIC0xNDU1LDcgKzE0NTcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9t
RnJhbWUoKQogICAgIHN0b3BMb2FkaW5nKCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1f
bWFpblJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMpKQogICAgICAgICBtX21haW5SZXNvdXJjZS0+
cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAt
MjAxNyw3ICsyMDE5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJl
cwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgbV9jb250ZW50RmlsdGVyID0gIW1fc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpID8gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKSA6IG51
bGxwdHI7CiAjZW5kaWYKIApAQCAtMjIxOSw3ICsyMjIxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6Y2xlYXJNYWluUmVzb3VyY2UoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
aWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMpKQog
ICAgICAgICBtX21haW5SZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9j
b250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWlu
UmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMjM1MCw3ICsyMzUyLDcgQEAgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSBEb2N1bWVudExvYQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpiZWNvbWVN
YWluUmVzb3VyY2VDbGllbnQoKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAg
IG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKm1fbWFpblJlc291
cmNlKTsKICNlbmRpZgpAQCAtMjQwNyw3ICsyNDA5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
ZW5xdWV1ZVNlY3VyaXR5UG9saQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmVucXVldWVTZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdURk1vdmUoZXZlbnRJbml0KSk7CiB9CiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBzaXplKQogewogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsK
QEAgLTI0MTgsMTIgKzI0MjAsMTkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJl
c291cmNlTAogICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCitSZXNvdXJj
ZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCkKK3sKKyAgICByZXR1cm4gaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVu
YmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cit9CisK
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYgc3Vi
c3RpdHV0ZURhdGEpCiB7CiAgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0
KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KKyNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogCi1SZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpj
b250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCitSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVD
b250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKICAgICB1bmJs
b2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7CkBAIC0yNDMz
LDggKzI0NDIsNDAgQEAgUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbAog
ICAgICAgICB9KTsKICAgICB9CiAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7Ci0gICAgcmV0dXJuIGZy
YW1lTG9hZGVyKCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOworICAg
IGF1dG8gZXJyb3IgPSBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3Io
cmVxdWVzdCgpKTsKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgbV9ibG9ja2VkQnlDb250ZW50RmlsdGVyID0gdHJ1ZTsKKyAgICBtX2Js
b2NrZWRFcnJvciA9IGVycm9yOworI2VuZGlmCisKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK3Zv
aWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWls
dXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJz
dGl0dXRlRGF0YSkKK3sKKyAgICBmcmFtZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3Qo
KmZyYW1lKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogfQorCitib29sIERv
Y3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyV2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICByZXR1cm4gbV9ibG9ja2VkQnlDb250
ZW50RmlsdGVyICYmIG1fYmxvY2tlZEVycm9yLmVycm9yQ29kZSgpID09IGVycm9yLmVycm9yQ29k
ZSgpICYmIG1fYmxvY2tlZEVycm9yLmRvbWFpbigpID09IGVycm9yLmRvbWFpbigpOworI2Vsc2UK
KyAgICByZXR1cm4gbV9jb250ZW50RmlsdGVyICYmIG1fY29udGVudEZpbHRlci0+d2lsbEhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworI2VuZGlmCit9CisKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyNlbHNlCisg
ICAgaWYgKG1fY29udGVudEZpbHRlcikKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyNlbmRpZgorfQorCiAjZW5kaWYgLy8gRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRBY3RpdmVD
b250ZW50UnVsZUxpc3RBY3Rpb25QYXR0ZXJucyhjb25zdCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8
U3RyaW5nPj4mIHBhdHRlcm5zKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgRG9jdW1l
bnRMb2FkZXIKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPgogICAgICwg
cHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVibGljIENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQogICAgICwgcHVibGljIENvbnRlbnRGaWx0ZXJDbGllbnQKICNlbmRp
ZgogICAgICwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CkBAIC0zODYsMTAgKzM4
NiwxNCBAQCBwdWJsaWM6CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSBjb25zdDsKIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKICAgICBDb250ZW50RmlsdGVyKiBjb250ZW50RmlsdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50RmlsdGVyLmdldCgpOyB9CiAgICAgdm9pZCByZWYoKSBjb25zdCBm
aW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpyZWYoKTsgfQogICAgIHZvaWQgZGVy
ZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpkZXJlZigpOyB9
CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGhhbmRsZUNvbnRlbnRG
aWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUNv
bnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRJY29u
TG9hZGluZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJik7CkBAIC00MzQsNiArNDM4LDExIEBAIHB1Ymxp
YzoKICAgICBib29sIGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQ7IH0KICAgICB2b2lkIHNldElzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9h
ZFN0YXJ0ZWQoYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVk
KSB7IG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCA9IGlzQ29u
dGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7IH0KIAorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKKyAgICBib29sIGNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBjb250ZW50
RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7
CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVy
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTQ4
Niw3ICs0OTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0jaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAg
Ly8gQ29udGVudEZpbHRlckNsaWVudAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCkgZmluYWw7CkBAIC02MzgsNyArNjQ3LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0
ZXI+IG1fY29udGVudEZpbHRlcjsKKyNlbHNlCisgICAgYm9vbCBtX2Jsb2NrZWRCeUNvbnRlbnRG
aWx0ZXIgeyBmYWxzZSB9OworICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CisjZW5k
aWYKICNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTgsNyArMjQ1OCw2IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKICAgICBtX3Byb3Zpc2lv
bmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci51
cmwoKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBhdXRvIGNvbnRlbnRG
aWx0ZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXIoKTsKICAgICBh
dXRvIGNvbnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nID0gZmFsc2U7CiAjZW5kaWYKIApA
QCAtMjQ2Niw3ICsyNDY1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJv
dmlzaQogICAgIGlmIChoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAgIHdpbGxD
b250aW51ZUxvYWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5nOjpZZXM7CiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChjb250ZW50RmlsdGVyICYmIGNvbnRlbnRGaWx0ZXIt
PndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSkgeworICAgIGlmIChwcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShlcnJvcikpIHsKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdpbGxD
b250aW51ZUxvYWRpbmc6OlllczsKICAgICAgICAgY29udGVudEZpbHRlcldpbGxDb250aW51ZUxv
YWRpbmcgPSB0cnVlOwogICAgIH0KQEAgLTI0NzYsNyArMjQ3NSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKICAgICBpZiAoY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcpCi0gICAgICAgIGNv
bnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAg
ICBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlKGVycm9yKTsKICNlbmRpZgogCiAgICAgbV9wcm92aXNpb25hbExvYWRFcnJv
ckJlaW5nSGFuZGxlZFVSTCA9IHsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xp
Y3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRl
RGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBpZiAoYXV0byBsb2Fk
ZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAg
ICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRl
RGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDcgKzU5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KTsgfQogICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2Zh
aWxpbmdVUkw7IH0KICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgICAgIAorCisgICAgICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZShEZWNvZGVyJiwgU3Vic3RpdHV0ZURhdGEmKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGVudDsKICAgICAgICAgVVJMIG1fZmFpbGluZ1VSTDsK
QEAgLTY3LDQgKzcwLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAgICAgfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgU3Vic3RpdHV0ZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV9jb250ZW50IDw8IG1fZmFpbGluZ1VSTCA8PCBtX3Jlc3Bv
bnNlIDw8IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KK2Jvb2wgU3Vic3RpdHV0ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEu
bV9jb250ZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLm1fZmFpbGluZ1VSTCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX3Jlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9u
SGlzdG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5t
bQkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyNSw2ICsy
MjUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpoYW5kCiAKIGJvb2wg
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmlzUmVxdWlyZWQoKQogeworICAgIFdURkxv
Z0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogaXNSZXF1aXJlZCAlZCIsIFtORUZpbHRlclNvdXJj
ZSBmaWx0ZXJSZXF1aXJlZF0pOwogICAgIHJldHVybiBbTkVGaWx0ZXJTb3VyY2UgZmlsdGVyUmVx
dWlyZWRdOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQkocmV2aXNpb24g
Mjg2MDI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgYm9vbCBQ
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYgogI2Vsc2UKICAgICBib29sIGVuYWJs
ZWQgPSBbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBpc01hbmFnZWRTZXNzaW9uXTsKICNl
bmRpZgorICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogZW5hYmxlZCAlZCIsIGVu
YWJsZWQpOwogICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIgaXMgJXMuXG4iLCBlbmFibGVkID8gImVuYWJsZWQiIDogIm5vdCBlbmFibGVkIik7
CiAgICAgcmV0dXJuIGVuYWJsZWQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NTQxKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBA
QAorMjAyMS0xMi0wNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5nIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFdpdGhSZWRpcmVj
dFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9h
ZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkRm9yQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKwogMjAy
MS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmls
dGVyRWZmZWN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDYgKzY3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3Q29udmVy
dGVyLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4KKyNlbmRpZgorCiAjZGVm
aW5lIExPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVw
IC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1l
SUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVk
LCBkZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVy
OjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVz
b3VyY2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3Rp
bmF0aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0FERVJf
UkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFt
ZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0l
ZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCksIGlzTWFpblJl
c291cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRlcnMub3B0aW9ucy5kZXN0
aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTg3LDYgKzE5
MiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIEFTU0VSVCgh
bV93YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwogCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBhdXRvIHIgPSBSZXNv
dXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9OworICAgIHN0YXJ0Q29udGVudEZpbHRl
cmluZyhyKTsKKyNlbmRpZgorCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAg
ICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5h
bFJlcXVlc3QoKSB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC0yMjUsNiAr
MjM1LDE4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgc3RhcnRO
ZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCBGaXJzdExv
YWQ6Olllcyk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRl
cmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKCFtX2NvbnRlbnRGaWx0
ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhp
cyk7CisgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVl
c3QocmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
IChpc01haW5SZXNvdXJjZSgpKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVy
aW5nTWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygicmV0cmlldmVDYWNoZUVudHJ5
OiBpc01haW5GcmFtZUxvYWQ9JWQiLCBpc01haW5GcmFtZUxvYWQoKSk7CkBAIC03MDQsNiArNzI2
LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmUKIHsKICAgICBM
T0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVk
LCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRlbnRMZW5ndGg9
JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFzTmV0d29ya0xv
YWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2
ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgISFtX25l
dHdvcmtMb2FkQ2hlY2tlcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZp
bHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVjZWl2ZWRSZXNwb25zZSkpCisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7Cisj
ZW5kaWYKKwogICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBkaWRSZWNlaXZlTWFp
blJlc291cmNlUmVzcG9uc2UocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTkxNSw2ICs5NDIsMTEg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAgICAgICAg
Ly8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNp
emUgZmVhdHVyZS4KICAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7
CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKQorICAgICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkpOworI2VuZGlmCisKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9
CiAKQEAgLTEwMDQsNiArMTAzNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZWRpCiAgICAgaWYgKCFtX2ZpcnN0UmVzcG9uc2VVUkwuaXNWYWxpZCgpKQogICAgICAg
ICBtX2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwogCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9j
b250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJl
cXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgICAgIHJldHVybjsKKyNlbmRp
ZgorCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgewogICAg
ICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkKQEAgLTEwOTgs
NiArMTEzNSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9u
c2U6Iik7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBkaWRGaW5pc2hXaXRo
UmVkaXJlY3RSZXNwb25zZSIpOwogICAgIHJlZGlyZWN0UmVzcG9uc2Uuc2V0VHlwZShSZXNvdXJj
ZVJlc3BvbnNlOjpUeXBlOjpPcGFxdWVyZWRpcmVjdCk7CiAgICAgaWYgKCFpc0Nyb3NzT3JpZ2lu
UHJlZmV0Y2goKSkKICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVkaXJlY3RS
ZXNwb25zZSksIFtdIChhdXRvKSB7IH0pOwpAQCAtMTI2MCw3ICsxMjk4LDEyIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW0KICAgICBpZiAobV9idWZmZXJlZERhdGEt
PmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVy
ZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBib29sIHNob3VsZEZpbHRlciA9IGZhbHNl
OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgc2hvdWxkRmlsdGVyID0gbV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoKm1fYnVmZmVyZWREYXRhLmdldCgpLCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbmRpZgorICAgIGlmICghc2hvdWxkRmlsdGVyKQor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEo
eyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwog
CiAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIG1fYnVm
ZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwpAQCAtMTI3MCw2ICsxMzEzLDExIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFMKIHsKICAgICBBU1NFUlQoIWlz
U3luY2hyb25vdXMoKSk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKSkK
KyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyBidWZmZXIgfSwgZW5jb2RlZERhdGFMZW5ndGgpKTsK
IH0KIApAQCAtMTMxNiw2ICsxMzY0LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZXRyaWV2ZUMKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJldHJpZXZlQ2FjaGVFbnRy
eToiKTsKICAgICBhdXRvIHJlc3BvbnNlID0gZW50cnktPnJlc3BvbnNlKCk7CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVj
ZWl2ZWQocmVzcG9uc2UpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGlmIChpc01h
aW5SZXNvdXJjZSgpKQogICAgICAgICBkaWRSZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVz
cG9uc2UpOwogCkBAIC0xMzY0LDggKzE0MTcsMTggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJldHJpZXZlQwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRG
b3JDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBlbnRyeSkK
IHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5OiIpOwor
ICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogc2VuZFJlc3VsdEZvckNhY2hlRW50
cnkiKTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIGlmICghZW50cnktPnNo
YXJlYWJsZVJlc291cmNlSGFuZGxlKCkuaXNOdWxsKCkpIHsKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAobV9jb250ZW50Rmls
dGVyKSB7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVj
ZWl2ZWQoKmVudHJ5LT5idWZmZXIoKSwgZW50cnktPmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAg
ICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJh
bWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisj
ZW5kaWYKKyAgICAgICAgYXV0byBzaXplID0gZW50cnktPmJ1ZmZlcigpLT5zaXplKCk7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogY2FjaGUgZW50cnkgc2l6ZSAlbHUi
LCBzaXplKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJl
Y2VpdmVSZXNvdXJjZShlbnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTM4OSw2ICsxNDUyLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VC
b2R5RGVjb2RlZFNpemUgPSAwOwogCiAgICAgc2VuZEJ1ZmZlcigqZW50cnktPmJ1ZmZlcigpLCBl
bnRyeS0+YnVmZmVyKCktPnNpemUoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyKQorICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKSk7CisjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogfQogCkBA
IC0xNzA1LDYgKzE3NzIsNDAgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQXBwSW5p
dGlhdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpOwog
fQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
K3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3Ro
KQoreworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0V4dGVuc2lvbjogZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIiKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCkpOworfQorCitXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRp
ZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxl
ciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgV1RGTG9nQWx3
YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBjb250ZW50RmlsdGVyRGlkQmxvY2siKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1
bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICByZXR1cm4g
V2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3Qp
OworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9h
ZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7
CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlciIpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRl
cik7CisgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVy
cm9yKTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgV1RGTG9nQWx3
YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNv
bnRlbnRGaWx0ZXIiKTsKKyAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkp
OworICAgIGVsc2UgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOwor
ICAgICAgICBhdXRvJiBlcnJvciA9IG1fY29udGVudEZpbHRlci0+YmxvY2tlZEVycm9yKCk7Cisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkRm9yQ29udGVudEZpbHRlcihlcnJvcikpOworICAgIH0KK30KKyNlbmRpZiAvLyBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI3VuZGVmIExPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQuaD4KQEAgLTQzLDYgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOworY2xhc3MgQ29udGVudEZpbHRlcjsKIGNsYXNzIEZv
cm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwpAQCAtNzAsNiArNzIsOSBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwK
ICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpDcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50
RmlsdGVyQ2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcj4gY3JlYXRlKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5
ZWRSZXBseSYmIHJlcGx5ID0gbnVsbHB0cikKQEAgLTkwLDcgKzk1LDcgQEAgcHVibGljOgogICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Jlc291cmNl
TG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3
UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CisgICAgdm9p
ZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CiAKICAgICB2b2lkIHNldFJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyBtX3Jlc3BvbnNlID0g
V1RGTW92ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KQEAgLTE1MSw2ICsxNTYs
MTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpOwogCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIHJlZigp
IGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+OjpyZWYoKTsg
fQorICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291
cmNlTG9hZGVyPjo6ZGVyZWYoKTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Jl
c291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYpOwogCkBAIC0xNTgsNiAr
MTY4LDE0IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIudG9VSW50NjQoKTsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CisgICAgdm9pZCBkYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
LCBzaXplX3QpIGZpbmFsOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY29udGVudEZpbHRl
ckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsTWFpblJl
c291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IGZpbmFsOworICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50
RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRh
JikgZmluYWw7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuVXNlQ2FjaGUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAgICAgYm9vbCBjYW5Vc2VDYWNoZWRSZWRpcmVjdChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIApAQCAtMjE2LDYgKzIzNCwx
MCBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvKCk7
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIHZvaWQgc3RhcnRDb250ZW50RmlsdGVyaW5nKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OworI2VuZGlmCisKICAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBtX3Bh
cmFtZXRlcnM7CiAKICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fY29u
bmVjdGlvbjsKQEAgLTI1OSw2ICsyODEsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKICAgICBVUkwgbV9maXJzdFJlc3BvbnNl
VVJMOyAvLyBGaXJzdCBVUkwgaW4gcmVzcG9uc2UncyBVUkwgbGlzdCAoaHR0cHM6Ly9mZXRjaC5z
cGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVzcG9uc2UtdXJsLWxpc3QpLgogICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4g
bV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0OworCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIyLDYgKzMyMiwyOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzb3VyCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50
RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKK30K
Kwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZy
b21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRl
ciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQ
YWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICN1bmRlZiBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZp
c2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1N1YnN0aXR1dGVEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQyLDYgKzQzLDcgQEAgY2xhc3Mg
Rm9ybURhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAgLTkzLDYgKzk1LDEyIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAg
dm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3Qg
VVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyNl
bmRpZgorICAgIAogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9h
ZGVyOwogICAgIFRyYWNraW5nUGFyYW1ldGVycyBtX3RyYWNraW5nUGFyYW1ldGVyczsKICAgICBX
ZWJSZXNvdXJjZUludGVyY2VwdENvbnRyb2xsZXIgbV9pbnRlcmNlcHRDb250cm9sbGVyOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw0ICszNywxMSBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJj
ZUxvYWRlciBMZWdhY3lSZWNlCiAgICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlzIGZvciB3aGVu
IHdlIGhhdmUgdGhlIGVudGlyZSByZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBvbmNlLCBzdWNo
IGFzIHdoZW4gdGhlIHJlc291cmNlIGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBEaWRSZWNlaXZl
UmVzb3VyY2UoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlKQogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQpCisgICAgQ2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSBzdWJzdGl0dXRlRGF0YSkKKyNlbmRpZgorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446160</attachid>
            <date>2021-12-07 04:42:32 -0800</date>
            <delta_ts>2021-12-07 04:50:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211207134230.patch</filename>
            <type>text/plain</type>
            <size>49811</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY0MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMTItMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEFWRGVsZWdhdGluZ1BsYXliYWNrQ29vcmRpbmF0b3IgZXJyb3Ig
Y29tcGlsaW5nIG9uIG1hY09TIDExCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2Nv
YS5oCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNv
Y29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsMTIgQEAKICNkZWZpbmUgRU5BQkxF
X0NPTlRFTlRfRklMVEVSSU5HIDEKICNlbmRpZgogCisjaWYgKChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSBcCisgICAgfHwgKFBMQVRG
T1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYwMDAwKSBc
CisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gOTAwMDApKQorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORworI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NSBAQAorMjAyMS0xMi0wMiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5n
IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3MDI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0
YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpmb3JF
YWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RmlsdGVyOjpkaWREZWNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVs
aXZlclJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxp
dmVyQnVmZmVycyk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y2xlYXJNYWluUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29u
dGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgICogbG9h
ZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBv
bGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6aXNSZXF1aXJlZCk6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAg
IChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYmxlZCk6CisKIDIw
MjEtMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQb3J0
IGNhbGwgc2l0ZXMgdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aWRlbnRpZmllcigpIGFuZCBk
cm9wIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyKCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzMwNSw3ICszMzA1LDcgQEAKIAkJQTE0ODMy
Q0MxODdGNjdDNDAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMjlFMTg3RjUwODcwMERBNjNBNiAv
KiBXZWJDb3JlVGhyZWFkUnVuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTE0ODMyQ0YxODdGNjg0NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRT
eXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNDgzMkExMTg3RjUwODcwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50
ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTE0OTFEQTMxRjg1OUQ4NzAwOTVGNUQ0IC8qIFBheW1lbnRTZXNzaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ5MURBMjFGODU5RDg3MDA5
NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCAqLzsgfTsKLQkJQTE0OTc4NkYxQUJBRjMzODAwQ0VG
N0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmgg
Ki87IH07CisJCUExNDk3ODZGMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ5Nzg2RDFBQkFG
MzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNDk3ODcxMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0
Zm9ybUNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExNDk3ODcwMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
MTRCQjBBMDFGOTgxM0I4MDA2MDVBMzUgLyogTW9ja1BheW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNEJCMDlFMUY5ODEzQjgwMDYwNUEzNSAv
KiBNb2NrUGF5bWVudC5oICovOyB9OwogCQlBMTVENzUxNjFFNjhGN0M4MDBBMzVGQkMgLyogQmxv
YkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTVENzUxMzFFNjhGN0IxMDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggKi87IH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyODYwMjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMyw2ICsxMTMsMTggQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVy
V2lsbFNlbgogICAgIHJldHVybiAhcmVxdWVzdC5pc051bGwoKTsKIH0KIAorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0
ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlm
IChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0co
Q29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFp
biByZXNvdXJjZSBhdCA8JXM+LlxuIiwgdXJsLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICBtX3N0YXRlID0gU3RhdGU6OkZpbHRlcmluZzsKKyAgICBBU1NFUlQobV9tYWluUmVzb3VyY2VV
UkwuaXNFbXB0eSgpKTsKKyAgICBtX21haW5SZXNvdXJjZVVSTCA9IHVybDsKK30KKyNlbHNlCiB2
b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jl
c291cmNlJiByZXNvdXJjZSkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkK
QEAgLTEyMywxMiArMTM1LDE3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdN
YWluUmUKICAgICBBU1NFUlQoIW1fbWFpblJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9
ICZyZXNvdXJjZTsKIH0KKyNlbmRpZgogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJp
bmdNYWluUmVzb3VyY2UoKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQog
ICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN0b3BwZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBtX21haW5SZXNvdXJjZVVSTCA9IFVS
TCgpOworI2Vsc2UKICAgICBtX21haW5SZXNvdXJjZSA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAog
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTE0NSwxMSArMTYyLDI3IEBAIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnMKICAgICByZXR1cm4gbV9zdGF0ZSAhPSBT
dGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVj
ZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKKyNlbHNlCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKKyNlbmRpZgogeworICAgIFdURkxvZ0Fs
d2F5cygiTmV0d29ya0V4dGVuc2lvbjogY29udGludWVBZnRlckRhdGFSZWNlaXZlZCIpOwogICAg
IFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9Owog
CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIExPRyhDb250ZW50
RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBmcm9t
IDwlcz4uXG4iLCBlbmNvZGVkRGF0YUxlbmd0aCwgbV9tYWluUmVzb3VyY2VVUkwuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tl
ZChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVu
dEZpbHRlcikgeworICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIH0pOworICAgICAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6QWxsb3dlZCkgeworICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0
YSgpOworICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJl
c291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAmYnVmZmVyIH0sIGVuY29kZWREYXRhTGVuZ3RoIH0p
OworI2Vsc2UKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJl
Y2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21haW5SZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29u
dGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0
ZXImIGNvbnRlbnRGaWx0ZXIpIHsKICAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShk
YXRhLCBsZW5ndGgpOwpAQCAtMTU3LDI5ICsxOTAsNDcgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyRGF0YVJlYwogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxv
d2VkKQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWluUmVzb3VyY2UpOwor
I2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gbV9zdGF0
ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKQorI2Vsc2UKIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKKyNlbmRpZgogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBj
b250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQiKTsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVu
dD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVU5VU0VEX1BBUkFNKHJlc291cmNl
VVJMKTsKKy8vICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2VVUkwsIHJlc291cmNlVVJMID09IG1f
bWFpblJlc291cmNlVVJMKTsKKyNlbHNlCisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJl
c291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIAogICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5c
biIsIG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyNlbHNlCiAg
ICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBm
aWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVzb3VyY2UtPnVybCgp
LnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyNlbmRpZgogICAgICAgICBmb3JFYWNoQ29udGVu
dEZpbHRlclVudGlsQmxvY2tlZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0
ZXIpIHsKICAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CiAg
ICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG93ZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgICAgIGRlbGl2ZXJTdG9y
ZWRSZXNvdXJjZURhdGEoKTsKKyNlbHNlCiAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRh
KCptX21haW5SZXNvdXJjZSk7CisjZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpTdG9wcGVkKQpAQCAtMjA2LDggKzI1NywxMCBAQCBpbmxpbmUgdm9pZCBD
b250ZW50RmlsdGVyOjpmb3JFYWNoQ29udGVuCiAgICAgICAgICAgICBtX2Jsb2NraW5nQ29udGVu
dEZpbHRlciA9ICZjb250ZW50RmlsdGVyOwogICAgICAgICAgICAgZGlkRGVjaWRlKFN0YXRlOjpC
bG9ja2VkKTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChjb250ZW50
RmlsdGVyLT5uZWVkc01vcmVEYXRhKCkpCisgICAgICAgIH0gZWxzZSBpZiAoY29udGVudEZpbHRl
ci0+bmVlZHNNb3JlRGF0YSgpKSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtF
eHRlbnNpb246IG5lZWRzIG1vcmUgZGF0YSIpOwogICAgICAgICAgICAgYWxsRmlsdGVyc0FsbG93
ZWRMb2FkID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoYWxsRmlsdGVyc0Fs
bG93ZWRMb2FkKQpAQCAtMjE5LDcgKzI3MiwxMyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERl
Y2lkZShTdGF0ZSBzdGF0CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OkFsbG93ZWQpOwog
ICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKTsKICAgICBBU1NFUlQoc3RhdGUg
PT0gU3RhdGU6OkFsbG93ZWQgfHwgc3RhdGUgPT0gU3RhdGU6OkJsb2NrZWQpOwotICAgIExPRyhD
b250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVz
IGZvciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/
ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwgbV9tYWluUmVzb3VyY2UgPyBtX21haW5SZXNvdXJjZS0+
dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkgOiAiIik7CisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBjb25zdCBTdHJpbmcmIHVybFN0
cmluZyA9IG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpOworI2Vsc2UKKyAgICBjb25zdCBTdHJp
bmcmIHVybFN0cmluZyA9IG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0
cmluZygpIDogZW1wdHlTdHJpbmcoKTsKKyNlbmRpZgorICAgIExPRyhDb250ZW50RmlsdGVyaW5n
LCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291
cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJi
bG9ja2VkIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIk5l
dHdvcmtFeHRlbnNpb246IENvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBiZSAlcyBm
b3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAi
YWxsb3dlZCIgOiAiYmxvY2tlZCIsIHVybFN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CiAgICAgbV9z
dGF0ZSA9IHN0YXRlOwogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAg
ICByZXR1cm47CkBAIC0yMjgsMTIgKzI4NywyMCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERl
Y2lkZShTdGF0ZSBzdGF0CiAgICAgbV9jbGllbnQuY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNv
bnRlbnRGaWx0ZXIobV9ibG9ja2VkRXJyb3IpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZl
clJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoKQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0
YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbHNlCiAgICAgQVNTRVJUKHJl
c291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZm
ZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJj
ZUJ1ZmZlcigpKQogICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyNl
bmRpZgogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBAIC0yNDUsNiAr
MzEyLDcgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQogICAgIHJldHVybiBi
bG9ja2VkUGFnZVVSTDsKIH0KIAorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3Rp
dHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0
IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBpZiAoYXV0byBjb250ZW50
RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpAQCAtMjU5LDYgKzMyNyw3
IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXQKIAogICAgIHJldHVy
biB0cnVlOwogfQorI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6d2lsbEhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGNvbnN0CiB7CkBA
IC0yODMsNiArMzUyLDE1IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2EKICAgICBtX2NsaWVudC5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXIoYmxvY2tlZFBhZ2VVUkwoKSwgc3Vic3RpdHV0ZURhdGEpOwogfQogCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZp
bHRlcjo6ZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYnVmZmVycy5zaXplKCk7IGkrKykKKyAgICAgICAgZGVsaXZlclJlc291cmNl
RGF0YSgqbV9idWZmZXJzW2ldLmJ1ZmZlciwgbV9idWZmZXJzW2ldLmVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICBtX2J1ZmZlcnMuY2xlYXIoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDIz
ICs1MCwzNCBAQCBjbGFzcyBDb250ZW50RmlsdGVyIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgYWRkVHlwZSgpIHsgdHlwZXMoKS5hcHBlbmQodHlwZTxU
PigpKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVh
dGUoQ29udGVudEZpbHRlckNsaWVudCYpOwotICAgIH5Db250ZW50RmlsdGVyKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUo
Q29udGVudEZpbHRlckNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5Db250ZW50RmlsdGVy
KCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogdXJsU2NoZW1lKCkgeyByZXR1cm4gIngtYXBw
bGUtY29udGVudC1maWx0ZXIiOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGaWx0ZXJp
bmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJik7CisjZWxzZQogICAgIHZvaWQgc3RhcnRGaWx0ZXJp
bmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmKTsKLSAgICB2b2lkIHN0b3BGaWx0ZXJp
bmdNYWluUmVzb3VyY2UoKTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEZp
bHRlcmluZ01haW5SZXNvdXJjZSgpOwogCi0gICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBi
b29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3QgVVJMJiBy
ZXNvdXJjZVVSTCk7CisjZWxzZQogICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpOworI2VuZGlmCiAKICAgICBzdGF0aWMgYm9v
bCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVy
JiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAgICAgYm9vbCB3aWxsSGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7Ci0g
ICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogCisgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgYmxvY2tl
ZEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2VkRXJyb3I7IH0KKyAgICAKIHByaXZhdGU6
CiAgICAgdXNpbmcgU3RhdGUgPSBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI6OlN0YXRlOwogCkBAIC04
MiwxMSArOTMsMjcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlv
bj4gdm9pZCBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChGdW5jdGlvbiYmKTsKICAg
ICB2b2lkIGRpZERlY2lkZShTdGF0ZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2
ZXJTdG9yZWRSZXNvdXJjZURhdGEoKTsKKyNlbHNlCiAgICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VE
YXRhKENhY2hlZFJlc291cmNlJik7Ci0KKyNlbmRpZgorICAgIAogICAgIENvbnRhaW5lciBtX2Nv
bnRlbnRGaWx0ZXJzOwogICAgIENvbnRlbnRGaWx0ZXJDbGllbnQmIG1fY2xpZW50OworI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVVJMIG1f
bWFpblJlc291cmNlVVJMOworICAgIAorICAgIHN0cnVjdCBSZXNvdXJjZURhdGFJdGVtIHsKKyAg
ICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBzaXplX3Qg
ZW5jb2RlZERhdGFMZW5ndGg7CisgICAgfTsKKyAgICAKKyAgICBWZWN0b3I8UmVzb3VyY2VEYXRh
SXRlbT4gbV9idWZmZXJzOworI2Vsc2UKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7CisjZW5kaWYKICAgICBjb25zdCBQbGF0Zm9ybUNv
bnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdDb250ZW50RmlsdGVyIHsgbnVsbHB0ciB9OwogICAgIFN0
YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3RvcHBlZCB9OwogICAgIFJlc291cmNlRXJyb3IgbV9ibG9j
a2VkRXJyb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7
CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAtNDEsNyArNDIsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRl
cmVmKCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90KSA9IDA7CisjZWxzZQogICAgIHZp
cnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90
KiwgaW50KSA9IDA7CisjZW5kaWYKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY29udGVudEZp
bHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTWFpblJl
c291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50Rmls
dGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyODYw
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzgsNiArMTc4LDggQEAgRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVy
KGNvbnN0IFJlcwogewogICAgIC8vIEZJWE1FOiBWZWN0b3IgZGVmYXVsdCBjb25zdHJ1Y3RvciBz
aG91bGRuJ3QgbmVlZCB0byBrbm93IHRoZSBzaXplIG9mIHRoZSBlbGVtZW50cywKICAgICAvLyBz
byBtX2FjdGl2ZUNvbnRlbnRSdWxlTGlzdEFjdGlvblBhdHRlcm5zIG91Z2h0IHRvIGJlIGFibGUg
dG8gYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBpbml0aWFsaXplciBsaXN0IGluIHRoZSBoZWFkZXIg
d2l0aG91dCBpbmNsdWRpbmcgVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmguCisKKyAgICBXVEZMb2dB
bHdheXMoIk5ldHdvcmtFeHRlbnNpb246IFN1YnN0aXR1dGUgZGF0YSBpcyB2YWxpZDogJWQiLCBz
dWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpOwogfQogCiBGcmFtZUxvYWRlciogRG9jdW1lbnRMb2Fk
ZXI6OmZyYW1lTG9hZGVyKCkgY29uc3QKQEAgLTQyMyw3ICs0MjUsNyBAQCBib29sIERvY3VtZW50
TG9hZGVyOjppc0xvYWRpbmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250
ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hl
ZChyZXNvdXJjZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEzLDcgKzcxNSw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVx
dWVzdC5zZXRVUkwoV1RGTW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50Rmls
dGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3
UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTExLDcgKzkxMyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9u
c2UuY2VydGlmaWNhdGVJbmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3Bl
IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAot
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
ICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRl
clJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAg
LTEzMjcsNyArMTMyOSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNo
ZWQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50
RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCkpCiAgICAgICAg
IHJldHVybjsKICNlbmRpZgpAQCAtMTQ1NSw3ICsxNDU3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6ZGV0YWNoRnJvbUZyYW1lKCkKICAgICBzdG9wTG9hZGluZygpOwogICAgIGlmIChtX21haW5S
ZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9t
YWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRl
cikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7
CiAjZW5kaWYKQEAgLTIwMTcsNyArMjAxOSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0
TG9hZGluZ01haW5SZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIG1fY29udGVudEZp
bHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0
ZSgqdGhpcykgOiBudWxscHRyOwogI2VuZGlmCiAKQEAgLTIyMTksNyArMjIyMSw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xp
ZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7
Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9w
RmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIzNTAsNyArMjM1Miw3IEBAIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVudExv
YWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50Rmls
dGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNl
KCptX21haW5SZXNvdXJjZSk7CiAjZW5kaWYKQEAgLTI0MDcsNyArMjQwOSw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXVEZNb3ZlKGV2ZW50SW5pdCkp
OwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAgICBkYXRhUmVjZWl2ZWQo
ZGF0YSwgc2l6ZSk7CkBAIC0yNDE4LDEyICsyNDIwLDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNhbmNlbE1haW5SZXNvdXJjZUwKICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsK
IH0KIAorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2Nr
KENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgcmV0dXJuIGhhbmRsZUNvbnRlbnRGaWx0
ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCkpOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJh
bWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7
CiB9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIAotUmVzb3VyY2VFcnJvciBEb2N1
bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExv
YWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
CiB7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7
CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUo
KSkgewpAQCAtMjQzMyw4ICsyNDQyLDQwIEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6
OmNvbnRlbnRGaWwKICAgICAgICAgfSk7CiAgICAgfQogICAgIGZyYW1lTG9hZGVyKCktPmNsaWVu
dCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwot
ICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVx
dWVzdCgpKTsKKyAgICBhdXRvIGVycm9yID0gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVu
dEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciA9IHRy
dWU7CisgICAgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsKKyNlbmRpZgorCisgICAgcmV0dXJuIGVy
cm9yOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFt
ZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsK
IH0KKworYm9vbCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgcmV0dXJuIG1f
YmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBl
cnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJvci5kb21h
aW4oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0
ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyNlbmRpZgorfQor
Cit2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVOVVNFRF9QQVJBTShlcnJv
cik7CisjZWxzZQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCisgICAgICAgIG1fY29udGVudEZp
bHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisjZW5kaWYKK30KKwog
I2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogdm9pZCBEb2N1bWVudExvYWRl
cjo6c2V0QWN0aXZlQ29udGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMoY29uc3Qgc3RkOjpvcHRp
b25hbDxIYXNoU2V0PFN0cmluZz4+JiBwYXR0ZXJucykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBA
IGNsYXNzIERvY3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudExv
YWRlcj4KICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICAsIHB1Ymxp
YyBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAsIHB1YmxpYyBDb250ZW50RmlsdGVy
Q2xpZW50CiAjZW5kaWYKICAgICAsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgewpA
QCAtMzg2LDEwICszODYsMTQgQEAgcHVibGljOgogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkgY29uc3Q7CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQ29udGVudEZpbHRlciogY29udGVudEZp
bHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZpbHRlci5nZXQoKTsgfQogICAgIHZvaWQg
cmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0K
ICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVy
Pjo6ZGVyZWYoKTsgfQogI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBo
YW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwm
IGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOworI2VuZGlmCiAKICAgICB2
b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExv
YWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwpAQCAtNDM0LDYgKzQz
OCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25h
bExvYWRTdGFydGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92
aXNpb25hbExvYWRTdGFydGVkOyB9CiAgICAgdm9pZCBzZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQ
cm92aXNpb25hbExvYWRTdGFydGVkKGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9u
YWxMb2FkU3RhcnRlZCkgeyBtX2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQgPSBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOyB9CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisgICAgYm9vbCBjb250ZW50RmlsdGVyV2ls
bEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAg
IHZvaWQgY29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVz
b3VyY2VFcnJvciYpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBE
b2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYpOwogCkBAIC00ODYsNyArNDk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogICAgIC8vIENvbnRlbnRGaWx0ZXJDbGllbnQKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRp
ZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpIGZpbmFsOwpAQCAtNjM4LDcgKzY0NywxMiBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5
UG9saWN5OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisjZWxzZQorICAgIGJvb2wgbV9ibG9j
a2VkQnlDb250ZW50RmlsdGVyIHsgZmFsc2UgfTsKKyAgICBSZXNvdXJjZUVycm9yIG1fYmxvY2tl
ZEVycm9yOworI2VuZGlmCiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDU4
LDcgKzI0NTgsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAg
ICAgbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHByb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIudXJsKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAg
YXV0byBjb250ZW50RmlsdGVyID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5jb250ZW50Rmls
dGVyKCk7CiAgICAgYXV0byBjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZyA9IGZhbHNl
OwogI2VuZGlmCiAKQEAgLTI0NjYsNyArMjQ2NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkRmFpbFByb3Zpc2kKICAgICBpZiAoaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpKQog
ICAgICAgICB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENvbnRpbnVlTG9hZGluZzo6WWVzOwog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBpZiAoY29udGVudEZpbHRlciAmJiBj
b250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpIHsK
KyAgICBpZiAocHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5jb250ZW50RmlsdGVyV2lsbEhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKSB7CiAgICAgICAgIHdpbGxDb250aW51ZUxv
YWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5nOjpZZXM7CiAgICAgICAgIGNvbnRlbnRGaWx0ZXJX
aWxsQ29udGludWVMb2FkaW5nID0gdHJ1ZTsKICAgICB9CkBAIC0yNDc2LDcgKzI0NzUsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGNvbnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5n
KQotICAgICAgICBjb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVy
cm9yKTsKKyAgICAgICAgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5jb250ZW50RmlsdGVySGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiAjZW5kaWYKIAogICAgIG1fcHJvdmlz
aW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwgPSB7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsx
NDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hCiAgICAgYXV0
byYgc3Vic3RpdHV0ZURhdGEgPSBsb2FkZXItPnN1YnN0aXR1dGVEYXRhKCk7CiAgICAgaWYgKHN1
YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiAhc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLmlz
RW1wdHkoKSkgewogICAgICAgICBib29sIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAg
aWYgKGF1dG8gbG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigp
KQogICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSBDb250ZW50RmlsdGVyOjpjb250aW51ZUFm
dGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KCpsb2FkZXIsIHN1YnN0aXR1dGVEYXRhKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgJKHJldmlzaW9uIDI4
NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw3ICs1OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50ZXh0
RW5jb2RpbmdOYW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgICAgICAKKworICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFN1YnN0aXR1dGVEYXRhJik7CisKICAgICBwcml2YXRl
OgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBt
X2ZhaWxpbmdVUkw7CkBAIC02Nyw0ICs3MCwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3Rv
cnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwogICAgIH07CiAKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFN1YnN0aXR1dGVEYXRhOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29udGVudCA8PCBtX2ZhaWxpbmdV
UkwgPDwgbV9yZXNwb25zZSA8PCBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3Rvcnk7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFN1YnN0aXR1dGVEYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgU3Vic3RpdHV0ZURhdGEmIGRhdGEpCit7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhLm1fY29udGVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX2ZhaWxpbmdVUkwpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9yZXNwb25zZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX3Nob3VsZFJl
dmVhbFRvU2Vzc2lvbkhpc3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDI4NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjUsNiArMjI1LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6
aGFuZAogCiBib29sIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppc1JlcXVpcmVkKCkK
IHsKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNpb246IGlzUmVxdWlyZWQgJWQiLCBb
TkVGaWx0ZXJTb3VyY2UgZmlsdGVyUmVxdWlyZWRdKTsKICAgICByZXR1cm4gW05FRmlsdGVyU291
cmNlIGZpbHRlclJlcXVpcmVkXTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjU0MSkK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMjEtMTItMDYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgY29udGVudCBmaWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzg2MTUwNzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5l
dHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRy
eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai94Y3No
YXJlZGRhdGEveGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKwogMjAyMS0xMi0wNSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUg
ZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAyODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDEx
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3Q29udmVydGVyLmg+CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIuaD4KKyNlbmRpZgorCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBS
SXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291
cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVkLCBkZXN0aW5hdGlvbj0ldSwgaXNT
eW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3RpbmF0aW9uKSwgaXNTeW5jaHJvbm91
cygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQ
Ukl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEPSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlz
U3luY2hyb25vdXM9JWRdIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFy
YW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLnRvVUludDY0KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3BhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25v
dXMoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTg3LDYgKzE5MiwxMSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIEFTU0VSVCghbV93YXNTdGFydGVkKTsKICAgICBt
X3dhc1N0YXJ0ZWQgPSB0cnVlOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBhdXRvIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBv
cmlnaW5hbFJlcXVlc3QoKSB9OworICAgIHN0YXJ0Q29udGVudEZpbHRlcmluZyhyZXF1ZXN0KTsK
KyNlbmRpZgorCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAgIG1fbmV0
d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3Qo
KSB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8mJiBy
ZXN1bHQpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC0yMjUsNiArMjM1LDE4IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgc3RhcnROZXR3b3JrTG9h
ZChSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCBGaXJzdExvYWQ6Olllcyk7
CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXIpCisgICAg
ICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAg
aWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVz
dCwgUmVzb3VyY2VSZXNwb25zZSgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChpc01haW5S
ZXNvdXJjZSgpKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJl
c291cmNlKHJlcXVlc3QudXJsKCkpOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygicmV0cmlldmVDYWNoZUVudHJ5OiBpc01haW5G
cmFtZUxvYWQ9JWQiLCBpc01haW5GcmFtZUxvYWQoKSk7CkBAIC03MDQsNiArNzI2LDExIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmUKIHsKICAgICBMT0FERVJfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBNSU1FVHlw
ZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRlbnRMZW5ndGg9JSIgUFJJZDY0
ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFzTmV0d29ya0xvYWRDaGVja2Vy
PSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25z
ZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgISFtX25ldHdvcmtMb2Fk
Q2hlY2tlcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29u
dGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVjZWl2ZWRSZXNwb25zZSkpCisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisjZW5kaWYKKwog
ICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBkaWRSZWNlaXZlTWFpblJlc291cmNl
UmVzcG9uc2UocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTkxNSw2ICs5NDIsMTMgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAgICAgICAgLy8gRklYTUU6
IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVy
ZS4KICAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CiAgICAgICAg
IH0KKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwo
KSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3Vy
Y2UoKTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsK
ICAgICB9CiAKQEAgLTEwMDQsNiArMTAzOCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZWRpCiAgICAgaWYgKCFtX2ZpcnN0UmVzcG9uc2VVUkwuaXNWYWxpZCgpKQog
ICAgICAgICBtX2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgICAgIHJldHVybjsK
KyNlbmRpZgorCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkg
ewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkKQEAg
LTEyNjAsNyArMTI5OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5n
VGltCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7
ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7Cisg
ICAgYm9vbCBzaG91bGRGaWx0ZXIgPSBmYWxzZTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHNob3VsZEZpbHRlciA9IG1fY29udGVudEZp
bHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKCptX2J1
ZmZlcmVkRGF0YS5nZXQoKSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCk7CisjZW5k
aWYKKyAgICBpZiAoIXNob3VsZEZpbHRlcikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVy
ZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAogICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0g
MDsKQEAgLTEyNzAsNiArMTMxNCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2Vu
ZEJ1ZmZlcihTCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250
ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQo
YnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgYnVm
ZmVyIH0sIGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKQEAgLTEzMTYsNiArMTM2NSwxMSBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDCiAgICAgTE9BREVSX1JFTEVB
U0VfTE9HKCJkaWRSZXRyaWV2ZUNhY2hlRW50cnk6Iik7CiAgICAgYXV0byByZXNwb25zZSA9IGVu
dHJ5LT5yZXNwb25zZSgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKSkKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkKICAgICAgICAgZGlkUmVj
ZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlKTsKIApAQCAtMTM2Niw2ICsxNDIwLDEz
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBMT0FERVJf
UkVMRUFTRV9MT0coInNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5OiIpOwogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpCiAgICAgaWYgKCFlbnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUo
KS5pc051bGwoKSkgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCgqZW50cnktPmJ1ZmZlcigpLCBlbnRyeS0+YnVm
ZmVyKCktPnNpemUoKSkpIHsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVB
ZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNvdXJjZShlbnRyeS0+c2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTM4OSw2ICsxNDUw
LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBuZXR3
b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5RGVjb2RlZFNpemUgPSAwOwogCiAgICAgc2VuZEJ1
ZmZlcigqZW50cnktPmJ1ZmZlcigpLCBlbnRyeS0+YnVmZmVyKCktPnNpemUoKSk7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9j
b250ZW50RmlsdGVyKSB7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5v
dGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgfQorI2VuZGlmCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9h
ZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKIH0KIApAQCAtMTcwNSw2ICsxNzcyLDM2IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0FwcEluaXRpYXQKICAgICByZXR1cm4gbV9wYXJhbWV0
ZXJzLnJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0
aCkpOworfQorCitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
Y29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRC
bG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVy
cy5yZXF1ZXN0KTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5S
ZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7CisgICAgbV9j
b250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKK30KKwor
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCwg
c3Vic3RpdHV0ZURhdGEpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9j
b250ZW50RmlsdGVyKTsKKyAgICAgICAgYXV0byYgZXJyb3IgPSBtX2NvbnRlbnRGaWx0ZXItPmJs
b2NrZWRFcnJvcigpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
Q2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoZXJyb3IpKTsKKyAgICB9Cit9
CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBMT0FERVJfUkVMRUFTRV9MT0cK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CkBAIC00Myw2ICs0NCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKK2NsYXNzIENvbnRlbnRG
aWx0ZXI7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTcwLDYgKzcyLDkgQEAgY2xhc3MgTmV0d29ya1Jlc291
cmNlTG9hZGVyIGZpbmFsCiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBw
dWJsaWMgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgLCBwdWJsaWMg
V2ViQ29yZTo6Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcgorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLCBwdWJsaWMg
V2ViQ29yZTo6Q29udGVudEZpbHRlckNsaWVudAorI2VuZGlmCiAgICAgLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5j
aHJvbm91c0xvYWREZWxheWVkUmVwbHkmJiByZXBseSA9IG51bGxwdHIpCkBAIC05MCw3ICs5NSw3
IEBAIHB1YmxpYzoKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2
ZU5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOwogCiAg
ICAgdm9pZCBzZXRSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Up
IHsgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9
CkBAIC0xNTEsNiArMTU2LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBcHBJbml0aWF0ZWQo
KTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgdm9pZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNl
TG9hZGVyPjo6cmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3Vu
dGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj46OmRlcmVmKCk7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYm
KTsKIApAQCAtMTU4LDYgKzE2OCwxNCBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCk7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLy8gQ29udGVudEZpbHRlckNsaWVu
dAorICAgIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJiwgc2l6ZV90KSBmaW5hbDsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKKyAgICB2
b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOworI2VuZGlmCisKICAgICBib29sIGNhblVzZUNhY2hl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIGJvb2wgY2FuVXNl
Q2FjaGVkUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAK
QEAgLTIxNiw2ICsyMzQsMTAgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlTG9hZEluZm8gcmVz
b3VyY2VMb2FkSW5mbygpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIHN0YXJ0Q29udGVudEZpbHRlcmluZyhXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgorCiAgICAgY29uc3QgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CkBAIC0yNTksNiArMjgxLDEwIEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3JlZGlyZWN0UmVzcG9uc2U7CiAgICAgVVJM
IG1fZmlyc3RSZXNwb25zZVVSTDsgLy8gRmlyc3QgVVJMIGluIHJlc3BvbnNlJ3MgVVJMIGxpc3Qg
KGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXJlc3BvbnNlLXVybC1saXN0
KS4KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5m
b3JjZW1lbnRSZXN1bHQ+IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdDsKKworI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biAyODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw2ICszMjIsMjkgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9ja0hh
bmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKK30KKwordm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgaWYgKCFtX2NvcmVM
b2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291cmNl
TG9hZChlcnJvcik7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAg
aWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAh
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpOworfQorI2VuZGlmIC8vIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaAkocmV2aXNpb24gMjg2MDI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJzdGl0dXRlRGF0YS5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC00Miw2
ICs0Myw3IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBOZXR3b3JrTG9h
ZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CkBA
IC05Myw2ICs5NSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlKGNv
bnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGNvbnRlbnRG
aWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIHZvaWQgY2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOworICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0
aXR1dGVEYXRhJik7CisjZW5kaWYKKyAgICAKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI+IG1fY29yZUxvYWRlcjsKICAgICBUcmFja2luZ1BhcmFtZXRlcnMgbV90cmFja2luZ1Bh
cmFtZXRlcnM7CiAgICAgV2ViUmVzb3VyY2VJbnRlcmNlcHRDb250cm9sbGVyIG1faW50ZXJjZXB0
Q29udHJvbGxlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAy
ODYwMjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzcsNCArMzcsMTEgQEAgbWVzc2Fn
ZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZQogICAgIC8vIERpZFJlY2VpdmVSZXNv
dXJjZSBpcyBmb3Igd2hlbiB3ZSBoYXZlIHRoZSBlbnRpcmUgcmVzb3VyY2UgZGF0YSBhdmFpbGFi
bGUgYXQgb25jZSwgc3VjaCBhcyB3aGVuIHRoZSByZXNvdXJjZSBpcyBjYWNoZWQgaW4gbWVtb3J5
CiAgICAgRGlkUmVjZWl2ZVJlc291cmNlKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZSByZXNvdXJjZSkKICNlbmRpZgorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQorICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250
ZW50RmlsdGVyKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisgICAgSGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEpCisjZW5kaWYKKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446164</attachid>
            <date>2021-12-07 04:51:11 -0800</date>
            <delta_ts>2021-12-07 09:12:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211207135103.patch</filename>
            <type>text/plain</type>
            <size>51484</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMTItMDYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI4NjUwNyk6IFttYWNPU10gTWFueSBm
aWxlIHN5c3RlbSBhY2Nlc3MgbGF5b3V0IHRlc3RzIGJlY2FtZSBmbGFreSBmYWlsdXJlcwpJbmRl
eDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2NTk2KQorKysg
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjMsNiArMTYzLDEyIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5k
aWYKIAorI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEyMDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDE2MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9T
KSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSkKKyNkZWZpbmUg
RU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUyBFTkFCTEVfQ09O
VEVOVF9GSUxURVJJTkcKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFWFRfTUVO
VVMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVT
IDAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMTIt
MDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
Y29udGVudCBmaWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg2MTUwNzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Zm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlckJ1ZmZlcnMpOgorICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGV0YWNoRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dGFydExvYWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmNsZWFyTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQ
cm92aXNpb25hbExvYWQpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRp
b25Qb2xpY3kpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXI6OmlzUmVxdWlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQpOgorCiAyMDIxLTEyLTA3ICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBv
cnQgVUkgc2lkZSBjb21wb3NpdGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzI1LDcgKzMzMjUsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyogV2Vi
Q29yZVRocmVhZFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE0ODMyOUUxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDRjE4
N0Y2ODQ3MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTExODdGNTA4NzAw
REE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFGODU5RDg3MDA5NUY1
RDQgLyogUGF5bWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExNDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5o
ICovOyB9OwotCQlBMTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJB
RjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0OTc4NkYxQUJBRjMz
ODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50Rmls
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTE0OTc4NzExQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNB
NTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAv
KiBNb2NrUGF5bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE0QkIwOUUxRjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJ
CUExNUQ3NTE2MUU2OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2OEY3QjEwMEEzNUZC
QyAvKiBCbG9iQ2FsbGJhY2suaCAqLzsgfTsKQEAgLTMzNTE1LDEwICszMzUxNSwxMiBAQAogCQkJ
CUNEM0VFRjNDMjU3OTlGQUIwMDY1NjNCQiAvKiBDb2xvckdhbXV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMTAzQjdERjFEQjAxNTY3MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNTVCM0RCNDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDM0EwMEM4Mjc1NDQ5NkQwMDQ3QzBFNSAvKiBDb2xvckludGVycG9s
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEEyM0VDMjVFQzE2MDIwMEFBQzYzMCAvKiBD
b2xvckx1bWluYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2
QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0FDNkFFOTI0N0YwODJGMDBF
NjFENTkgLyogQ29sb3JNYXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTAxMzdDMjVDMzYy
NEIwMERDNzczQyAvKiBDb2xvck1vZGVscy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNCMkY4OEUy
NzVCRUU1ODAwNzIzMUJGIC8qIENvbG9yTm9ybWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0NEMUU2OTMyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2VyaWFsaXphdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM4MkRGNTgxMEE4RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCBpbiBIZWFkZXJzICovLApAQCAtMzYyNDQsNyArMzYyNDYsNiBAQAogCQkJCTQ5RDVEQzJF
MEY0MjNBNzMwMDhGMjBGRCAvKiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1
cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUQyQzgyQjcyMzZBM0Y2QTAwNTVENkM1
IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzNBMDBD
ODI3NTQ0OTZEMDA0N0MwRTUgLyogQ29sb3JJbnRlcnBvbGF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxRDJGOEUwNjIzNDQ3NTIzMDA5OTNCNjggLyogUGljdHVyZUluUGljdHVyZVdpbmRvdy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTc1ODU5N0MyM0ExRkNGMzAwQzc0NTcyIC8qIFBpbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRDBGRjJBNUUxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMzY2NjksNyArMzY2NzAsNiBAQAogCQkJCTQxODhENTYzMjZD
NTUxQjEwMDQ4NThDOCAvKiBSVENEdGxzVHJhbnNwb3J0U3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3OEUwOTIwMTdEMTREMUMwMDQyMEFBMSAvKiBSVENEVE1GU2VuZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzhFMDkyMTE3RDE0RDFDMDA0MjBBQTEgLyogUlRDRFRNRlRvbmVDaGFuZ2VF
dmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNCMkY4OEUyNzVCRUU1ODAwNzIzMUJGIC8qIENv
bG9yTm9ybWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFNkQ3MUIyNkVBMUE0NjAw
Qjc2NUQ2IC8qIFJUQ0Vycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCOTc5NTI2RTc1QTJF
MDA3QzBGRTYgLyogUlRDRXJyb3JEZXRhaWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhF
MDkyMzE3RDE0RDFDMDA0MjBBQTEgLyogUlRDSWNlQ2FuZGlkYXRlLmggaW4gSGVhZGVycyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI4
NjU5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxOCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVl
QWZ0ZXJXaWxsU2VuCiAgICAgcmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgpOwogfQogCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVu
dEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7Cisg
ICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIHN0YXJ0IGZpbHRlcmlu
ZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmlsdGVyaW5nOworICAgIEFTU0VSVChtX21haW5SZXNv
dXJjZVVSTC5pc0VtcHR5KCkpOworICAgIG1fbWFpblJlc291cmNlVVJMID0gdXJsOworfQorI2Vs
c2UKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVk
UmF3UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9w
cGVkKQpAQCAtMTIzLDEyICsxMzUsMTcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRl
cmluZ01haW5SZQogICAgIEFTU0VSVCghbV9tYWluUmVzb3VyY2UpOwogICAgIG1fbWFpblJlc291
cmNlID0gJnJlc291cmNlOwogfQorI2VuZGlmCiAKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RvcEZp
bHRlcmluZ01haW5SZXNvdXJjZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2Nr
ZWQpCiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fbWFpblJlc291cmNlVVJM
ID0gVVJMKCk7CisjZWxzZQogICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKKyNlbmRpZgog
fQogCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTQ1LDExICsxNjIsMjcgQEAgYm9v
bCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9ucwogICAgIHJldHVybiBtX3N0YXRl
ICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRh
dGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRh
TGVuZ3RoKQorI2Vsc2UKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNl
aXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQorI2VuZGlmCiB7CisgICAgV1RG
TG9nQWx3YXlzKCJOZXR3b3JrRXh0ZW5zaW9uOiBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkIik7
CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50
IH07CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRh
IGZyb20gPCVzPi5cbiIsIGVuY29kZWREYXRhTGVuZ3RoLCBtX21haW5SZXNvdXJjZVVSTC5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxC
bG9ja2VkKFtidWZmZXIgPSBSZWYgeyBidWZmZXIgfV0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBj
b250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3Vy
Y2VEYXRhKCk7CisgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fYnVmZmVycy5hcHBl
bmQoUmVzb3VyY2VEYXRhSXRlbSB7IFJlZlB0ciB7ICZidWZmZXIgfSwgZW5jb2RlZERhdGFMZW5n
dGggfSk7CisjZWxzZQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0
ZXIgcmVjZWl2ZWQgJWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5ndGgsIG1fbWFp
blJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGZvckVh
Y2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhLCBsZW5ndGhdKFBsYXRmb3JtQ29udGVu
dEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGRE
YXRhKGRhdGEsIGxlbmd0aCk7CkBAIC0xNTcsMjkgKzE5MCw0NyBAQCBib29sIENvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQpCiAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJj
ZSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiBt
X3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVB
ZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCisjZWxzZQogYm9vbCBD
b250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQorI2VuZGlmCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291
cmNlID09IG1fbWFpblJlc291cmNlKTsKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNp
b246IGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZCIpOwogICAgIFJlZjxDb250ZW50RmlsdGVy
Q2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwotCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBVTlVTRURfUEFSQU0ocmVz
b3VyY2VVUkwpOworLy8gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZVVSTCwgcmVzb3VyY2VVUkwg
PT0gbV9tYWluUmVzb3VyY2VVUkwpOworI2Vsc2UKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGlmIChtX21haW5SZXNvdXJjZS0+
ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogCiAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5n
LCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8
JXM+LlxuIiwgbV9tYWluUmVzb3VyY2VVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworI2Vs
c2UKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmlu
aXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBtX21haW5SZXNvdXJjZS0+
dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworI2VuZGlmCiAgICAgICAgIGZvckVhY2hD
b250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVu
dEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5maW5pc2hlZEFkZGluZ0RhdGEo
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQp
IHsKICAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb3dlZDsKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICAgICAgZGVsaXZl
clN0b3JlZFJlc291cmNlRGF0YSgpOworI2Vsc2UKICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJj
ZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQpCkBAIC0yMDYsOCArMjU3LDEwIEBAIGlubGluZSB2
b2lkIENvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW4KICAgICAgICAgICAgIG1fYmxvY2tpbmdD
b250ZW50RmlsdGVyID0gJmNvbnRlbnRGaWx0ZXI7CiAgICAgICAgICAgICBkaWREZWNpZGUoU3Rh
dGU6OkJsb2NrZWQpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGNv
bnRlbnRGaWx0ZXItPm5lZWRzTW9yZURhdGEoKSkKKyAgICAgICAgfSBlbHNlIGlmIChjb250ZW50
RmlsdGVyLT5uZWVkc01vcmVEYXRhKCkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiTmV0
d29ya0V4dGVuc2lvbjogbmVlZHMgbW9yZSBkYXRhIik7CiAgICAgICAgICAgICBhbGxGaWx0ZXJz
QWxsb3dlZExvYWQgPSBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChhbGxGaWx0
ZXJzQWxsb3dlZExvYWQpCkBAIC0yMTksNyArMjcyLDEzIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
ZGlkRGVjaWRlKFN0YXRlIHN0YXQKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QWxsb3dl
ZCk7CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpOwogICAgIEFTU0VSVChz
dGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCB8fCBzdGF0ZSA9PSBTdGF0ZTo6QmxvY2tlZCk7Ci0gICAg
TE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQg
YmUgJXMgZm9yIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxv
d2VkID8gImFsbG93ZWQiIDogImJsb2NrZWQiLCBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291
cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSA6ICIiKTsKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nID0gbV9tYWluUmVzb3VyY2VVUkwuc3RyaW5nKCk7CisjZWxzZQorICAgIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nID0gbV9tYWluUmVzb3VyY2UgPyBtX21haW5SZXNvdXJjZS0+dXJs
KCkuc3RyaW5nKCkgOiBlbXB0eVN0cmluZygpOworI2VuZGlmCisgICAgTE9HKENvbnRlbnRGaWx0
ZXJpbmcsICJDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4g
cmVzb3VyY2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQi
IDogImJsb2NrZWQiLCB1cmxTdHJpbmcuYXNjaWkoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5
cygiTmV0d29ya0V4dGVuc2lvbjogQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJl
ICVzIGZvciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dl
ZCA/ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICBtX3N0YXRlID0gc3RhdGU7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTIyOCwxMiArMjg3LDIwIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
ZGlkRGVjaWRlKFN0YXRlIHN0YXQKICAgICBtX2NsaWVudC5jYW5jZWxNYWluUmVzb3VyY2VMb2Fk
Rm9yQ29udGVudEZpbHRlcihtX2Jsb2NrZWRFcnJvcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBDb250ZW50RmlsdGVyOjpk
ZWxpdmVyUmVzb3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5j
b2RlZERhdGFMZW5ndGgpCisjZWxzZQogdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3Vy
Y2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKKyNlbmRpZgogewogICAgIEFTU0VSVCht
X3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworI2Vsc2UKICAgICBBU1NF
UlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJl
c291cmNlQnVmZmVyKCkpCiAgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250
ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkp
OworI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI0
NSw2ICszMTIsNyBAQCBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCiAgICAgcmV0
dXJuIGJsb2NrZWRQYWdlVVJMOwogfQogCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJT
dWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGlmIChhdXRvIGNv
bnRlbnRGaWx0ZXIgPSBhY3RpdmVMb2FkZXIuY29udGVudEZpbHRlcigpKSB7CkBAIC0yNTksNiAr
MzI3LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdAogCiAgICAg
cmV0dXJuIHRydWU7CiB9CisjZW5kaWYKIAogYm9vbCBDb250ZW50RmlsdGVyOjp3aWxsSGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgY29uc3QK
IHsKQEAgLTI4Myw2ICszNTIsMTUgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNp
b25hbExvYQogICAgIG1fY2xpZW50LmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCgpLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBDb250
ZW50RmlsdGVyOjpkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCkKK3sKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9idWZmZXJzLnNpemUoKTsgaSsrKQorICAgICAgICBkZWxpdmVyUmVz
b3VyY2VEYXRhKCptX2J1ZmZlcnNbaV0uYnVmZmVyLCBtX2J1ZmZlcnNbaV0uZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgIG1fYnVmZmVycy5jbGVhcigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjg2NTk2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsMjMgKzUwLDM0IEBAIGNsYXNzIENvbnRlbnRGaWx0ZXIgewogcHVibGljOgogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBhZGRUeXBlKCkgeyB0eXBlcygpLmFwcGVuZCh0
eXBlPFQ+KCkpOyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+
IGNyZWF0ZShDb250ZW50RmlsdGVyQ2xpZW50Jik7Ci0gICAgfkNvbnRlbnRGaWx0ZXIoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNy
ZWF0ZShDb250ZW50RmlsdGVyQ2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkNvbnRlbnRG
aWx0ZXIoKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVybiAi
eC1hcHBsZS1jb250ZW50LWZpbHRlciI7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZp
bHRlcmluZ01haW5SZXNvdXJjZShjb25zdCBVUkwmKTsKKyNlbHNlCiAgICAgdm9pZCBzdGFydEZp
bHRlcmluZ01haW5SZXNvdXJjZShDYWNoZWRSYXdSZXNvdXJjZSYpOwotICAgIHZvaWQgc3RvcEZp
bHRlcmluZ01haW5SZXNvdXJjZSgpOworI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIGJvb2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVj
ZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBV
UkwmIHJlc291cmNlVVJMKTsKKyNlbHNlCiAgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2Vp
dmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIGJvb2wgY29udGludWVB
ZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7CisjZW5kaWYKIAogICAgIHN0YXRp
YyBib29sIGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRM
b2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdp
bGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25z
dDsKLSAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VF
cnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKKyAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBi
bG9ja2VkRXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrZWRFcnJvcjsgfQorICAgIAogcHJp
dmF0ZToKICAgICB1c2luZyBTdGF0ZSA9IFBsYXRmb3JtQ29udGVudEZpbHRlcjo6U3RhdGU7CiAK
QEAgLTgyLDExICs5MywyNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1
bmN0aW9uPiB2b2lkIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKEZ1bmN0aW9uJiYp
OwogICAgIHZvaWQgZGlkRGVjaWRlKFN0YXRlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQg
ZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworI2Vsc2UKICAgICB2b2lkIGRlbGl2ZXJSZXNv
dXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmKTsKLQorI2VuZGlmCisgICAgCiAgICAgQ29udGFpbmVy
IG1fY29udGVudEZpbHRlcnM7CiAgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9jbGllbnQ7Cisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBV
UkwgbV9tYWluUmVzb3VyY2VVUkw7CisgICAgCisgICAgc3RydWN0IFJlc291cmNlRGF0YUl0ZW0g
eworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIHNp
emVfdCBlbmNvZGVkRGF0YUxlbmd0aDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxSZXNvdXJj
ZURhdGFJdGVtPiBtX2J1ZmZlcnM7CisjZWxzZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJjZTsKKyNlbmRpZgogICAgIGNvbnN0IFBsYXRm
b3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3VyY2VFcnJvciBt
X2Jsb2NrZWRFcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXJDbGllbnQuaAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRl
RGF0YTsKIAogY2xhc3MgQ29udGVudEZpbHRlckNsaWVudCB7CkBAIC00MSw3ICs0MiwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdo
Q29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAg
ICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVp
bnQ4X3QqLCBpbnQpID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250
ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxN
YWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9u
IDI4NjU5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3NSw2ICsxNzUsOCBAQCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRM
b2FkZXIoY29uc3QgUmVzCiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIo
KnRoaXMsICZEb2N1bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZp
cmVkKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChtYWtlVW5pcXVlPEFwcGxpY2F0aW9u
Q2FjaGVIb3N0PigqdGhpcykpCiB7CisKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtFeHRlbnNp
b246IFN1YnN0aXR1dGUgZGF0YSBpcyB2YWxpZDogJWQiLCBzdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkpOwogfQogCiBGcmFtZUxvYWRlciogRG9jdW1lbnRMb2FkZXI6OmZyYW1lTG9hZGVyKCkgY29u
c3QKQEAgLTQyMCw3ICs0MjIsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBj
b25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAgICAgICAg
IHJldHVybjsKICNlbmRpZgpAQCAtNzEwLDcgKzcxMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RGTW92ZSh1
cmwpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNw
b25zZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVl
c3QpKTsKICNlbmRpZgpAQCAtOTA4LDcgKzkxMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJl
c3BvbnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkp
OwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2Fs
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVz
cG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjQsNyArMTMyNiw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1bWVudExv
YWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0j
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAg
ICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVy
RGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAt
MTQ1Miw3ICsxNDU0LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkK
ICAgICBzdG9wTG9hZGluZygpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNv
dXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNs
aWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50
RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIwMTQsNyAr
MjAxNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQogICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOwog
I2VuZGlmCiAKQEAgLTIyMTYsNyArMjIxOCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFy
TWFpblJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21h
aW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAg
bV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZp
bHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNl
KCk7CiAjZW5kaWYKQEAgLTIzNDcsNyArMjM0OSw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291
cmNlQ2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRl
bnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAj
ZW5kaWYKQEAgLTI0MDQsNyArMjQwNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVT
ZWN1cml0eVBvbGkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudChXVEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgc2l6ZSkKIHsKICAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CkBAIC0yNDE1
LDEyICsyNDE3LDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUwK
ICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAorUmVzb3VyY2VFcnJvciBE
b2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpCit7CisgICAgcmV0dXJuIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFu
ZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0
ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQogewogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUo
KSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CisjZW5kaWYgLy8gRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKIAotUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZp
bHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwg
U3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZp
bHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwg
U3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7CiAgICAgdW5ibG9ja0hhbmRs
ZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewpAQCAtMjQzMCw4ICsyNDM5
LDQwIEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWwKICAgICAgICAg
fSk7CiAgICAgfQogICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRC
bG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwotICAgIHJldHVybiBmcmFtZUxvYWRl
cigpLT5ibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCgpKTsKKyAgICBhdXRvIGVy
cm9yID0gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3Qo
KSk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciA9IHRydWU7CisgICAgbV9ibG9ja2VkRXJy
b3IgPSBlcnJvcjsKKyNlbmRpZgorCisgICAgcmV0dXJuIGVycm9yOworfQorCit2b2lkIERvY3Vt
ZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURh
dGEpCit7CisgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgp
LCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KKworYm9vbCBEb2N1bWVudExv
YWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRl
ciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBt
X2Jsb2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKKyNlbHNlCisgICAgcmV0
dXJuIG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyNlbmRpZgorfQorCit2b2lkIERvY3VtZW50TG9hZGVy
Ojpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgIGlmICht
X2NvbnRlbnRGaWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZShlcnJvcik7CisjZW5kaWYKK30KKwogI2VuZGlmIC8vIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QWN0aXZlQ29udGVudFJ1
bGVMaXN0QWN0aW9uUGF0dGVybnMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+
PiYgcGF0dGVybnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAko
cmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBjbGFzcyBEb2N1bWVudExvYWRl
cgogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBwdWJsaWMg
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9s
aWN5Q2xpZW50Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVudAogI2VuZGlmCiAgICAg
LCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTM4NiwxMCArMzg2LDE0IEBA
IHB1YmxpYzoKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogICAgIENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRGaWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsg
UmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNv
bnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KICNlbmRp
ZgorICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRp
ZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZp
bHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5n
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNoYXJlZEJ1ZmZlciopPiYmKTsKQEAgLTQzNCw2ICs0MzgsMTEgQEAgcHVibGljOgogICAg
IGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZDsg
fQogICAgIHZvaWQgc2V0SXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRl
ZChib29sIGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpIHsgbV9p
c0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkID0gaXNDb250aW51aW5n
TG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZDsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQorICAgIGJvb2wgY29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJI
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyNlbmRp
ZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKIApAQCAtNDg2LDcgKzQ5
NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAvLyBDb250
ZW50RmlsdGVyQ2xpZW50CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5h
bDsKQEAgLTYzOCw3ICs2NDcsMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29u
dGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKIAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9j
b250ZW50RmlsdGVyOworI2Vsc2UKKyAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciB7
IGZhbHNlIH07CisgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKKyNlbmRpZgogI2Vu
ZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1OCw3ICsyNDU4LDYgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAgIG1fcHJvdmlzaW9uYWxMb2Fk
RXJyb3JCZWluZ0hhbmRsZWRVUkwgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLnVybCgpOwog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGF1dG8gY29udGVudEZpbHRlciA9
IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlcigpOwogICAgIGF1dG8gY29u
dGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcgPSBmYWxzZTsKICNlbmRpZgogCkBAIC0yNDY2
LDcgKzI0NjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAg
ICAgaWYgKGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSkKICAgICAgICAgd2lsbENvbnRpbnVl
TG9hZGluZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCi0gICAgaWYgKGNvbnRlbnRGaWx0ZXIgJiYgY29udGVudEZpbHRlci0+d2lsbEhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKSB7CisgICAgaWYgKHByb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGVycm9yKSkgewogICAgICAgICB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENvbnRpbnVl
TG9hZGluZzo6WWVzOwogICAgICAgICBjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZyA9
IHRydWU7CiAgICAgfQpAQCAtMjQ3Niw3ICsyNDc1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAg
IGlmIChjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZykKLSAgICAgICAgY29udGVudEZp
bHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgIHByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmUoZXJyb3IpOwogI2VuZGlmCiAKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdI
YW5kbGVkVVJMID0geyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNr
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVEYXRhID0g
bG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkgJiYgIXN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAg
Ym9vbCBzaG91bGRDb250aW51ZSA9IHRydWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChhdXRvIGxvYWRlciA9IG1f
ZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIHNob3Vs
ZENvbnRpbnVlID0gQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVx
dWVzdCgqbG9hZGVyLCBzdWJzdGl0dXRlRGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAg
ICAgICAgIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VS
TDsgfQogICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICAgICAgCisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBTdWJzdGl0dXRlRGF0YSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwpAQCAtNjcs
NCArNzAsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHkgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
dm9pZCBTdWJzdGl0dXRlRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCBtX2NvbnRlbnQgPDwgbV9mYWlsaW5nVVJMIDw8IG1fcmVzcG9uc2UgPDwg
bV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorYm9vbCBTdWJzdGl0dXRlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN1YnN0
aXR1dGVEYXRhJiBkYXRhKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX2NvbnRl
bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEubV9mYWlsaW5nVVJMKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhLm1fcmVzcG9uc2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCShyZXZp
c2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSw3IEBA
IHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmhhbmQKIAogYm9vbCBOZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6aXNSZXF1aXJlZCgpCiB7CisgICAgV1RGTG9nQWx3YXlz
KCJOZXR3b3JrRXh0ZW5zaW9uOiBpc1JlcXVpcmVkICVkIiwgW05FRmlsdGVyU291cmNlIGZpbHRl
clJlcXVpcmVkXSk7CiAgICAgcmV0dXJuIFtORUZpbHRlclNvdXJjZSBmaWx0ZXJSZXF1aXJlZF07
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTA2ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQg
ZmlsdGVyaW5nIHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NjE1MDcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVy
RGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9X
ZWJLaXQueGNzY2hlbWU6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRG
aWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6
Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW46CisKIDIwMjEtMTItMDcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBv
c2l0aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDYgKzY3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3Q29udmVydGVy
Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4KKyNlbmRpZgorCiAjZGVmaW5l
IExPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0g
W3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVkLCBk
ZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoi
IGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVzb3Vy
Y2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3RpbmF0
aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0FERVJfUkVM
RUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAt
IFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlE
PSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0lZCwg
ZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCksIGlzTWFpblJlc291
cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5h
dGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTg3LDYgKzE5Miwx
MSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIEFTU0VSVCghbV93
YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBhdXRvIHJlcXVlc3QgPSBS
ZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9OworICAgIHN0YXJ0Q29udGVudEZp
bHRlcmluZyhyZXF1ZXN0KTsKKyNlbmRpZgorCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2Vy
KSB7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3Qg
eyBvcmlnaW5hbFJlcXVlc3QoKSB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBA
IC0yMjUsNiArMjM1LDE4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAg
ICAgc3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9
LCBGaXJzdExvYWQ6Olllcyk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29u
dGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKCFtX2Nv
bnRlbnRGaWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRGaWx0ZXI6OmNy
ZWF0ZSgqdGhpcyk7CisgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QocmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0
YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOworfQorI2VuZGlmCisKIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygicmV0cmlldmVD
YWNoZUVudHJ5OiBpc01haW5GcmFtZUxvYWQ9JWQiLCBpc01haW5GcmFtZUxvYWQoKSk7CkBAIC03
MDQsNiArNzI2LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmUK
IHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0
dXNDb2RlPSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRl
bnRMZW5ndGg9JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFz
TmV0d29ya0xvYWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSwgcmVjZWl2ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVz
cG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlv
biwgISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1f
Y29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVjZWl2ZWRSZXNw
b25zZSkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CisjZW5kaWYKKwogICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBkaWRS
ZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTkxNSw2
ICs5NDIsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAg
ICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2Rl
ZCBkYXRhIHNpemUgZmVhdHVyZS4KICAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWRE
YXRhLCAtMSk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7CisgICAgICAg
ICAgICBtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFt
ZXRlcnMucmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BG
aWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3
b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CiAKQEAgLTEwMDQsNiArMTAzOCwxMSBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAgICAgaWYgKCFtX2ZpcnN0UmVzcG9u
c2VVUkwuaXNWYWxpZCgpKQogICAgICAgICBtX2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJl
c3BvbnNlLnVybCgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXIt
PmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkp
CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklE
KCkuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RS
ZXF1ZXN0LnVybCgpKSkgewpAQCAtMTI2Miw3ICsxMzAxLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpidWZmZXJpbmdUaW0KICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5j
b2RlZERhdGFMZW5ndGgpKTsKKyAgICBib29sIHNob3VsZEZpbHRlciA9IGZhbHNlOworI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgc2hvdWxk
RmlsdGVyID0gbV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoKm1fYnVmZmVyZWREYXRhLmdldCgpLCBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoKTsKKyNlbmRpZgorICAgIGlmICghc2hvdWxkRmlsdGVyKQorICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZm
ZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCiAgICAgbV9i
dWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIG1fYnVmZmVyZWREYXRh
RW5jb2RlZERhdGFMZW5ndGggPSAwOwpAQCAtMTI3Miw2ICsxMzE2LDExIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFMKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25v
dXMoKSk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKSkKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkUmVjZWl2ZURhdGEoeyBidWZmZXIgfSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIApAQCAt
MTMxOCw2ICsxMzY3LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2
ZUMKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJldHJpZXZlQ2FjaGVFbnRyeToiKTsKICAg
ICBhdXRvIHJlc3BvbnNlID0gZW50cnktPnJlc3BvbnNlKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVz
cG9uc2UpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGlmIChpc01haW5SZXNvdXJj
ZSgpKQogICAgICAgICBkaWRSZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UpOwog
CkBAIC0xMzY4LDYgKzE0MjIsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRS
ZXN1bHRGbwogICAgIExPQURFUl9SRUxFQVNFX0xPRygic2VuZFJlc3VsdEZvckNhY2hlRW50cnk6
Iik7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBpZiAoIWVudHJ5LT5zaGFy
ZWFibGVSZXNvdXJjZUhhbmRsZSgpLmlzTnVsbCgpKSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1fY29udGVudEZpbHRl
ciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKCplbnRyeS0+
YnVmZmVyKCksIGVudHJ5LT5idWZmZXIoKS0+c2l6ZSgpKSkgeworICAgICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFp
blJlc291cmNlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc291cmNl
KGVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xMzkxLDYgKzE0NTIsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNl
bmRSZXN1bHRGbwogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6
ZSA9IDA7CiAKICAgICBzZW5kQnVmZmVyKCplbnRyeS0+YnVmZmVyKCksIGVudHJ5LT5idWZmZXIo
KS0+c2l6ZSgpKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJs
KCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
KTsKKyAgICB9CisjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogfQogCkBAIC0xNzA3
LDYgKzE3NzQsMzYgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQXBwSW5pdGlhdAog
ICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpOwogfQogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShidWZm
ZXIsIGVuY29kZWREYXRhTGVuZ3RoKSk7Cit9CisKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50Rmls
dGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9jb250
ZW50RmlsdGVyKTsKKyAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmUoZXJyb3IpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBh
Z2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBp
ZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50Rmls
dGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOworICAgIGVsc2UgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOworICAgICAgICBhdXRvJiBlcnJvciA9
IG1fY29udGVudEZpbHRlci0+YmxvY2tlZEVycm9yKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRl
cihlcnJvcikpOworICAgIH0KK30KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVm
IExPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODY1OTYpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQu
aCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250
ZW50RmlsdGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xp
Y3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTQzLDYg
KzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlOworY2xhc3MgQ29udGVudEZpbHRlcjsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNzAsNiArNzIsOSBA
QCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKICAgICAsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lD
bGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0Rpc2FibGVyCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50RmlsdGVyQ2xpZW50CisjZW5kaWYK
ICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmIHJlcGx5ID0gbnVs
bHB0cikKQEAgLTkwLDcgKzk1LDcgQEAgcHVibGljOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMu
CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJG
b3JDcmVkZW50aWFscyk7CiAKICAgICB2b2lkIHNldFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSkgeyBtX3Jlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7IH0K
ICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2U7IH0KQEAgLTE1MSw2ICsxNTYsMTEgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc0FwcEluaXRpYXRlZCgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291
bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+OjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBj
b25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPjo6ZGVyZWYoKTsg
fQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkRGVsYXllZFJlcGx5JiYpOwogCkBAIC0xNTgsNiArMTY4LDE0IEBAIHByaXZhdGU6CiAg
ICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKTsgfQogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAv
LyBDb250ZW50RmlsdGVyQ2xpZW50CisgICAgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBzaXplX3QpIGZpbmFsOworICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRG
aWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CisjZW5kaWYKKwog
ICAgIGJvb2wgY2FuVXNlQ2FjaGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29u
c3Q7CiAgICAgYm9vbCBjYW5Vc2VDYWNoZWRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdDsKIApAQCAtMjE2LDYgKzIzNCwxMCBAQCBwcml2YXRlOgogCiAgICAg
UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgc3RhcnRDb250ZW50
RmlsdGVyaW5nKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworI2VuZGlmCisKICAgICBjb25z
dCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAKICAgICBSZWY8
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlvbjsKQEAgLTI1OSw2ICsy
ODEsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJl
Y3RSZXNwb25zZTsKICAgICBVUkwgbV9maXJzdFJlc3BvbnNlVVJMOyAvLyBGaXJzdCBVUkwgaW4g
cmVzcG9uc2UncyBVUkwgbGlzdCAoaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNl
cHQtcmVzcG9uc2UtdXJsLWxpc3QpLgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4gbV9jdXJyZW50Q29vcEVuZm9yY2Vt
ZW50UmVzdWx0OworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEZpbHRlcj4gbV9j
b250ZW50RmlsdGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDYg
KzMyMiwyOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNv
bnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIs
IFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIGlmICghbV9jb3Jl
TG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0
ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCkpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikK
K3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJz
dGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRG
aWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0
YSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBXRUJSRVNPVVJDRUxP
QURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1YnN0
aXR1dGVEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTQyLDYgKzQzLDcgQEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZUxvYWRlcjsKQEAgLTkzLDYgKzk1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBoYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwg
Y29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRpZgorICAgIAogICAgIFJlZlB0
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9hZGVyOwogICAgIFRyYWNraW5nUGFy
YW1ldGVycyBtX3RyYWNraW5nUGFyYW1ldGVyczsKICAgICBXZWJSZXNvdXJjZUludGVyY2VwdENv
bnRyb2xsZXIgbV9pbnRlcmNlcHRDb250cm9sbGVyOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw0ICszNywxMSBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAg
ICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlzIGZvciB3aGVuIHdlIGhhdmUgdGhlIGVudGlyZSBy
ZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBvbmNlLCBzdWNoIGFzIHdoZW4gdGhlIHJlc291cmNl
IGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBEaWRSZWNlaXZlUmVzb3VyY2UoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIENvbnRlbnRGaWx0ZXJE
aWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisgICAgQ2FuY2VsTWFp
blJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
cikKKyAgICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoVVJM
IGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSkK
KyNlbmRpZgorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446184</attachid>
            <date>2021-12-07 09:12:54 -0800</date>
            <delta_ts>2021-12-07 09:31:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211207181252.patch</filename>
            <type>text/plain</type>
            <size>50174</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMTItMDYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI4NjUwNyk6IFttYWNPU10gTWFueSBm
aWxlIHN5c3RlbSBhY2Nlc3MgbGF5b3V0IHRlc3RzIGJlY2FtZSBmbGFreSBmYWlsdXJlcwpJbmRl
eDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2NTk2KQorKysg
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjMsNiArMTYzLDEyIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5k
aWYKIAorI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEyMDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDE2MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9T
KSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSkKKyNkZWZpbmUg
RU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUyBFTkFCTEVfQ09O
VEVOVF9GSUxURVJJTkcKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFWFRfTUVO
VVMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVT
IDAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMTIt
MDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
Y29udGVudCBmaWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg2MTUwNzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Zm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlckJ1ZmZlcnMpOgorICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGV0YWNoRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dGFydExvYWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmNsZWFyTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQ
cm92aXNpb25hbExvYWQpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRp
b25Qb2xpY3kpOgorCiAyMDIxLTEyLTA3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21w
b3NpdGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzI1LDcgKzMz
MjUsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1bi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOUUx
ODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYzQTYg
LyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8qIFdlYkNv
cmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNl
c3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9OwotCQlBMTQ5
Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8q
IENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzExQUJBRjNB
NTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBs
YXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QkIwOUUx
Rjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2MUU2OEY3
QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJh
Y2suaCAqLzsgfTsKQEAgLTMzNTE1LDEwICszMzUxNSwxMiBAQAogCQkJCUNEM0VFRjNDMjU3OTlG
QUIwMDY1NjNCQiAvKiBDb2xvckdhbXV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAzQjdERjFE
QjAxNTY3MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RC
NDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDM0EwMEM4Mjc1NDQ5NkQwMDQ3QzBFNSAvKiBDb2xvckludGVycG9sYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNEEyM0VDMjVFQzE2MDIwMEFBQzYzMCAvKiBDb2xvckx1bWluYW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFj
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0FDNkFFOTI0N0YwODJGMDBFNjFENTkgLyogQ29sb3JN
YXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTAxMzdDMjVDMzYyNEIwMERDNzczQyAvKiBD
b2xvck1vZGVscy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNCMkY4OEUyNzVCRUU1ODAwNzIzMUJG
IC8qIENvbG9yTm9ybWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMUU2OTMyNEFC
RjYyNDAwODlDNDE5IC8qIENvbG9yU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM4MkRGNTgxMEE4RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzYyNDQsNyArMzYyNDYsNiBAQAogCQkJCTQ5RDVEQzJFMEY0MjNBNzMwMDhGMjBG
RCAvKiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUQyQzgyQjcyMzZBM0Y2QTAwNTVENkM1IC8qIFBpY3R1cmVJblBp
Y3R1cmVTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzNBMDBDODI3NTQ0OTZEMDA0N0Mw
RTUgLyogQ29sb3JJbnRlcnBvbGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDJGOEUwNjIz
NDQ3NTIzMDA5OTNCNjggLyogUGljdHVyZUluUGljdHVyZVdpbmRvdy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTc1ODU5N0MyM0ExRkNGMzAwQzc0NTcyIC8qIFBpbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDBGRjJBNUUxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMzY2NjksNyArMzY2NzAsNiBAQAogCQkJCTQxODhENTYzMjZDNTUxQjEwMDQ4NThDOCAv
KiBSVENEdGxzVHJhbnNwb3J0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTIwMTdE
MTREMUMwMDQyMEFBMSAvKiBSVENEVE1GU2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhF
MDkyMTE3RDE0RDFDMDA0MjBBQTEgLyogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQkNCMkY4OEUyNzVCRUU1ODAwNzIzMUJGIC8qIENvbG9yTm9ybWFsaXphdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFNkQ3MUIyNkVBMUE0NjAwQjc2NUQ2IC8qIFJUQ0Vy
cm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCOTc5NTI2RTc1QTJFMDA3QzBGRTYgLyogUlRD
RXJyb3JEZXRhaWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkyMzE3RDE0RDFDMDA0
MjBBQTEgLyogUlRDSWNlQ2FuZGlkYXRlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDYgKzExMywxOCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAg
ICAgcmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRG
aWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhDb250ZW50Rmls
dGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNl
IGF0IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUg
PSBTdGF0ZTo6RmlsdGVyaW5nOworICAgIEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5
KCkpOworICAgIG1fbWFpblJlc291cmNlVVJMID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVu
dEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJl
c291cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDE4
ICsxMzUsMjIgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAg
IEFTU0VSVCghbV9tYWluUmVzb3VyY2UpOwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNl
OwogfQorI2VuZGlmCiAKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNv
dXJjZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fbWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxz
ZQogICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0
ZWRDbGllbnQgeyBtX2NsaWVudCB9OwotCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRl
cmluZykgewogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVj
ZWl2ZWQgcmVzcG9uc2UgZnJvbSA8JXM+LlxuIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChb
JnJlc3BvbnNlXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKQEAgLTE0
MiwxNCArMTU4LDMxIEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnMK
ICAgICAgICAgfSk7CiAgICAgfQogCisgICAgbV9yZXNwb25zZVJlY2VpdmVkID0gdHJ1ZTsKKwog
ICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK2Jvb2wgQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29u
dGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQor
I2VuZGlmCiB7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7
IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7Cisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAg
ICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRl
cyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGVuY29kZWREYXRhTGVuZ3RoLCBtX21haW5SZXNvdXJj
ZVVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGZvckVhY2hDb250ZW50Rmls
dGVyVW50aWxCbG9ja2VkKFtidWZmZXIgPSBSZWYgeyBidWZmZXIgfV0oUGxhdGZvcm1Db250ZW50
RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERh
dGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgfSk7CisgICAgICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CisgICAgICAgICAgICBkZWxpdmVyU3Rv
cmVkUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKGJ1ZmZl
ciwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fYnVm
ZmVycy5hcHBlbmQoUmVzb3VyY2VEYXRhSXRlbSB7IFJlZlB0ciB7ICZidWZmZXIgfSwgZW5jb2Rl
ZERhdGFMZW5ndGggfSk7CisjZWxzZQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5n
dGgsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAg
ICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhLCBsZW5ndGhdKFBsYXRm
b3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZp
bHRlci5hZGREYXRhKGRhdGEsIGxlbmd0aCk7CkBAIC0xNTcsMjkgKzE5MCw0NSBAQCBib29sIENv
bnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAKICAgICAgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkFsbG93ZWQpCiAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX21h
aW5SZXNvdXJjZSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAg
IHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK2Jvb2wgQ29udGVudEZpbHRlcjo6
Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCisjZWxz
ZQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQorI2VuZGlmCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBSZWY8Q29udGVudEZpbHRlckNs
aWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLQorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWluUmVzb3VyY2VVUkwpOworI2Vsc2UKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAg
IGlmIChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNlbmRpZgogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAg
IExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJp
bmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVzb3VyY2VVUkwuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworI2Vsc2UKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4u
XG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworI2Vu
ZGlmCiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtdKFBsYXRmb3Jt
Q29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRl
ci5maW5pc2hlZEFkZGluZ0RhdGEoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OkJsb2NrZWQpIHsKICAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxs
b3dlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworI2Vsc2UKICAgICAg
ICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNlbmRpZgogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQpCkBAIC0yMTks
NyArMjY4LDEyIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0YXQKICAg
ICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKG1fc3RhdGUg
IT0gU3RhdGU6OkJsb2NrZWQpOwogICAgIEFTU0VSVChzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCB8
fCBzdGF0ZSA9PSBTdGF0ZTo6QmxvY2tlZCk7Ci0gICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVzb3VyY2Ug
YXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDogImJsb2Nr
ZWQiLCBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSA6ICIiKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0gbV9tYWluUmVzb3Vy
Y2VVUkwuc3RyaW5nKCk7CisjZWxzZQorICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0gbV9t
YWluUmVzb3VyY2UgPyBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkgOiBlbXB0eVN0cmlu
ZygpOworI2VuZGlmCisgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIGRl
Y2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIHN0
YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDogImJsb2NrZWQiLCB1cmxTdHJpbmcu
YXNjaWkoKS5kYXRhKCkpOwogICAgIG1fc3RhdGUgPSBzdGF0ZTsKICAgICBpZiAobV9zdGF0ZSAh
PSBTdGF0ZTo6QmxvY2tlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI4LDEyICsyODIsMjAgQEAg
dm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdAogICAgIG1fY2xpZW50LmNh
bmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKG1fYmxvY2tlZEVycm9yKTsKIH0K
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2
b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyNlbHNlCiB2b2lkIENvbnRlbnRG
aWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQorI2Vu
ZGlmCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOworI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgbV9jbGllbnQu
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisjZWxzZQogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNl
QnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgbV9jbGllbnQuZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVz
b3VyY2VCdWZmZXItPnNpemUoKSk7CisjZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwoKQpAQCAtMjQ1LDYgKzMwNyw3IEBAIHN0YXRpYyBjb25zdCBVUkwmIGJsb2Nr
ZWRQYWdlVVJMKCkKICAgICByZXR1cm4gYmxvY2tlZFBhZ2VVUkw7CiB9CiAKKyNpZiAhRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExv
YWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEp
CiB7CiAgICAgaWYgKGF1dG8gY29udGVudEZpbHRlciA9IGFjdGl2ZUxvYWRlci5jb250ZW50Rmls
dGVyKCkpIHsKQEAgLTI1OSw2ICszMjIsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVl
QWZ0ZXJTdWJzdGl0CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgogCiBib29sIENvbnRl
bnRGaWx0ZXI6OndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKSBjb25zdAogewpAQCAtMjgzLDYgKzM0NywxNSBAQCB2b2lkIENvbnRlbnRG
aWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hCiAgICAgbV9jbGllbnQuaGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMKCksIHN1YnN0aXR1
dGVEYXRhKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEo
KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2J1ZmZlcnMuc2l6ZSgpOyBpKysp
CisgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fYnVmZmVyc1tpXS5idWZmZXIsIG1fYnVm
ZmVyc1tpXS5lbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgbV9idWZmZXJzLmNsZWFyKCk7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCShy
ZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCwyMyArNTAsMzYgQEAgY2xhc3MgQ29udGVudEZpbHRlciB7
CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFkZFR5cGUo
KSB7IHR5cGVzKCkuYXBwZW5kKHR5cGU8VD4oKSk7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKLSAgICB+
Q29udGVudEZpbHRlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB+Q29udGVudEZpbHRlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVy
bFNjaGVtZSgpIHsgcmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQogCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOworI2Vs
c2UKICAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNl
Jik7Ci0gICAgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisjZW5kaWYKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAotICAgIGJv
b2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250
aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlck5v
dGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpOworI2Vsc2UKICAgICBib29sIGNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7
CiAgICAgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsK
KyNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVx
dWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRl
RGF0YSYpOwogICAgIGJvb2wgd2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIGNvbnN0OwotICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAorICAgIGNv
bnN0IFJlc291cmNlRXJyb3ImIGJsb2NrZWRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tl
ZEVycm9yOyB9CisgICAgYm9vbCBpc0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09
IFN0YXRlOjpBbGxvd2VkOyB9CisgICAgYm9vbCByZXNwb25zZVJlY2VpdmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNwb25zZVJlY2VpdmVkOyB9CisgICAgCiBwcml2YXRlOgogICAgIHVzaW5nIFN0
YXRlID0gUGxhdGZvcm1Db250ZW50RmlsdGVyOjpTdGF0ZTsKIApAQCAtODIsMTUgKzk1LDMxIEBA
IHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgZm9yRWFj
aENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoRnVuY3Rpb24mJik7CiAgICAgdm9pZCBkaWREZWNp
ZGUoU3RhdGUpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYs
IHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkZWxpdmVyU3RvcmVkUmVzb3Vy
Y2VEYXRhKCk7CisjZWxzZQogICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNv
dXJjZSYpOwotCisjZW5kaWYKKyAgICAKICAgICBDb250YWluZXIgbV9jb250ZW50RmlsdGVyczsK
ICAgICBDb250ZW50RmlsdGVyQ2xpZW50JiBtX2NsaWVudDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVSTCBtX21haW5SZXNvdXJjZVVS
TDsKKyAgICBzdHJ1Y3QgUmVzb3VyY2VEYXRhSXRlbSB7CisgICAgICAgIFJlZlB0cjxjb25zdCBT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoOwor
ICAgIH07CisgICAgCisgICAgVmVjdG9yPFJlc291cmNlRGF0YUl0ZW0+IG1fYnVmZmVyczsKKyNl
bHNlCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJl
c291cmNlOworI2VuZGlmCiAgICAgY29uc3QgUGxhdGZvcm1Db250ZW50RmlsdGVyKiBtX2Jsb2Nr
aW5nQ29udGVudEZpbHRlciB7IG51bGxwdHIgfTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6
OlN0b3BwZWQgfTsKICAgICBSZXNvdXJjZUVycm9yIG1fYmxvY2tlZEVycm9yOwogICAgIGJvb2wg
bV9pc0xvYWRpbmdCbG9ja2VkUGFnZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Jlc3BvbnNlUmVj
ZWl2ZWQgeyBmYWxzZSB9OwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHJldmlzaW9uIDI4NjU5
NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIENvbnRlbnRGaWx0
ZXJDbGllbnQgewpAQCAtNDEsNyArNDIsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVk
QnVmZmVyJiwgc2l6ZV90KSA9IDA7CisjZWxzZQogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisjZW5kaWYK
ICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRG
aWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tl
ZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjAsNyArNDIw
LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nKCkgY29uc3QKIHZvaWQgRG9jdW1l
bnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51
ZUFmdGVyTm90aWZ5RmluaXNoZWQocmVzb3VyY2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYK
QEAgLTcxMCw3ICs3MTAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qo
UmVzCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0VVJMKFdURk1vdmUodXJsKSk7CiAgICAgfQogCi0j
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAg
ICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVy
V2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQogICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAjZW5kaWYKQEAg
LTkwOCw3ICs5MDgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNv
CiAgICAgQVNTRVJUKHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpKTsKICAgICBDb21wbGV0aW9u
SGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRG
aWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKSkKICAgICAgICAg
cmV0dXJuOwogI2VuZGlmCkBAIC0xMzI0LDcgKzEzMjQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZl
ZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRG
aWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRh
LCBsZW5ndGgpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTE0NTIsNyArMTQ1Miw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAgc3RvcExvYWRpbmco
KTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgq
dGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
IGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRl
cmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMDE0LDcgKzIwMTQsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKICAgICBtX2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgPyBD
b250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKICNlbmRpZgogCkBAIC0yMjE2
LDcgKzIyMTYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSgpCiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9t
YWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5y
ZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1f
Y29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0y
MzQ3LDcgKzIzNDcsNyBAQCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IERvY3VtZW50TG9h
CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpCiB7Ci0j
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAg
ICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZp
bHRlcmluZ01haW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2UpOwogI2VuZGlmCkBAIC0yNDA0LDcg
KzI0MDQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpCiAgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQo
V1RGTW92ZShldmVudEluaXQpKTsKIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCiB7
CiAgICAgZGF0YVJlY2VpdmVkKGRhdGEsIHNpemUpOwpAQCAtMjQxNSwxMiArMjQxNSwxOSBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMCiAgICAgY2FuY2VsTWFpblJl
c291cmNlTG9hZChlcnJvcik7CiB9CiAKK1Jlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNv
bnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIHJldHVy
biBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKK30KKwogdm9pZCBEb2N1bWVudExvYWRlcjo6aGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBmcmFt
ZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lKCksIGJsb2NrZWRQYWdlVVJM
LCBzdWJzdGl0dXRlRGF0YSkpOwogfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAK
LVJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKK1Jlc291
cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KQogewogICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxl
VVJMKGRvY3VtZW50VVJMKCkpOwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQu
aXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKQEAgLTI0MzAsOCArMjQzNyw0MCBAQCBSZXNvdXJjZUVy
cm9yIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsCiAgICAgICAgIH0pOwogICAgIH0KICAgICBm
cmFtZUxvYWRlcigpLT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUo
dW5ibG9ja0hhbmRsZXIpKTsKLSAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29u
dGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CisgICAgYXV0byBlcnJvciA9IGZyYW1lTG9hZGVy
KCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOworCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBtX2Jsb2NrZWRC
eUNvbnRlbnRGaWx0ZXIgPSB0cnVlOworICAgIG1fYmxvY2tlZEVycm9yID0gZXJyb3I7CisjZW5k
aWYKKworICAgIHJldHVybiBlcnJvcjsKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxl
Q29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQoreworICAgIGZyYW1l
TG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkws
IHN1YnN0aXR1dGVEYXRhKSk7CiB9CisKK2Jvb2wgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIHJldHVybiBtX2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIgJiYgbV9ibG9ja2VkRXJy
b3IuZXJyb3JDb2RlKCkgPT0gZXJyb3IuZXJyb3JDb2RlKCkgJiYgbV9ibG9ja2VkRXJyb3IuZG9t
YWluKCkgPT0gZXJyb3IuZG9tYWluKCk7CisjZWxzZQorICAgIHJldHVybiBtX2NvbnRlbnRGaWx0
ZXIgJiYgbV9jb250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShl
cnJvcik7CisjZW5kaWYKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBVTlVTRURfUEFSQU0oZXJyb3IpOworI2Vsc2UKKyAgICBpZiAobV9jb250ZW50RmlsdGVyKQor
ICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJy
b3IpOworI2VuZGlmCit9CisKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAK
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEFjdGl2ZUNvbnRlbnRSdWxlTGlzdEFjdGlvblBhdHRl
cm5zKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4mIHBhdHRlcm5zKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI4NjU5NikK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXIKICAgICA6IHB1YmxpYyBS
ZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPgogICAgICwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlcgogICAgICwgcHVibGljIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYm
ICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICwg
cHVibGljIENvbnRlbnRGaWx0ZXJDbGllbnQKICNlbmRpZgogICAgICwgcHJpdmF0ZSBDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudCB7CkBAIC0zODYsMTAgKzM4NiwxNCBAQCBwdWJsaWM6CiAgICAgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Q
cm9wYWdhdGUoKSBjb25zdDsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBDb250
ZW50RmlsdGVyKiBjb250ZW50RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RmlsdGVy
LmdldCgpOyB9CiAgICAgdm9pZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1l
bnRMb2FkZXI+OjpyZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNv
dW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpkZXJlZigpOyB9CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZXNvdXJjZUVycm9yIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExv
YWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRh
Jik7CisjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50
NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIq
KT4mJik7CkBAIC00MzQsNiArNDM4LDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udGludWlu
Z0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29u
dGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7IH0KICAgICB2b2lkIHNldElz
Q29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoYm9vbCBpc0NvbnRpbnVp
bmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKSB7IG1faXNDb250aW51aW5nTG9hZEFm
dGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCA9IGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lv
bmFsTG9hZFN0YXJ0ZWQ7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAgICBi
b29sIGNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBS
ZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisjZW5kaWYKKwogcHJvdGVjdGVkOgog
ICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTQ4Niw3ICs0OTUsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIo
Y29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VF
cnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7CkBAIC02MzgsNyArNjQ3
LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGlj
eT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyNl
bHNlCisgICAgYm9vbCBtX2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIgeyBmYWxzZSB9OworICAgIFJl
c291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlz
aW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0NTgsNyArMjQ1OCw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkRmFpbFByb3Zpc2kKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVk
VVJMID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci51cmwoKTsKIAogI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKLSAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBwcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXIoKTsKICAgICBhdXRvIGNvbnRlbnRGaWx0ZXJXaWxsQ29u
dGludWVMb2FkaW5nID0gZmFsc2U7CiAjZW5kaWYKIApAQCAtMjQ2Niw3ICsyNDY1LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAgIGlmIChoaXN0b3J5KCku
cHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAgIHdpbGxDb250aW51ZUxvYWRpbmcgPSBXaWxsQ29u
dGludWVMb2FkaW5nOjpZZXM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlm
IChjb250ZW50RmlsdGVyICYmIGNvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGVycm9yKSkgeworICAgIGlmIChwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNv
bnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpIHsKICAg
ICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsKICAg
ICAgICAgY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcgPSB0cnVlOwogICAgIH0KQEAg
LTI0NzYsNyArMjQ3NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zp
c2kKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoY29udGVudEZpbHRl
cldpbGxDb250aW51ZUxvYWRpbmcpCi0gICAgICAgIGNvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAgICBwcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyLmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKICNl
bmRpZgogCiAgICAgbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHsgfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI4
NjU5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNr
ZXI6OmNoZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0
ZURhdGEoKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0dXRl
RGF0YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29udGlu
dWUgPSB0cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgICAgICBpZiAoYXV0byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vi
c3RpdHV0ZURhdGEpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0
aXR1dGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsgfQogICAgICAgICBjb25zdCBVUkwm
IGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICAgICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
OyB9Ci0gICAgICAgIAorCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU3Vic3RpdHV0ZURh
dGEmKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29u
dGVudDsKICAgICAgICAgVVJMIG1fZmFpbGluZ1VSTDsKQEAgLTY3LDQgKzcwLDI4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxk
UmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVu
IH07CiAgICAgfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgU3Vic3RpdHV0ZURh
dGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9j
b250ZW50IDw8IG1fZmFpbGluZ1VSTCA8PCBtX3Jlc3BvbnNlIDw8IG1fc2hvdWxkUmV2ZWFsVG9T
ZXNzaW9uSGlzdG9yeTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgU3Vic3Rp
dHV0ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkK
K3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9jb250ZW50KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fZmFpbGluZ1VSTCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5t
X3Jlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLm1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0xMi0wNiAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRl
cmluZyB0byBOZXR3b3JraW5nIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3
MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
V2l0aFJlZGlyZWN0UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJs
b2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50Rmls
dGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0
Lnhjc2NoZW1lOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVy
RGlkQmxvY2tMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluOgorCiAyMDIxLTEyLTA3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CiAKICAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGlu
ZwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw2ICs2NywxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0NvbnZlcnRlci5oPgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg+CisjZW5kaWYKKwogI2RlZmluZSBMT0FE
RVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtwYWdl
UHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0lZCwgZGVzdGlu
YXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQs
IHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0
KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCksIGlzTWFpblJlc291cmNlKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiks
IGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgTE9BREVSX1JFTEVBU0Vf
TE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBbcGFn
ZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2U9JWQsIGRlc3Rp
bmF0aW9uPSV1LCBpc1N5bmNocm9ub3VzPSVkXSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10
LCB0aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2
NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc01haW5SZXNvdXJjZSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24p
LCBpc1N5bmNocm9ub3VzKCksICMjX19WQV9BUkdTX18pCiAKQEAgLTE4Nyw2ICsxOTIsMTEgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICBBU1NFUlQoIW1fd2FzU3Rh
cnRlZCk7CiAgICAgbV93YXNTdGFydGVkID0gdHJ1ZTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgYXV0byByZXF1ZXN0ID0gUmVzb3Vy
Y2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKKyAgICBzdGFydENvbnRlbnRGaWx0ZXJp
bmcocmVxdWVzdCk7CisjZW5kaWYKKwogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikgewog
ICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3Jp
Z2luYWxSZXF1ZXN0KCkgfSwgdGhpcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMjI1
LDYgKzIzNSwxOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIHN0
YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfSwgRmly
c3RMb2FkOjpZZXMpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRG
aWx0ZXJpbmcoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghaXNNYWluUmVz
b3VyY2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRG
aWx0ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVl
QWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3Vy
Y2UocmVxdWVzdC51cmwoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJyZXRyaWV2ZUNhY2hlRW50cnk6IGlzTWFpbkZyYW1l
TG9hZD0lZCIsIGlzTWFpbkZyYW1lTG9hZCgpKTsKQEAgLTcwNCw2ICs3MjYsMTEgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogewogICAgIExPQURFUl9SRUxFQVNF
X0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIE1JTUVUeXBlPSUi
IFBVQkxJQ19MT0dfU1RSSU5HICIsIGV4cGVjdGVkQ29udGVudExlbmd0aD0lIiBQUklkNjQgIiwg
aGFzQ2FjaGVkRW50cnlGb3JWYWxpZGF0aW9uPSVkLCBoYXNOZXR3b3JrTG9hZENoZWNrZXI9JWQp
IiwgcmVjZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLm1p
bWVUeXBlKCkudXRmOCgpLmRhdGEoKSwgcmVjZWl2ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRM
ZW5ndGgoKSwgISFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uLCAhIW1fbmV0d29ya0xvYWRDaGVj
a2VyKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCisgICAgaWYgKGlzTWFpblJlc291cmNlKCkgJiYgbV9jb250ZW50RmlsdGVyICYmICFtX2Nv
bnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlY2VpdmVkUmVzcG9u
c2UpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25v
cmUpOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkKICAgICAgICAgZGlkUmVj
ZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlY2VpdmVkUmVzcG9uc2UpOwogCkBAIC05MTUsNiAr
OTQyLDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQg
ZGF0YSBzaXplIGZlYXR1cmUuCiAgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0
YSwgLTEpOwogICAgICAgICB9CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgeworICAgICAgICAg
ICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0
ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmls
dGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29y
a0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xMDA0LDYgKzEwMzgsMTEgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaQogICAgIGlmICghbV9maXJzdFJlc3BvbnNl
VVJMLmlzVmFsaWQoKSkKICAgICAgICAgbV9maXJzdFJlc3BvbnNlVVJMID0gcmVkaXJlY3RSZXNw
b25zZS51cmwoKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5j
b250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IHByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBpZiAoIXNlc3Npb25JRCgp
LmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KHJlZGlyZWN0UmVx
dWVzdC51cmwoKSkpIHsKQEAgLTEyNjIsNyArMTMwMSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6YnVmZmVyaW5nVGltCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoKSk7CisgICAgYm9vbCBzaG91bGRGaWx0ZXIgPSBmYWxzZTsKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHNob3VsZEZp
bHRlciA9IG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVy
RGF0YVJlY2VpdmVkKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCk7CisjZW5kaWYKKyAgICBpZiAoIXNob3VsZEZpbHRlcikKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVy
ZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAogICAgIG1fYnVm
ZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVu
Y29kZWREYXRhTGVuZ3RoID0gMDsKQEAgLTEyNzIsNiArMTMxNiwxMSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3Vz
KCkpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVl
QWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCkpCisgICAgICAgIHJl
dHVybjsKKyNlbmRpZgorCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZFJlY2VpdmVEYXRhKHsgYnVmZmVyIH0sIGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKQEAgLTEz
MTgsNiArMTM2NywxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVD
CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZXRyaWV2ZUNhY2hlRW50cnk6Iik7CiAgICAg
YXV0byByZXNwb25zZSA9IGVudHJ5LT5yZXNwb25zZSgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoaXNNYWluUmVzb3VyY2Uo
KSAmJiBtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+cmVzcG9uc2VSZWNlaXZl
ZCgpICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJl
c3BvbnNlKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVzb3Vy
Y2UoKSkKICAgICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlKTsK
IApAQCAtMTM2OCw2ICsxNDIyLDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5k
UmVzdWx0Rm8KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5
OiIpOwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgaWYgKCFlbnRyeS0+c2hh
cmVhYmxlUmVzb3VyY2VIYW5kbGUoKS5pc051bGwoKSkgeworI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCgqZW50cnkt
PmJ1ZmZlcigpLCBlbnRyeS0+YnVmZmVyKCktPnNpemUoKSkpIHsKKyAgICAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1
ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01h
aW5SZXNvdXJjZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNvdXJj
ZShlbnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTM5MSw2ICsxNDUyLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZW5kUmVzdWx0Rm8KICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5RGVjb2RlZFNp
emUgPSAwOwogCiAgICAgc2VuZEJ1ZmZlcigqZW50cnktPmJ1ZmZlcigpLCBlbnRyeS0+YnVmZmVy
KCktPnNpemUoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7CisgICAgICAgIG1fY29udGVudEZp
bHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVy
bCgpKTsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNl
KCk7CisgICAgfQorI2VuZGlmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKIH0KIApAQCAtMTcw
Nyw2ICsxNzc0LDM2IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0FwcEluaXRpYXQK
ICAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKTsKIH0KIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCkpOworfQorCitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZp
bHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fY29u
dGVudEZpbHRlcik7CisgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGVycm9yKTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQ
YWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAg
aWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKKyAgICAgICAgYXV0byYgZXJyb3Ig
PSBtX2NvbnRlbnRGaWx0ZXItPmJsb2NrZWRFcnJvcigpOworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIoZXJyb3IpKTsKKyAgICB9Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRl
ZiBMT0FERVJfUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjg2NTk2KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29u
dGVudEZpbHRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9s
aWN5Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CkBAIC00Myw2
ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTsKK2NsYXNzIENvbnRlbnRGaWx0ZXI7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTcwLDYgKzcyLDkg
QEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyIGZpbmFsCiAgICAgLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlU2VuZGVyCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
Q2xpZW50CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tEaXNhYmxlcgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6Q29udGVudEZpbHRlckNsaWVudAorI2VuZGlm
CiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxheWVkUmVwbHkmJiByZXBseSA9IG51
bGxwdHIpCkBAIC05MCw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
LgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGJvb2wgaXNBbGxv
d2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMpOwogCiAgICAgdm9pZCBzZXRSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UpIHsgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOyB9
CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9CkBAIC0xNTEsNiArMTU2LDExIEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNBcHBJbml0aWF0ZWQoKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNv
dW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPjo6cmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkg
Y29uc3QgZmluYWwgeyBSZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj46OmRlcmVmKCk7
IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9u
b3VzTG9hZERlbGF5ZWRSZXBseSYmKTsKIApAQCAtMTU4LDYgKzE2OCwxNCBAQCBwcml2YXRlOgog
ICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVy
cmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCk7IH0KIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
Ly8gQ29udGVudEZpbHRlckNsaWVudAorICAgIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgc2l6ZV90KSBmaW5hbDsKKyAg
ICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0KSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50
RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJs
b2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOworI2VuZGlmCisK
ICAgICBib29sIGNhblVzZUNhY2hlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNv
bnN0OwogICAgIGJvb2wgY2FuVXNlQ2FjaGVkUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3Q7CiAKQEAgLTIxNiw2ICsyMzQsMTAgQEAgcHJpdmF0ZToKIAogICAg
IFJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbygpOwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIHN0YXJ0Q29udGVu
dEZpbHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgorCiAgICAgY29u
c3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogCiAgICAgUmVm
PE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CkBAIC0yNTksNiAr
MjgxLDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3JlZGly
ZWN0UmVzcG9uc2U7CiAgICAgVVJMIG1fZmlyc3RSZXNwb25zZVVSTDsgLy8gRmlyc3QgVVJMIGlu
IHJlc3BvbnNlJ3MgVVJMIGxpc3QgKGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25j
ZXB0LXJlc3BvbnNlLXVybC1saXN0KS4KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IG1fY3VycmVudENvb3BFbmZvcmNl
bWVudFJlc3VsdDsKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI+IG1f
Y29udGVudEZpbHRlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw2
ICszMjIsMjkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cgogfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChj
b25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICBpZiAoIW1fY29y
ZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1
cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50Rmls
dGVyRGlkQmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQpKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KS0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vi
c3RpdHV0ZURhdGEpCit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+
ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50
RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURh
dGEpOworfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgV0VCUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjg2NTk2KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJz
dGl0dXRlRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCkBAIC00Miw2ICs0Myw3IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CkBAIC05Myw2ICs5NSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQpOworICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
IGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CisjZW5kaWYKKyAgICAKICAgICBSZWZQ
dHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fY29yZUxvYWRlcjsKICAgICBUcmFja2luZ1Bh
cmFtZXRlcnMgbV90cmFja2luZ1BhcmFtZXRlcnM7CiAgICAgV2ViUmVzb3VyY2VJbnRlcmNlcHRD
b250cm9sbGVyIG1faW50ZXJjZXB0Q29udHJvbGxlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MzcsNCArMzcsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZQog
ICAgIC8vIERpZFJlY2VpdmVSZXNvdXJjZSBpcyBmb3Igd2hlbiB3ZSBoYXZlIHRoZSBlbnRpcmUg
cmVzb3VyY2UgZGF0YSBhdmFpbGFibGUgYXQgb25jZSwgc3VjaCBhcyB3aGVuIHRoZSByZXNvdXJj
ZSBpcyBjYWNoZWQgaW4gbWVtb3J5CiAgICAgRGlkUmVjZWl2ZVJlc291cmNlKFdlYktpdDo6U2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSByZXNvdXJjZSkKICNlbmRpZgorCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBDb250ZW50RmlsdGVy
RGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2Nr
SGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQorICAgIENhbmNlbE1h
aW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IpCisgICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKFVS
TCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEp
CisjZW5kaWYKKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446188</attachid>
            <date>2021-12-07 09:31:07 -0800</date>
            <delta_ts>2021-12-07 10:49:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211207183104.patch</filename>
            <type>text/plain</type>
            <size>49975</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMTItMDYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI4NjUwNyk6IFttYWNPU10gTWFueSBm
aWxlIHN5c3RlbSBhY2Nlc3MgbGF5b3V0IHRlc3RzIGJlY2FtZSBmbGFreSBmYWlsdXJlcwpJbmRl
eDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2NTk2KQorKysg
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjMsNiArMTYzLDEyIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5k
aWYKIAorI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEyMDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDE2MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9T
KSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSkKKyNkZWZpbmUg
RU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUyBFTkFCTEVfQ09O
VEVOVF9GSUxURVJJTkcKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFWFRfTUVO
VVMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVT
IDAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMTIt
MDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
Y29udGVudCBmaWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg2MTUwNzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Zm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlckJ1ZmZlcnMpOgorICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGV0YWNoRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dGFydExvYWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmNsZWFyTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQ
cm92aXNpb25hbExvYWQpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRp
b25Qb2xpY3kpOgorCiAyMDIxLTEyLTA3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21w
b3NpdGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzI1LDcgKzMz
MjUsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1bi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOUUx
ODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYzQTYg
LyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8qIFdlYkNv
cmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNl
c3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9OwotCQlBMTQ5
Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8q
IENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzExQUJBRjNB
NTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBs
YXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QkIwOUUx
Rjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2MUU2OEY3
QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJh
Y2suaCAqLzsgfTsKQEAgLTMzNTE1LDEwICszMzUxNSwxMiBAQAogCQkJCUNEM0VFRjNDMjU3OTlG
QUIwMDY1NjNCQiAvKiBDb2xvckdhbXV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAzQjdERjFE
QjAxNTY3MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RC
NDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDM0EwMEM4Mjc1NDQ5NkQwMDQ3QzBFNSAvKiBDb2xvckludGVycG9sYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNEEyM0VDMjVFQzE2MDIwMEFBQzYzMCAvKiBDb2xvckx1bWluYW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFj
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0FDNkFFOTI0N0YwODJGMDBFNjFENTkgLyogQ29sb3JN
YXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTAxMzdDMjVDMzYyNEIwMERDNzczQyAvKiBD
b2xvck1vZGVscy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNCMkY4OEUyNzVCRUU1ODAwNzIzMUJG
IC8qIENvbG9yTm9ybWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMUU2OTMyNEFC
RjYyNDAwODlDNDE5IC8qIENvbG9yU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM4MkRGNTgxMEE4RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzYyNDQsNyArMzYyNDYsNiBAQAogCQkJCTQ5RDVEQzJFMEY0MjNBNzMwMDhGMjBG
RCAvKiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUQyQzgyQjcyMzZBM0Y2QTAwNTVENkM1IC8qIFBpY3R1cmVJblBp
Y3R1cmVTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzNBMDBDODI3NTQ0OTZEMDA0N0Mw
RTUgLyogQ29sb3JJbnRlcnBvbGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDJGOEUwNjIz
NDQ3NTIzMDA5OTNCNjggLyogUGljdHVyZUluUGljdHVyZVdpbmRvdy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTc1ODU5N0MyM0ExRkNGMzAwQzc0NTcyIC8qIFBpbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDBGRjJBNUUxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMzY2NjksNyArMzY2NzAsNiBAQAogCQkJCTQxODhENTYzMjZDNTUxQjEwMDQ4NThDOCAv
KiBSVENEdGxzVHJhbnNwb3J0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTIwMTdE
MTREMUMwMDQyMEFBMSAvKiBSVENEVE1GU2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhF
MDkyMTE3RDE0RDFDMDA0MjBBQTEgLyogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQkNCMkY4OEUyNzVCRUU1ODAwNzIzMUJGIC8qIENvbG9yTm9ybWFsaXphdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFNkQ3MUIyNkVBMUE0NjAwQjc2NUQ2IC8qIFJUQ0Vy
cm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCOTc5NTI2RTc1QTJFMDA3QzBGRTYgLyogUlRD
RXJyb3JEZXRhaWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkyMzE3RDE0RDFDMDA0
MjBBQTEgLyogUlRDSWNlQ2FuZGlkYXRlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDYgKzExMywxOCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAg
ICAgcmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRG
aWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhDb250ZW50Rmls
dGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNl
IGF0IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUg
PSBTdGF0ZTo6RmlsdGVyaW5nOworICAgIEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5
KCkpOworICAgIG1fbWFpblJlc291cmNlVVJMID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVu
dEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJl
c291cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEy
ICsxMzUsMTcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAg
IEFTU0VSVCghbV9tYWluUmVzb3VyY2UpOwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNl
OwogfQorI2VuZGlmCiAKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNv
dXJjZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fbWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxz
ZQogICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQpAQCAtMTQyLDE0ICsxNTksMzEgQEAgYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyUmVzcG9ucwogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBtX3Jlc3Bv
bnNlUmVjZWl2ZWQgPSB0cnVlOworCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2Nr
ZWQ7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCisjZWxzZQog
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCisjZW5kaWYKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNs
aWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpGaWx0ZXJpbmcpIHsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRG
aWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZW5jb2RlZERh
dGFMZW5ndGgsIG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2J1ZmZlciA9IFJlZiB7IGJ1
ZmZlciB9XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAg
ICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpIHsK
KyAgICAgICAgICAgIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIGRl
bGl2ZXJSZXNvdXJjZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgbV9idWZmZXJzLmFwcGVuZChSZXNvdXJjZURhdGFJdGVtIHsgUmVm
UHRyIHsgJmJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKKyNlbHNlCiAgICAgICAgIExP
RyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBk
YXRhIGZyb20gPCVzPi5cbiIsIGxlbmd0aCwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQoW2RhdGEsIGxlbmd0aF0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7
CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKQEAgLTE1
NywyOSArMTkxLDQ1IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWMK
IAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkKICAgICAgICAgICAgIGRl
bGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNlbmRpZgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7
CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3Qg
VVJMJiByZXNvdXJjZVVSTCkKKyNlbHNlCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwog
ICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9
OwotCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNv
dXJjZVVSTCk7CisjZWxzZQorICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlLT5lcnJvck9jY3VycmVk
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6RmlsdGVyaW5nKSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50Rmls
dGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBtX21h
aW5SZXNvdXJjZVVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisjZWxzZQogICAgICAgICBM
T0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5n
IG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSk7CisjZW5kaWYKICAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJV
bnRpbEJsb2NrZWQoW10oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CiAg
ICAgICAgICAgICBjb250ZW50RmlsdGVyLmZpbmlzaGVkQWRkaW5nRGF0YSgpOwogICAgICAgICB9
KTsKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkgewogICAgICAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3Vy
Y2VEYXRhKCk7CisjZWxzZQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWlu
UmVzb3VyY2UpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6U3RvcHBlZCkKQEAgLTIxOSw3ICsyNjksMTIgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpk
aWREZWNpZGUoU3RhdGUgc3RhdAogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpBbGxvd2Vk
KTsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCk7CiAgICAgQVNTRVJUKHN0
YXRlID09IFN0YXRlOjpBbGxvd2VkIHx8IHN0YXRlID09IFN0YXRlOjpCbG9ja2VkKTsKLSAgICBM
T0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBi
ZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93
ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpIDogIiIpOworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcgPSBtX21haW5SZXNvdXJjZVVSTC5zdHJpbmcoKTsKKyNlbHNlCisgICAgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcgPSBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwo
KS5zdHJpbmcoKSA6IGVtcHR5U3RyaW5nKCk7CisjZW5kaWYKKyAgICBMT0coQ29udGVudEZpbHRl
cmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3IgbWFpbiBy
ZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAiYWxsb3dlZCIg
OiAiYmxvY2tlZCIsIHVybFN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CiAgICAgbV9zdGF0ZSA9IHN0
YXRlOwogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICByZXR1cm47
CkBAIC0yMjgsMTIgKzI4MywyMCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0
ZSBzdGF0CiAgICAgbV9jbGllbnQuY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIobV9ibG9ja2VkRXJyb3IpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3Ro
KQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6QWxsb3dlZCk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihi
dWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbHNlCiAgICAgQVNTRVJUKHJlc291cmNlLmRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
ICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigp
KQogICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNv
dXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyNlbmRpZgogfQog
CiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBAIC0yNDUsNiArMzA4LDcgQEAg
c3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQogICAgIHJldHVybiBibG9ja2VkUGFn
ZVVSTDsKIH0KIAorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFS
ZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1
dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBpZiAoYXV0byBjb250ZW50RmlsdGVyID0g
YWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpAQCAtMjU5LDYgKzMyMyw3IEBAIGJvb2wg
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXQKIAogICAgIHJldHVybiB0cnVlOwog
fQorI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGNvbnN0CiB7CkBAIC0yODMsNiAr
MzQ4LDE1IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2EKICAgICBt
X2NsaWVudC5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxv
Y2tlZFBhZ2VVUkwoKSwgc3Vic3RpdHV0ZURhdGEpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVs
aXZlclN0b3JlZFJlc291cmNlRGF0YSgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fYnVmZmVycy5zaXplKCk7IGkrKykKKyAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9i
dWZmZXJzW2ldLmJ1ZmZlciwgbV9idWZmZXJzW2ldLmVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBt
X2J1ZmZlcnMuY2xlYXIoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDIzICs1MCwzNiBA
QCBjbGFzcyBDb250ZW50RmlsdGVyIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RhdGljIHZvaWQgYWRkVHlwZSgpIHsgdHlwZXMoKS5hcHBlbmQodHlwZTxUPigpKTsgfQog
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVu
dEZpbHRlckNsaWVudCYpOwotICAgIH5Db250ZW50RmlsdGVyKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZp
bHRlckNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5Db250ZW50RmlsdGVyKCk7CiAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogdXJsU2NoZW1lKCkgeyByZXR1cm4gIngtYXBwbGUtY29udGVu
dC1maWx0ZXIiOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoY29uc3QgVVJMJik7CisjZWxzZQogICAgIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmKTsKLSAgICB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoKTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEZpbHRlcmluZ01h
aW5SZXNvdXJjZSgpOwogCi0gICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRp
bnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVS
TCk7CisjZWxzZQogICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYpOworI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51
ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVM
b2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAgICAgYm9vbCB3aWxsSGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7Ci0gICAgdm9pZCBo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogCisgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgYmxvY2tlZEVycm9yKCkg
Y29uc3QgeyByZXR1cm4gbV9ibG9ja2VkRXJyb3I7IH0KKyAgICBib29sIGlzQWxsb3dlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQ7IH0KKyAgICBib29sIHJlc3Bv
bnNlUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlUmVjZWl2ZWQ7IH0KKyAgICAK
IHByaXZhdGU6CiAgICAgdXNpbmcgU3RhdGUgPSBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI6OlN0YXRl
OwogCkBAIC04MiwxNSArOTUsMzEgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdGlvbj4gdm9pZCBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChGdW5jdGlv
biYmKTsKICAgICB2b2lkIGRpZERlY2lkZShTdGF0ZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2
b2lkIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKTsKKyNlbHNlCiAgICAgdm9pZCBkZWxpdmVy
UmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJik7Ci0KKyNlbmRpZgorICAgIAogICAgIENvbnRh
aW5lciBtX2NvbnRlbnRGaWx0ZXJzOwogICAgIENvbnRlbnRGaWx0ZXJDbGllbnQmIG1fY2xpZW50
OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgVVJMIG1fbWFpblJlc291cmNlVVJMOworICAgIHN0cnVjdCBSZXNvdXJjZURhdGFJdGVtIHsK
KyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBzaXpl
X3QgZW5jb2RlZERhdGFMZW5ndGg7CisgICAgfTsKKyAgICAKKyAgICBWZWN0b3I8UmVzb3VyY2VE
YXRhSXRlbT4gbV9idWZmZXJzOworI2Vsc2UKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7CisjZW5kaWYKICAgICBjb25zdCBQbGF0Zm9y
bUNvbnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdDb250ZW50RmlsdGVyIHsgbnVsbHB0ciB9OwogICAg
IFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3RvcHBlZCB9OwogICAgIFJlc291cmNlRXJyb3IgbV9i
bG9ja2VkRXJyb3I7CiAgICAgYm9vbCBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlIHsgZmFsc2UgfTsK
KyAgICBib29sIG1fcmVzcG9uc2VSZWNlaXZlZCB7IGZhbHNlIH07CiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJD
bGllbnQuaAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0
YTsKIAogY2xhc3MgQ29udGVudEZpbHRlckNsaWVudCB7CkBAIC00MSw3ICs0MiwxMSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWYoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4
X3QqLCBpbnQpID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50
RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4
NjU5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyMCw3ICs0MjAsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRp
bmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAg
ICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEwLDcgKzcxMCw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RG
TW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5l
d1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTA4LDcgKzkwOCw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJ
bmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5k
bGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRl
bnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2
ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjQsNyArMTMyNCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
CiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51
ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybjsKICNlbmRp
ZgpAQCAtMTQ1Miw3ICsxNDUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZy
YW1lKCkKICAgICBzdG9wTG9hZGluZygpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21h
aW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJl
bW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9j
b250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIw
MTQsNyArMjAxNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0
aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxs
cHRyOwogI2VuZGlmCiAKQEAgLTIyMTYsNyArMjIxNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNsZWFyTWFpblJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlm
IChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAg
ICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29u
dGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJl
c291cmNlKCk7CiAjZW5kaWYKQEAgLTIzNDcsNyArMjM0Nyw3IEBAIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFp
blJlc291cmNlQ2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJj
ZSk7CiAjZW5kaWYKQEAgLTI0MDQsNyArMjQwNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVu
cXVldWVTZWN1cml0eVBvbGkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJp
dHlQb2xpY3lWaW9sYXRpb25FdmVudChXVEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CkBA
IC0yNDE1LDEyICsyNDE1LDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNv
dXJjZUwKICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAorUmVzb3VyY2VF
cnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQpCit7CisgICAgcmV0dXJuIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJs
b2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCiB2
b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmIHN1YnN0
aXR1dGVEYXRhKQogewogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgq
ZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CisjZW5kaWYgLy8g
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKIAotUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29u
dGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29u
dGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7CiAgICAgdW5ibG9j
a0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewpAQCAtMjQzMCw4
ICsyNDM3LDQwIEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWwKICAg
ICAgICAgfSk7CiAgICAgfQogICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwotICAgIHJldHVybiBmcmFt
ZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCgpKTsKKyAgICBh
dXRvIGVycm9yID0gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJl
cXVlc3QoKSk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciA9IHRydWU7CisgICAgbV9ibG9j
a2VkRXJyb3IgPSBlcnJvcjsKKyNlbmRpZgorCisgICAgcmV0dXJuIGVycm9yOworfQorCit2b2lk
IERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3Rp
dHV0ZURhdGEpCit7CisgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpm
cmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KKworYm9vbCBEb2N1
bWVudExvYWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVu
dEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUo
KSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKKyNlbHNlCisg
ICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyNlbmRpZgorfQorCit2b2lkIERvY3VtZW50
TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisjZWxzZQorICAg
IGlmIChtX2NvbnRlbnRGaWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisjZW5kaWYKK30KKwogI2VuZGlmIC8vIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QWN0aXZlQ29u
dGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxT
dHJpbmc+PiYgcGF0dGVybnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBjbGFzcyBEb2N1bWVu
dExvYWRlcgogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBw
dWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3Vy
aXR5UG9saWN5Q2xpZW50Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVudAogI2VuZGlm
CiAgICAgLCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTM4NiwxMCArMzg2
LDE0IEBAIHB1YmxpYzoKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgIENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnRGaWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZp
bmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJl
ZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0K
ICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZp
bHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29u
dGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25M
b2FkaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmKTsKQEAgLTQzNCw2ICs0MzgsMTEgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZDsgfQogICAgIHZvaWQgc2V0SXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2Fk
U3RhcnRlZChib29sIGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQp
IHsgbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkID0gaXNDb250
aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZDsgfQogCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorICAgIGJvb2wgY29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGNvbnRlbnRG
aWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
KyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKIApAQCAtNDg2
LDcgKzQ5NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAv
LyBDb250ZW50RmlsdGVyQ2xpZW50CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KSBmaW5hbDsKQEAgLTYzOCw3ICs2NDcsMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRl
cj4gbV9jb250ZW50RmlsdGVyOworI2Vsc2UKKyAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZp
bHRlciB7IGZhbHNlIH07CisgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKKyNlbmRp
ZgogI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1OCw3ICsyNDU4LDYgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAgIG1fcHJvdmlzaW9u
YWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLnVy
bCgpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGF1dG8gY29udGVudEZp
bHRlciA9IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlcigpOwogICAgIGF1
dG8gY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcgPSBmYWxzZTsKICNlbmRpZgogCkBA
IC0yNDY2LDcgKzI0NjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92
aXNpCiAgICAgaWYgKGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSkKICAgICAgICAgd2lsbENv
bnRpbnVlTG9hZGluZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKGNvbnRlbnRGaWx0ZXIgJiYgY29udGVudEZpbHRlci0+
d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKSB7CisgICAgaWYgKHByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGVycm9yKSkgewogICAgICAgICB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENv
bnRpbnVlTG9hZGluZzo6WWVzOwogICAgICAgICBjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9h
ZGluZyA9IHRydWU7CiAgICAgfQpAQCAtMjQ3Niw3ICsyNDc1LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQogICAgIGlmIChjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZykKLSAgICAgICAgY29u
dGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAg
IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUoZXJyb3IpOwogI2VuZGlmCiAKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9y
QmVpbmdIYW5kbGVkVVJMID0geyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmNwcAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVE
YXRhID0gbG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkgJiYgIXN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IHRydWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChhdXRvIGxvYWRl
ciA9IG1fZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAg
IHNob3VsZENvbnRpbnVlID0gQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVE
YXRhUmVxdWVzdCgqbG9hZGVyLCBzdWJzdGl0dXRlRGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
NyArNTksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgp
OyB9CiAgICAgICAgIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFp
bGluZ1VSTDsgfQogICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICAgICAgCisKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBTdWJzdGl0dXRlRGF0YSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwpA
QCAtNjcsNCArNzAsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTZXNzaW9uSGlz
dG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgordm9pZCBTdWJzdGl0dXRlRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX2NvbnRlbnQgPDwgbV9mYWlsaW5nVVJMIDw8IG1fcmVzcG9u
c2UgPDwgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5OworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorYm9vbCBTdWJzdGl0dXRlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5t
X2NvbnRlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEubV9mYWlsaW5nVVJMKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhLm1fcmVzcG9uc2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9zaG91bGRSZXZlYWxUb1Nlc3Npb25I
aXN0b3J5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODY1OTYpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDIxLTEyLTA2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2oveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNzY2hlbWU6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTItMDcgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3Vw
cG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODY1
OTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9QcmV2aWV3Q29udmVydGVyLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50Rmls
dGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4K
KyNlbmRpZgorCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9M
T0coTmV0d29yaywgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIg
UFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlPSVkLCBkZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29y
a1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50
NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVy
cy5vcHRpb25zLmRlc3RpbmF0aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQog
I2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VS
Uk9SKE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUlu
dDY0KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRl
cnMub3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykK
IApAQCAtMTg3LDYgKzE5MiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQo
KQogICAgIEFTU0VSVCghbV93YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwog
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBhdXRvIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9Owor
ICAgIHN0YXJ0Q29udGVudEZpbHRlcmluZyhyZXF1ZXN0KTsKKyNlbmRpZgorCiAgICAgaWYgKG1f
bmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVj
ayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCB0aGlzLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCkBAIC0yMjUsNiArMjM1LDE4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydCgpCiAgICAgc3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBv
cmlnaW5hbFJlcXVlc3QoKSB9LCBGaXJzdExvYWQ6Olllcyk7CiB9CiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9j
b250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBpZiAoIW1f
Y29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBSZXNv
dXJjZVJlc3BvbnNlKCkpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZW50RmlsdGVyLT5z
dGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShyZXF1ZXN0LnVybCgpKTsKK30KKyNlbmRpZgorCiB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInJldHJpZXZl
Q2FjaGVFbnRyeTogaXNNYWluRnJhbWVMb2FkPSVkIiwgaXNNYWluRnJhbWVMb2FkKCkpOwpAQCAt
NzA0LDYgKzcyNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
CiB7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChodHRwU3Rh
dHVzQ29kZT0lZCwgTUlNRVR5cGU9JSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoPSUiIFBSSWQ2NCAiLCBoYXNDYWNoZWRFbnRyeUZvclZhbGlkYXRpb249JWQsIGhh
c05ldHdvcmtMb2FkQ2hlY2tlcj0lZCkiLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCksIHJlY2VpdmVkUmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpLCByZWNlaXZlZFJl
c3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCAhIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24sICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSAmJiBt
X2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNl
UmVjZWl2ZWQocmVjZWl2ZWRSZXNwb25zZSkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisjZW5kaWYKKwogICAgIGlmIChpc01haW5SZXNv
dXJjZSgpKQogICAgICAgICBkaWRSZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVjZWl2ZWRS
ZXNwb25zZSk7CiAKQEAgLTkxNSw2ICs5NDIsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYQogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVl
IG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KICAgICAgICAgICAgIHNl
bmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAoaXNNYWlu
UmVzb3VyY2UoKSAmJiBtX2NvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVy
bCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNv
dXJjZSgpOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykp
OwogICAgIH0KIApAQCAtMTAwNCw2ICsxMDM4LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlZGkKICAgICBpZiAoIW1fZmlyc3RSZXNwb25zZVVSTC5pc1ZhbGlkKCkp
CiAgICAgICAgIG1fZmlyc3RSZXNwb25zZVVSTCA9IHJlZGlyZWN0UmVzcG9uc2UudXJsKCk7CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IGlmIChpc01haW5SZXNvdXJjZSgpICYmIG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50Rmls
dGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IHByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBpZiAoIXNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KHJlZGly
ZWN0UmVxdWVzdC51cmwoKSkpIHsKQEAgLTEyNjIsNyArMTMwMSwxMiBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgYm9vbCBzaG91bGRGaWx0ZXIgPSBmYWxzZTsKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHNo
b3VsZEZpbHRlciA9IGlzTWFpblJlc291cmNlKCkgJiYgbV9jb250ZW50RmlsdGVyICYmICFtX2Nv
bnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoKm1fYnVmZmVyZWREYXRhLmdl
dCgpLCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbmRpZgorICAgIGlmICgh
c2hvdWxkRmlsdGVyKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCkpOwogCiAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwpAQCAtMTI3Miw2
ICsxMzE2LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFMKIHsK
ICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChpc01haW5SZXNvdXJjZSgpICYm
IG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJl
Y2VpdmVkKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpKQorICAgICAgICByZXR1cm47CisjZW5k
aWYKKwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0
YSh7IGJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCkBAIC0xMzE4LDYgKzEzNjcs
MTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQwogICAgIExPQURF
Ul9SRUxFQVNFX0xPRygiZGlkUmV0cmlldmVDYWNoZUVudHJ5OiIpOwogICAgIGF1dG8gcmVzcG9u
c2UgPSBlbnRyeS0+cmVzcG9uc2UoKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKGlzTWFpblJlc291cmNlKCkgJiYgbV9jb250
ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPnJlc3BvbnNlUmVjZWl2ZWQoKSAmJiAhbV9j
b250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSkpCisg
ICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgaWYgKGlzTWFpblJlc291cmNlKCkpCiAgICAg
ICAgIGRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSk7CiAKQEAgLTEzNjgs
NiArMTQyMiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvCiAg
ICAgTE9BREVSX1JFTEVBU0VfTE9HKCJzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeToiKTsKICNpZiBF
TkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIGlmICghZW50cnktPnNoYXJlYWJsZVJlc291
cmNlSGFuZGxlKCkuaXNOdWxsKCkpIHsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSAmJiBtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZCgqZW50cnktPmJ1ZmZlcigpLCBlbnRyeS0+YnVmZmVyKCktPnNpemUoKSkpIHsKKyAgICAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZp
bHRlcmluZ01haW5SZXNvdXJjZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisj
ZW5kaWYKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2Vp
dmVSZXNvdXJjZShlbnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTM5MSw2ICsxNDUyLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5
RGVjb2RlZFNpemUgPSAwOwogCiAgICAgc2VuZEJ1ZmZlcigqZW50cnktPmJ1ZmZlcigpLCBlbnRy
eS0+YnVmZmVyKCktPnNpemUoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSAmJiBtX2NvbnRlbnRG
aWx0ZXIpIHsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5Rmlu
aXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0
ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyAgICB9CisjZW5kaWYKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdv
cmtMb2FkTWV0cmljcykpOwogfQogCkBAIC0xNzA3LDYgKzE3NzQsMzYgQEAgYm9vbCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmlzQXBwSW5pdGlhdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVx
dWVzdC5pc0FwcEluaXRpYXRlZCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKSk7Cit9
CisKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50
RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxv
Y2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICByZXR1
cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVl
c3QpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKKyAgICBtX2NvbnRlbnRG
aWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworfQorCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
KQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0
dXRlRGF0YSkpOworICAgIGVsc2UgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRG
aWx0ZXIpOworICAgICAgICBhdXRvJiBlcnJvciA9IG1fY29udGVudEZpbHRlci0+YmxvY2tlZEVy
cm9yKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5jZWxN
YWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihlcnJvcikpOworICAgIH0KK30KKyNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIExPQURFUl9SRUxFQVNFX0xPRwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTQzLDYgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOworY2xhc3MgQ29udGVudEZpbHRlcjsK
IGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwpAQCAtNzAsNiArNzIsOSBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIgZmluYWwKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpDb250ZW50RmlsdGVyQ2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE5ldHdv
cmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3Vz
TG9hZERlbGF5ZWRSZXBseSYmIHJlcGx5ID0gbnVsbHB0cikKQEAgLTkwLDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29y
a1Jlc291cmNlTG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
IAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7
CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CiAKICAgICB2b2lk
IHNldFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyBtX3Jl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KQEAgLTE1
MSw2ICsxNTYsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpOwogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2
b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+
OjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0
d29ya1Jlc291cmNlTG9hZGVyPjo6ZGVyZWYoKTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAg
TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYpOwogCkBA
IC0xNTgsNiArMTY4LDE0IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIudG9VSW50NjQoKTsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImLCBzaXplX3QpIGZpbmFsOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY29u
dGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwg
U3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOworICAgIHZvaWQgY2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZy
b21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0
aXR1dGVEYXRhJikgZmluYWw7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuVXNlQ2FjaGUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAgICAgYm9vbCBjYW5Vc2VDYWNoZWRS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIApAQCAtMjE2
LDYgKzIzNCwxMCBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxv
YWRJbmZvKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIHZvaWQgc3RhcnRDb250ZW50RmlsdGVyaW5nKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOworI2VuZGlmCisKICAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyBtX3BhcmFtZXRlcnM7CiAKICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M+IG1fY29ubmVjdGlvbjsKQEAgLTI1OSw2ICsyODEsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKICAgICBVUkwgbV9maXJz
dFJlc3BvbnNlVVJMOyAvLyBGaXJzdCBVUkwgaW4gcmVzcG9uc2UncyBVUkwgbGlzdCAoaHR0cHM6
Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVzcG9uc2UtdXJsLWxpc3QpLgogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVu
dFJlc3VsdD4gbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0OworCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOworI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjU5
NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDYgKzMyMiwyOSBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwg
V1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8
fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVy
cm9yKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0
IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoIW1f
Y29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0
dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJl
KGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1YnN0aXR1dGVEYXRhLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQyLDYgKzQzLDcg
QEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmlj
czsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAgLTkzLDYg
Kzk1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgY29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CisgICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0
ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmKTsKKyNlbmRpZgorICAgIAogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4g
bV9jb3JlTG9hZGVyOwogICAgIFRyYWNraW5nUGFyYW1ldGVycyBtX3RyYWNraW5nUGFyYW1ldGVy
czsKICAgICBXZWJSZXNvdXJjZUludGVyY2VwdENvbnRyb2xsZXIgbV9pbnRlcmNlcHRDb250cm9s
bGVyOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NjU5NikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw0ICszNywxMSBAQCBtZXNzYWdlcyAtPiBX
ZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAgICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlz
IGZvciB3aGVuIHdlIGhhdmUgdGhlIGVudGlyZSByZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBv
bmNlLCBzdWNoIGFzIHdoZW4gdGhlIHJlc291cmNlIGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBE
aWRSZWNlaXZlUmVzb3VyY2UoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291
cmNlKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpCisgICAgQ2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSkKKyNlbmRpZgorCiB9Cg==
</data>
<flag name="commit-queue"
          id="471535"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446190</attachid>
            <date>2021-12-07 09:34:41 -0800</date>
            <delta_ts>2021-12-07 11:12:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211207183439.patch</filename>
            <type>text/plain</type>
            <size>49975</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMTItMDYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI4NjUwNyk6IFttYWNPU10gTWFueSBm
aWxlIHN5c3RlbSBhY2Nlc3MgbGF5b3V0IHRlc3RzIGJlY2FtZSBmbGFreSBmYWlsdXJlcwpJbmRl
eDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2NTk2KQorKysg
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjMsNiArMTYzLDEyIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5k
aWYKIAorI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDE2MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9T
KSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSkKKyNkZWZpbmUg
RU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUyBFTkFCTEVfQ09O
VEVOVF9GSUxURVJJTkcKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFWFRfTUVO
VVMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVT
IDAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMTIt
MDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
Y29udGVudCBmaWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg2MTUwNzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Zm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlckJ1ZmZlcnMpOgorICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGV0YWNoRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dGFydExvYWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmNsZWFyTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQ
cm92aXNpb25hbExvYWQpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRp
b25Qb2xpY3kpOgorCiAyMDIxLTEyLTA3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21w
b3NpdGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzI1LDcgKzMz
MjUsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1bi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOUUx
ODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYzQTYg
LyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8qIFdlYkNv
cmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNl
c3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9OwotCQlBMTQ5
Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8q
IENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzExQUJBRjNB
NTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBs
YXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QkIwOUUx
Rjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2MUU2OEY3
QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJh
Y2suaCAqLzsgfTsKQEAgLTMzNTE1LDEwICszMzUxNSwxMiBAQAogCQkJCUNEM0VFRjNDMjU3OTlG
QUIwMDY1NjNCQiAvKiBDb2xvckdhbXV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAzQjdERjFE
QjAxNTY3MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RC
NDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDM0EwMEM4Mjc1NDQ5NkQwMDQ3QzBFNSAvKiBDb2xvckludGVycG9sYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNEEyM0VDMjVFQzE2MDIwMEFBQzYzMCAvKiBDb2xvckx1bWluYW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFj
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0FDNkFFOTI0N0YwODJGMDBFNjFENTkgLyogQ29sb3JN
YXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTAxMzdDMjVDMzYyNEIwMERDNzczQyAvKiBD
b2xvck1vZGVscy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNCMkY4OEUyNzVCRUU1ODAwNzIzMUJG
IC8qIENvbG9yTm9ybWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMUU2OTMyNEFC
RjYyNDAwODlDNDE5IC8qIENvbG9yU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM4MkRGNTgxMEE4RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzYyNDQsNyArMzYyNDYsNiBAQAogCQkJCTQ5RDVEQzJFMEY0MjNBNzMwMDhGMjBG
RCAvKiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUQyQzgyQjcyMzZBM0Y2QTAwNTVENkM1IC8qIFBpY3R1cmVJblBp
Y3R1cmVTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzNBMDBDODI3NTQ0OTZEMDA0N0Mw
RTUgLyogQ29sb3JJbnRlcnBvbGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDJGOEUwNjIz
NDQ3NTIzMDA5OTNCNjggLyogUGljdHVyZUluUGljdHVyZVdpbmRvdy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTc1ODU5N0MyM0ExRkNGMzAwQzc0NTcyIC8qIFBpbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDBGRjJBNUUxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMzY2NjksNyArMzY2NzAsNiBAQAogCQkJCTQxODhENTYzMjZDNTUxQjEwMDQ4NThDOCAv
KiBSVENEdGxzVHJhbnNwb3J0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTIwMTdE
MTREMUMwMDQyMEFBMSAvKiBSVENEVE1GU2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhF
MDkyMTE3RDE0RDFDMDA0MjBBQTEgLyogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQkNCMkY4OEUyNzVCRUU1ODAwNzIzMUJGIC8qIENvbG9yTm9ybWFsaXphdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFNkQ3MUIyNkVBMUE0NjAwQjc2NUQ2IC8qIFJUQ0Vy
cm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCOTc5NTI2RTc1QTJFMDA3QzBGRTYgLyogUlRD
RXJyb3JEZXRhaWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkyMzE3RDE0RDFDMDA0
MjBBQTEgLyogUlRDSWNlQ2FuZGlkYXRlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDYgKzExMywxOCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAg
ICAgcmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRG
aWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhDb250ZW50Rmls
dGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNl
IGF0IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUg
PSBTdGF0ZTo6RmlsdGVyaW5nOworICAgIEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5
KCkpOworICAgIG1fbWFpblJlc291cmNlVVJMID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVu
dEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJl
c291cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEy
ICsxMzUsMTcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAg
IEFTU0VSVCghbV9tYWluUmVzb3VyY2UpOwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNl
OwogfQorI2VuZGlmCiAKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNv
dXJjZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fbWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxz
ZQogICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQpAQCAtMTQyLDE0ICsxNTksMzEgQEAgYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyUmVzcG9ucwogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBtX3Jlc3Bv
bnNlUmVjZWl2ZWQgPSB0cnVlOworCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2Nr
ZWQ7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCisjZWxzZQog
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCisjZW5kaWYKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNs
aWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpGaWx0ZXJpbmcpIHsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRG
aWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZW5jb2RlZERh
dGFMZW5ndGgsIG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2J1ZmZlciA9IFJlZiB7IGJ1
ZmZlciB9XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAg
ICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpIHsK
KyAgICAgICAgICAgIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIGRl
bGl2ZXJSZXNvdXJjZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgbV9idWZmZXJzLmFwcGVuZChSZXNvdXJjZURhdGFJdGVtIHsgUmVm
UHRyIHsgJmJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKKyNlbHNlCiAgICAgICAgIExP
RyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBk
YXRhIGZyb20gPCVzPi5cbiIsIGxlbmd0aCwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQoW2RhdGEsIGxlbmd0aF0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7
CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKQEAgLTE1
NywyOSArMTkxLDQ1IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWMK
IAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkKICAgICAgICAgICAgIGRl
bGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNlbmRpZgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7
CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3Qg
VVJMJiByZXNvdXJjZVVSTCkKKyNlbHNlCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwog
ICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9
OwotCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNv
dXJjZVVSTCk7CisjZWxzZQorICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlLT5lcnJvck9jY3VycmVk
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6RmlsdGVyaW5nKSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50Rmls
dGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBtX21h
aW5SZXNvdXJjZVVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisjZWxzZQogICAgICAgICBM
T0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5n
IG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSk7CisjZW5kaWYKICAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJV
bnRpbEJsb2NrZWQoW10oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CiAg
ICAgICAgICAgICBjb250ZW50RmlsdGVyLmZpbmlzaGVkQWRkaW5nRGF0YSgpOwogICAgICAgICB9
KTsKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkgewogICAgICAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3Vy
Y2VEYXRhKCk7CisjZWxzZQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWlu
UmVzb3VyY2UpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6U3RvcHBlZCkKQEAgLTIxOSw3ICsyNjksMTIgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpk
aWREZWNpZGUoU3RhdGUgc3RhdAogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpBbGxvd2Vk
KTsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCk7CiAgICAgQVNTRVJUKHN0
YXRlID09IFN0YXRlOjpBbGxvd2VkIHx8IHN0YXRlID09IFN0YXRlOjpCbG9ja2VkKTsKLSAgICBM
T0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBi
ZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93
ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpIDogIiIpOworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcgPSBtX21haW5SZXNvdXJjZVVSTC5zdHJpbmcoKTsKKyNlbHNlCisgICAgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcgPSBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwo
KS5zdHJpbmcoKSA6IGVtcHR5U3RyaW5nKCk7CisjZW5kaWYKKyAgICBMT0coQ29udGVudEZpbHRl
cmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3IgbWFpbiBy
ZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAiYWxsb3dlZCIg
OiAiYmxvY2tlZCIsIHVybFN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CiAgICAgbV9zdGF0ZSA9IHN0
YXRlOwogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICByZXR1cm47
CkBAIC0yMjgsMTIgKzI4MywyMCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0
ZSBzdGF0CiAgICAgbV9jbGllbnQuY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIobV9ibG9ja2VkRXJyb3IpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3Ro
KQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6QWxsb3dlZCk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihi
dWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbHNlCiAgICAgQVNTRVJUKHJlc291cmNlLmRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
ICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigp
KQogICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNv
dXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyNlbmRpZgogfQog
CiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBAIC0yNDUsNiArMzA4LDcgQEAg
c3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQogICAgIHJldHVybiBibG9ja2VkUGFn
ZVVSTDsKIH0KIAorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFS
ZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1
dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBpZiAoYXV0byBjb250ZW50RmlsdGVyID0g
YWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpAQCAtMjU5LDYgKzMyMyw3IEBAIGJvb2wg
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXQKIAogICAgIHJldHVybiB0cnVlOwog
fQorI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGNvbnN0CiB7CkBAIC0yODMsNiAr
MzQ4LDE1IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2EKICAgICBt
X2NsaWVudC5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxv
Y2tlZFBhZ2VVUkwoKSwgc3Vic3RpdHV0ZURhdGEpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVs
aXZlclN0b3JlZFJlc291cmNlRGF0YSgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fYnVmZmVycy5zaXplKCk7IGkrKykKKyAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9i
dWZmZXJzW2ldLmJ1ZmZlciwgbV9idWZmZXJzW2ldLmVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBt
X2J1ZmZlcnMuY2xlYXIoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDIzICs1MCwzNiBA
QCBjbGFzcyBDb250ZW50RmlsdGVyIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RhdGljIHZvaWQgYWRkVHlwZSgpIHsgdHlwZXMoKS5hcHBlbmQodHlwZTxUPigpKTsgfQog
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVu
dEZpbHRlckNsaWVudCYpOwotICAgIH5Db250ZW50RmlsdGVyKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZp
bHRlckNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5Db250ZW50RmlsdGVyKCk7CiAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogdXJsU2NoZW1lKCkgeyByZXR1cm4gIngtYXBwbGUtY29udGVu
dC1maWx0ZXIiOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoY29uc3QgVVJMJik7CisjZWxzZQogICAgIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmKTsKLSAgICB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoKTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEZpbHRlcmluZ01h
aW5SZXNvdXJjZSgpOwogCi0gICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRp
bnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVS
TCk7CisjZWxzZQogICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYpOworI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51
ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVM
b2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAgICAgYm9vbCB3aWxsSGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7Ci0gICAgdm9pZCBo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogCisgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgYmxvY2tlZEVycm9yKCkg
Y29uc3QgeyByZXR1cm4gbV9ibG9ja2VkRXJyb3I7IH0KKyAgICBib29sIGlzQWxsb3dlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQ7IH0KKyAgICBib29sIHJlc3Bv
bnNlUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlUmVjZWl2ZWQ7IH0KKyAgICAK
IHByaXZhdGU6CiAgICAgdXNpbmcgU3RhdGUgPSBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI6OlN0YXRl
OwogCkBAIC04MiwxNSArOTUsMzEgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdGlvbj4gdm9pZCBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChGdW5jdGlv
biYmKTsKICAgICB2b2lkIGRpZERlY2lkZShTdGF0ZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2
b2lkIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKTsKKyNlbHNlCiAgICAgdm9pZCBkZWxpdmVy
UmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJik7Ci0KKyNlbmRpZgorICAgIAogICAgIENvbnRh
aW5lciBtX2NvbnRlbnRGaWx0ZXJzOwogICAgIENvbnRlbnRGaWx0ZXJDbGllbnQmIG1fY2xpZW50
OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgVVJMIG1fbWFpblJlc291cmNlVVJMOworICAgIHN0cnVjdCBSZXNvdXJjZURhdGFJdGVtIHsK
KyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBzaXpl
X3QgZW5jb2RlZERhdGFMZW5ndGg7CisgICAgfTsKKyAgICAKKyAgICBWZWN0b3I8UmVzb3VyY2VE
YXRhSXRlbT4gbV9idWZmZXJzOworI2Vsc2UKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7CisjZW5kaWYKICAgICBjb25zdCBQbGF0Zm9y
bUNvbnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdDb250ZW50RmlsdGVyIHsgbnVsbHB0ciB9OwogICAg
IFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3RvcHBlZCB9OwogICAgIFJlc291cmNlRXJyb3IgbV9i
bG9ja2VkRXJyb3I7CiAgICAgYm9vbCBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlIHsgZmFsc2UgfTsK
KyAgICBib29sIG1fcmVzcG9uc2VSZWNlaXZlZCB7IGZhbHNlIH07CiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJD
bGllbnQuaAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0
YTsKIAogY2xhc3MgQ29udGVudEZpbHRlckNsaWVudCB7CkBAIC00MSw3ICs0MiwxMSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWYoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4
X3QqLCBpbnQpID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50
RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4
NjU5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyMCw3ICs0MjAsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRp
bmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAg
ICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEwLDcgKzcxMCw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RG
TW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5l
d1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTA4LDcgKzkwOCw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJ
bmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5k
bGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRl
bnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2
ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjQsNyArMTMyNCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
CiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51
ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybjsKICNlbmRp
ZgpAQCAtMTQ1Miw3ICsxNDUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZy
YW1lKCkKICAgICBzdG9wTG9hZGluZygpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21h
aW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJl
bW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9j
b250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIw
MTQsNyArMjAxNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0
aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxs
cHRyOwogI2VuZGlmCiAKQEAgLTIyMTYsNyArMjIxNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNsZWFyTWFpblJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlm
IChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAg
ICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29u
dGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJl
c291cmNlKCk7CiAjZW5kaWYKQEAgLTIzNDcsNyArMjM0Nyw3IEBAIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFp
blJlc291cmNlQ2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJj
ZSk7CiAjZW5kaWYKQEAgLTI0MDQsNyArMjQwNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVu
cXVldWVTZWN1cml0eVBvbGkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJp
dHlQb2xpY3lWaW9sYXRpb25FdmVudChXVEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CkBA
IC0yNDE1LDEyICsyNDE1LDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNv
dXJjZUwKICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAorUmVzb3VyY2VF
cnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQpCit7CisgICAgcmV0dXJuIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJs
b2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCiB2
b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmIHN1YnN0
aXR1dGVEYXRhKQogewogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgq
ZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CisjZW5kaWYgLy8g
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKIAotUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29u
dGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29u
dGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7CiAgICAgdW5ibG9j
a0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewpAQCAtMjQzMCw4
ICsyNDM3LDQwIEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWwKICAg
ICAgICAgfSk7CiAgICAgfQogICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwotICAgIHJldHVybiBmcmFt
ZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCgpKTsKKyAgICBh
dXRvIGVycm9yID0gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJl
cXVlc3QoKSk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciA9IHRydWU7CisgICAgbV9ibG9j
a2VkRXJyb3IgPSBlcnJvcjsKKyNlbmRpZgorCisgICAgcmV0dXJuIGVycm9yOworfQorCit2b2lk
IERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3Rp
dHV0ZURhdGEpCit7CisgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpm
cmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KKworYm9vbCBEb2N1
bWVudExvYWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVu
dEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUo
KSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKKyNlbHNlCisg
ICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyNlbmRpZgorfQorCit2b2lkIERvY3VtZW50
TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisjZWxzZQorICAg
IGlmIChtX2NvbnRlbnRGaWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisjZW5kaWYKK30KKwogI2VuZGlmIC8vIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QWN0aXZlQ29u
dGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxT
dHJpbmc+PiYgcGF0dGVybnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBjbGFzcyBEb2N1bWVu
dExvYWRlcgogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBw
dWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3Vy
aXR5UG9saWN5Q2xpZW50Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVudAogI2VuZGlm
CiAgICAgLCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTM4NiwxMCArMzg2
LDE0IEBAIHB1YmxpYzoKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgIENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnRGaWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZp
bmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJl
ZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0K
ICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZp
bHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29u
dGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25M
b2FkaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmKTsKQEAgLTQzNCw2ICs0MzgsMTEgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZDsgfQogICAgIHZvaWQgc2V0SXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2Fk
U3RhcnRlZChib29sIGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQp
IHsgbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkID0gaXNDb250
aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZDsgfQogCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorICAgIGJvb2wgY29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGNvbnRlbnRG
aWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
KyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKIApAQCAtNDg2
LDcgKzQ5NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAv
LyBDb250ZW50RmlsdGVyQ2xpZW50CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KSBmaW5hbDsKQEAgLTYzOCw3ICs2NDcsMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRl
cj4gbV9jb250ZW50RmlsdGVyOworI2Vsc2UKKyAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZp
bHRlciB7IGZhbHNlIH07CisgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKKyNlbmRp
ZgogI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1OCw3ICsyNDU4LDYgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAgIG1fcHJvdmlzaW9u
YWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLnVy
bCgpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGF1dG8gY29udGVudEZp
bHRlciA9IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlcigpOwogICAgIGF1
dG8gY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcgPSBmYWxzZTsKICNlbmRpZgogCkBA
IC0yNDY2LDcgKzI0NjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92
aXNpCiAgICAgaWYgKGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSkKICAgICAgICAgd2lsbENv
bnRpbnVlTG9hZGluZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKGNvbnRlbnRGaWx0ZXIgJiYgY29udGVudEZpbHRlci0+
d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKSB7CisgICAgaWYgKHByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGVycm9yKSkgewogICAgICAgICB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENv
bnRpbnVlTG9hZGluZzo6WWVzOwogICAgICAgICBjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9h
ZGluZyA9IHRydWU7CiAgICAgfQpAQCAtMjQ3Niw3ICsyNDc1LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQogICAgIGlmIChjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZykKLSAgICAgICAgY29u
dGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAg
IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUoZXJyb3IpOwogI2VuZGlmCiAKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9y
QmVpbmdIYW5kbGVkVVJMID0geyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmNwcAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVE
YXRhID0gbG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkgJiYgIXN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IHRydWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChhdXRvIGxvYWRl
ciA9IG1fZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAg
IHNob3VsZENvbnRpbnVlID0gQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVE
YXRhUmVxdWVzdCgqbG9hZGVyLCBzdWJzdGl0dXRlRGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
NyArNTksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgp
OyB9CiAgICAgICAgIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFp
bGluZ1VSTDsgfQogICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICAgICAgCisKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBTdWJzdGl0dXRlRGF0YSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwpA
QCAtNjcsNCArNzAsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTZXNzaW9uSGlz
dG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgordm9pZCBTdWJzdGl0dXRlRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX2NvbnRlbnQgPDwgbV9mYWlsaW5nVVJMIDw8IG1fcmVzcG9u
c2UgPDwgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5OworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorYm9vbCBTdWJzdGl0dXRlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5t
X2NvbnRlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEubV9mYWlsaW5nVVJMKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhLm1fcmVzcG9uc2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9zaG91bGRSZXZlYWxUb1Nlc3Npb25I
aXN0b3J5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODY1OTYpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDIxLTEyLTA2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2oveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNzY2hlbWU6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTItMDcgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3Vw
cG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODY1
OTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9QcmV2aWV3Q29udmVydGVyLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50Rmls
dGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4K
KyNlbmRpZgorCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9M
T0coTmV0d29yaywgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIg
UFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlPSVkLCBkZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29y
a1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50
NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVy
cy5vcHRpb25zLmRlc3RpbmF0aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQog
I2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VS
Uk9SKE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUlu
dDY0KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRl
cnMub3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykK
IApAQCAtMTg3LDYgKzE5MiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQo
KQogICAgIEFTU0VSVCghbV93YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwog
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBhdXRvIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9Owor
ICAgIHN0YXJ0Q29udGVudEZpbHRlcmluZyhyZXF1ZXN0KTsKKyNlbmRpZgorCiAgICAgaWYgKG1f
bmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVj
ayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCB0aGlzLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCkBAIC0yMjUsNiArMjM1LDE4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydCgpCiAgICAgc3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBv
cmlnaW5hbFJlcXVlc3QoKSB9LCBGaXJzdExvYWQ6Olllcyk7CiB9CiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9j
b250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBpZiAoIW1f
Y29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBSZXNv
dXJjZVJlc3BvbnNlKCkpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZW50RmlsdGVyLT5z
dGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShyZXF1ZXN0LnVybCgpKTsKK30KKyNlbmRpZgorCiB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInJldHJpZXZl
Q2FjaGVFbnRyeTogaXNNYWluRnJhbWVMb2FkPSVkIiwgaXNNYWluRnJhbWVMb2FkKCkpOwpAQCAt
NzA0LDYgKzcyNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
CiB7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChodHRwU3Rh
dHVzQ29kZT0lZCwgTUlNRVR5cGU9JSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoPSUiIFBSSWQ2NCAiLCBoYXNDYWNoZWRFbnRyeUZvclZhbGlkYXRpb249JWQsIGhh
c05ldHdvcmtMb2FkQ2hlY2tlcj0lZCkiLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCksIHJlY2VpdmVkUmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpLCByZWNlaXZlZFJl
c3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCAhIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24sICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSAmJiBt
X2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNl
UmVjZWl2ZWQocmVjZWl2ZWRSZXNwb25zZSkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisjZW5kaWYKKwogICAgIGlmIChpc01haW5SZXNv
dXJjZSgpKQogICAgICAgICBkaWRSZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVjZWl2ZWRS
ZXNwb25zZSk7CiAKQEAgLTkxNSw2ICs5NDIsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYQogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVl
IG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KICAgICAgICAgICAgIHNl
bmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAoaXNNYWlu
UmVzb3VyY2UoKSAmJiBtX2NvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVy
bCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNv
dXJjZSgpOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykp
OwogICAgIH0KIApAQCAtMTAwNCw2ICsxMDM4LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlZGkKICAgICBpZiAoIW1fZmlyc3RSZXNwb25zZVVSTC5pc1ZhbGlkKCkp
CiAgICAgICAgIG1fZmlyc3RSZXNwb25zZVVSTCA9IHJlZGlyZWN0UmVzcG9uc2UudXJsKCk7CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IGlmIChpc01haW5SZXNvdXJjZSgpICYmIG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50Rmls
dGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IHByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBpZiAoIXNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KHJlZGly
ZWN0UmVxdWVzdC51cmwoKSkpIHsKQEAgLTEyNjIsNyArMTMwMSwxMiBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgYm9vbCBzaG91bGRGaWx0ZXIgPSBmYWxzZTsKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHNo
b3VsZEZpbHRlciA9IGlzTWFpblJlc291cmNlKCkgJiYgbV9jb250ZW50RmlsdGVyICYmICFtX2Nv
bnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoKm1fYnVmZmVyZWREYXRhLmdl
dCgpLCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbmRpZgorICAgIGlmICgh
c2hvdWxkRmlsdGVyKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCkpOwogCiAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwpAQCAtMTI3Miw2
ICsxMzE2LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFMKIHsK
ICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChpc01haW5SZXNvdXJjZSgpICYm
IG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJl
Y2VpdmVkKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpKQorICAgICAgICByZXR1cm47CisjZW5k
aWYKKwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0
YSh7IGJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCkBAIC0xMzE4LDYgKzEzNjcs
MTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQwogICAgIExPQURF
Ul9SRUxFQVNFX0xPRygiZGlkUmV0cmlldmVDYWNoZUVudHJ5OiIpOwogICAgIGF1dG8gcmVzcG9u
c2UgPSBlbnRyeS0+cmVzcG9uc2UoKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKGlzTWFpblJlc291cmNlKCkgJiYgbV9jb250
ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPnJlc3BvbnNlUmVjZWl2ZWQoKSAmJiAhbV9j
b250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSkpCisg
ICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgaWYgKGlzTWFpblJlc291cmNlKCkpCiAgICAg
ICAgIGRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSk7CiAKQEAgLTEzNjgs
NiArMTQyMiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvCiAg
ICAgTE9BREVSX1JFTEVBU0VfTE9HKCJzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeToiKTsKICNpZiBF
TkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIGlmICghZW50cnktPnNoYXJlYWJsZVJlc291
cmNlSGFuZGxlKCkuaXNOdWxsKCkpIHsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSAmJiBtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZCgqZW50cnktPmJ1ZmZlcigpLCBlbnRyeS0+YnVmZmVyKCktPnNpemUoKSkpIHsKKyAgICAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZp
bHRlcmluZ01haW5SZXNvdXJjZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisj
ZW5kaWYKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2Vp
dmVSZXNvdXJjZShlbnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTM5MSw2ICsxNDUyLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5
RGVjb2RlZFNpemUgPSAwOwogCiAgICAgc2VuZEJ1ZmZlcigqZW50cnktPmJ1ZmZlcigpLCBlbnRy
eS0+YnVmZmVyKCktPnNpemUoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSAmJiBtX2NvbnRlbnRG
aWx0ZXIpIHsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5Rmlu
aXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0
ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyAgICB9CisjZW5kaWYKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdv
cmtMb2FkTWV0cmljcykpOwogfQogCkBAIC0xNzA3LDYgKzE3NzQsMzYgQEAgYm9vbCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmlzQXBwSW5pdGlhdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVx
dWVzdC5pc0FwcEluaXRpYXRlZCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKSk7Cit9
CisKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50
RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxv
Y2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICByZXR1
cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVl
c3QpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKKyAgICBtX2NvbnRlbnRG
aWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworfQorCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
KQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0
dXRlRGF0YSkpOworICAgIGVsc2UgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRG
aWx0ZXIpOworICAgICAgICBhdXRvJiBlcnJvciA9IG1fY29udGVudEZpbHRlci0+YmxvY2tlZEVy
cm9yKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5jZWxN
YWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihlcnJvcikpOworICAgIH0KK30KKyNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIExPQURFUl9SRUxFQVNFX0xPRwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTQzLDYgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOworY2xhc3MgQ29udGVudEZpbHRlcjsK
IGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwpAQCAtNzAsNiArNzIsOSBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIgZmluYWwKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpDb250ZW50RmlsdGVyQ2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE5ldHdv
cmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3Vz
TG9hZERlbGF5ZWRSZXBseSYmIHJlcGx5ID0gbnVsbHB0cikKQEAgLTkwLDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29y
a1Jlc291cmNlTG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
IAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7
CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CiAKICAgICB2b2lk
IHNldFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyBtX3Jl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KQEAgLTE1
MSw2ICsxNTYsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpOwogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2
b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+
OjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0
d29ya1Jlc291cmNlTG9hZGVyPjo6ZGVyZWYoKTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAg
TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYpOwogCkBA
IC0xNTgsNiArMTY4LDE0IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIudG9VSW50NjQoKTsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImLCBzaXplX3QpIGZpbmFsOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY29u
dGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwg
U3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOworICAgIHZvaWQgY2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZy
b21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0
aXR1dGVEYXRhJikgZmluYWw7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuVXNlQ2FjaGUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAgICAgYm9vbCBjYW5Vc2VDYWNoZWRS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIApAQCAtMjE2
LDYgKzIzNCwxMCBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxv
YWRJbmZvKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIHZvaWQgc3RhcnRDb250ZW50RmlsdGVyaW5nKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOworI2VuZGlmCisKICAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyBtX3BhcmFtZXRlcnM7CiAKICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M+IG1fY29ubmVjdGlvbjsKQEAgLTI1OSw2ICsyODEsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKICAgICBVUkwgbV9maXJz
dFJlc3BvbnNlVVJMOyAvLyBGaXJzdCBVUkwgaW4gcmVzcG9uc2UncyBVUkwgbGlzdCAoaHR0cHM6
Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVzcG9uc2UtdXJsLWxpc3QpLgogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVu
dFJlc3VsdD4gbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0OworCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOworI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjU5
NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDYgKzMyMiwyOSBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwg
V1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8
fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVy
cm9yKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0
IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoIW1f
Y29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0
dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJl
KGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1YnN0aXR1dGVEYXRhLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQyLDYgKzQzLDcg
QEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmlj
czsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAgLTkzLDYg
Kzk1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgY29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CisgICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0
ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmKTsKKyNlbmRpZgorICAgIAogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4g
bV9jb3JlTG9hZGVyOwogICAgIFRyYWNraW5nUGFyYW1ldGVycyBtX3RyYWNraW5nUGFyYW1ldGVy
czsKICAgICBXZWJSZXNvdXJjZUludGVyY2VwdENvbnRyb2xsZXIgbV9pbnRlcmNlcHRDb250cm9s
bGVyOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NjU5NikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw0ICszNywxMSBAQCBtZXNzYWdlcyAtPiBX
ZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAgICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlz
IGZvciB3aGVuIHdlIGhhdmUgdGhlIGVudGlyZSByZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBv
bmNlLCBzdWNoIGFzIHdoZW4gdGhlIHJlc291cmNlIGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBE
aWRSZWNlaXZlUmVzb3VyY2UoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291
cmNlKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpCisgICAgQ2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSkKKyNlbmRpZgorCiB9Cg==
</data>
<flag name="commit-queue"
          id="471537"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446202</attachid>
            <date>2021-12-07 10:46:27 -0800</date>
            <delta_ts>2021-12-09 08:25:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211207194625.patch</filename>
            <type>text/plain</type>
            <size>50019</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMTItMDYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI4NjUwNyk6IFttYWNPU10gTWFueSBm
aWxlIHN5c3RlbSBhY2Nlc3MgbGF5b3V0IHRlc3RzIGJlY2FtZSBmbGFreSBmYWlsdXJlcwpJbmRl
eDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjg2NTk2KQorKysg
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjMsNiArMTYzLDEyIEBACiAjZGVmaW5lIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5k
aWYKIAorI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkgXAorICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDE2MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9T
KSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSkKKyNkZWZpbmUg
RU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUyBFTkFCTEVfQ09O
VEVOVF9GSUxURVJJTkcKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFWFRfTUVO
VVMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVT
IDAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMTIt
MDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
Y29udGVudCBmaWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg2MTUwNzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Zm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlckJ1ZmZlcnMpOgorICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGV0YWNoRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dGFydExvYWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmNsZWFyTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQ
cm92aXNpb25hbExvYWQpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRp
b25Qb2xpY3kpOgorCiAyMDIxLTEyLTA3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21w
b3NpdGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzI1LDcgKzMz
MjUsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1bi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOUUx
ODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYzQTYg
LyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8qIFdlYkNv
cmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNl
c3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9OwotCQlBMTQ5
Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8q
IENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzExQUJBRjNB
NTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBs
YXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QkIwOUUx
Rjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2MUU2OEY3
QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJh
Y2suaCAqLzsgfTsKQEAgLTMzNTE1LDEwICszMzUxNSwxMiBAQAogCQkJCUNEM0VFRjNDMjU3OTlG
QUIwMDY1NjNCQiAvKiBDb2xvckdhbXV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAzQjdERjFE
QjAxNTY3MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RC
NDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDM0EwMEM4Mjc1NDQ5NkQwMDQ3QzBFNSAvKiBDb2xvckludGVycG9sYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNEEyM0VDMjVFQzE2MDIwMEFBQzYzMCAvKiBDb2xvckx1bWluYW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFj
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0FDNkFFOTI0N0YwODJGMDBFNjFENTkgLyogQ29sb3JN
YXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTAxMzdDMjVDMzYyNEIwMERDNzczQyAvKiBD
b2xvck1vZGVscy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNCMkY4OEUyNzVCRUU1ODAwNzIzMUJG
IC8qIENvbG9yTm9ybWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMUU2OTMyNEFC
RjYyNDAwODlDNDE5IC8qIENvbG9yU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM4MkRGNTgxMEE4RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzYyNDQsNyArMzYyNDYsNiBAQAogCQkJCTQ5RDVEQzJFMEY0MjNBNzMwMDhGMjBG
RCAvKiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUQyQzgyQjcyMzZBM0Y2QTAwNTVENkM1IC8qIFBpY3R1cmVJblBp
Y3R1cmVTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzNBMDBDODI3NTQ0OTZEMDA0N0Mw
RTUgLyogQ29sb3JJbnRlcnBvbGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDJGOEUwNjIz
NDQ3NTIzMDA5OTNCNjggLyogUGljdHVyZUluUGljdHVyZVdpbmRvdy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTc1ODU5N0MyM0ExRkNGMzAwQzc0NTcyIC8qIFBpbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDBGRjJBNUUxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMzY2NjksNyArMzY2NzAsNiBAQAogCQkJCTQxODhENTYzMjZDNTUxQjEwMDQ4NThDOCAv
KiBSVENEdGxzVHJhbnNwb3J0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTIwMTdE
MTREMUMwMDQyMEFBMSAvKiBSVENEVE1GU2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhF
MDkyMTE3RDE0RDFDMDA0MjBBQTEgLyogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQkNCMkY4OEUyNzVCRUU1ODAwNzIzMUJGIC8qIENvbG9yTm9ybWFsaXphdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFNkQ3MUIyNkVBMUE0NjAwQjc2NUQ2IC8qIFJUQ0Vy
cm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCOTc5NTI2RTc1QTJFMDA3QzBGRTYgLyogUlRD
RXJyb3JEZXRhaWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkyMzE3RDE0RDFDMDA0
MjBBQTEgLyogUlRDSWNlQ2FuZGlkYXRlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDYgKzExMywxOCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAg
ICAgcmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRG
aWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhDb250ZW50Rmls
dGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNl
IGF0IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUg
PSBTdGF0ZTo6RmlsdGVyaW5nOworICAgIEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5
KCkpOworICAgIG1fbWFpblJlc291cmNlVVJMID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVu
dEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJl
c291cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEy
ICsxMzUsMTcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAg
IEFTU0VSVCghbV9tYWluUmVzb3VyY2UpOwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNl
OwogfQorI2VuZGlmCiAKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNv
dXJjZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fbWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxz
ZQogICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQpAQCAtMTQyLDE0ICsxNTksMzEgQEAgYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyUmVzcG9ucwogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBtX3Jlc3Bv
bnNlUmVjZWl2ZWQgPSB0cnVlOworCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2Nr
ZWQ7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCisjZWxzZQog
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCisjZW5kaWYKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNs
aWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpGaWx0ZXJpbmcpIHsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRG
aWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZW5jb2RlZERh
dGFMZW5ndGgsIG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2J1ZmZlciA9IFJlZiB7IGJ1
ZmZlciB9XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAg
ICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpIHsK
KyAgICAgICAgICAgIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIGRl
bGl2ZXJSZXNvdXJjZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgbV9idWZmZXJzLmFwcGVuZChSZXNvdXJjZURhdGFJdGVtIHsgUmVm
UHRyIHsgJmJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKKyNlbHNlCiAgICAgICAgIExP
RyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBk
YXRhIGZyb20gPCVzPi5cbiIsIGxlbmd0aCwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQoW2RhdGEsIGxlbmd0aF0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7
CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKQEAgLTE1
NywyOSArMTkxLDQ1IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWMK
IAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkKICAgICAgICAgICAgIGRl
bGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNlbmRpZgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7
CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3Qg
VVJMJiByZXNvdXJjZVVSTCkKKyNlbHNlCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwog
ICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9
OwotCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNv
dXJjZVVSTCk7CisjZWxzZQorICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlLT5lcnJvck9jY3VycmVk
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6RmlsdGVyaW5nKSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50Rmls
dGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBtX21h
aW5SZXNvdXJjZVVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisjZWxzZQogICAgICAgICBM
T0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5n
IG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSk7CisjZW5kaWYKICAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJV
bnRpbEJsb2NrZWQoW10oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CiAg
ICAgICAgICAgICBjb250ZW50RmlsdGVyLmZpbmlzaGVkQWRkaW5nRGF0YSgpOwogICAgICAgICB9
KTsKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkgewogICAgICAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3Vy
Y2VEYXRhKCk7CisjZWxzZQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWlu
UmVzb3VyY2UpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6U3RvcHBlZCkKQEAgLTIxOSw3ICsyNjksMTQgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpk
aWREZWNpZGUoU3RhdGUgc3RhdAogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpBbGxvd2Vk
KTsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCk7CiAgICAgQVNTRVJUKHN0
YXRlID09IFN0YXRlOjpBbGxvd2VkIHx8IHN0YXRlID09IFN0YXRlOjpCbG9ja2VkKTsKLSAgICBM
T0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBi
ZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93
ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpIDogIiIpOworI2lmICFMT0dfRElTQUJM
RUQKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0gbV9tYWluUmVzb3VyY2VVUkwuc3RyaW5nKCk7
CisjZWxzZQorICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0gbV9tYWluUmVzb3VyY2UgPyBt
X21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkgOiBlbXB0eVN0cmluZygpOworI2VuZGlmCisg
ICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91
bGQgYmUgJXMgZm9yIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpB
bGxvd2VkID8gImFsbG93ZWQiIDogImJsb2NrZWQiLCB1cmxTdHJpbmcuYXNjaWkoKS5kYXRhKCkp
OworI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKICAgICBtX3N0YXRlID0gc3RhdGU7CiAgICAgaWYg
KG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIyOCwxMiAr
Mjg1LDIwIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0YXQKICAgICBt
X2NsaWVudC5jYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihtX2Jsb2NrZWRF
cnJvcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQordm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCisjZWxzZQogdm9p
ZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKKyNlbmRpZgogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgpOworI2Vsc2UKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRv
KiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgIG1f
Y2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5k
YXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI0NSw2ICszMTAsNyBAQCBzdGF0aWMgY29uc3Qg
VVJMJiBibG9ja2VkUGFnZVVSTCgpCiAgICAgcmV0dXJuIGJsb2NrZWRQYWdlVVJMOwogfQogCisj
aWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiBib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3Qg
RG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0
aXR1dGVEYXRhKQogewogICAgIGlmIChhdXRvIGNvbnRlbnRGaWx0ZXIgPSBhY3RpdmVMb2FkZXIu
Y29udGVudEZpbHRlcigpKSB7CkBAIC0yNTksNiArMzI1LDcgQEAgYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyU3Vic3RpdAogCiAgICAgcmV0dXJuIHRydWU7CiB9CisjZW5kaWYKIAog
Ym9vbCBDb250ZW50RmlsdGVyOjp3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgY29uc3QKIHsKQEAgLTI4Myw2ICszNTAsMTUgQEAgdm9p
ZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYQogICAgIG1fY2xpZW50LmhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCgp
LCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyU3RvcmVkUmVz
b3VyY2VEYXRhKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9idWZmZXJzLnNp
emUoKTsgaSsrKQorICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX2J1ZmZlcnNbaV0uYnVm
ZmVyLCBtX2J1ZmZlcnNbaV0uZW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fYnVmZmVycy5jbGVh
cigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuaAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjMgKzUwLDM2IEBAIGNsYXNzIENvbnRl
bnRGaWx0ZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9p
ZCBhZGRUeXBlKCkgeyB0eXBlcygpLmFwcGVuZCh0eXBlPFQ+KCkpOyB9CiAKLSAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZShDb250ZW50RmlsdGVyQ2xpZW50
Jik7Ci0gICAgfkNvbnRlbnRGaWx0ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZShDb250ZW50RmlsdGVyQ2xpZW50Jik7
CisgICAgV0VCQ09SRV9FWFBPUlQgfkNvbnRlbnRGaWx0ZXIoKTsKIAogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVybiAieC1hcHBsZS1jb250ZW50LWZpbHRlciI7IH0K
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShjb25zdCBV
UkwmKTsKKyNlbHNlCiAgICAgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShDYWNoZWRS
YXdSZXNvdXJjZSYpOwotICAgIHZvaWQgc3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOworI2Vu
ZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7
CiAKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgY29udGludWVBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRp
bnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKTsKKyNlbHNlCiAg
ICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpOwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJik7CisjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGNvbnRpbnVlQWZ0ZXJTdWJzdGl0
dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3Qg
U3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsKLSAgICB2b2lkIGhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAKKyAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBibG9ja2VkRXJyb3IoKSBjb25zdCB7IHJldHVy
biBtX2Jsb2NrZWRFcnJvcjsgfQorICAgIGJvb2wgaXNBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZDsgfQorICAgIGJvb2wgcmVzcG9uc2VSZWNlaXZlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VSZWNlaXZlZDsgfQorICAgIAogcHJpdmF0ZToKICAg
ICB1c2luZyBTdGF0ZSA9IFBsYXRmb3JtQ29udGVudEZpbHRlcjo6U3RhdGU7CiAKQEAgLTgyLDE1
ICs5NSwzMSBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPiB2
b2lkIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKEZ1bmN0aW9uJiYpOwogICAgIHZv
aWQgZGlkRGVjaWRlKFN0YXRlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGVsaXZlclN0
b3JlZFJlc291cmNlRGF0YSgpOworI2Vsc2UKICAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURhdGEo
Q2FjaGVkUmVzb3VyY2UmKTsKLQorI2VuZGlmCisgICAgCiAgICAgQ29udGFpbmVyIG1fY29udGVu
dEZpbHRlcnM7CiAgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9jbGllbnQ7CisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBVUkwgbV9tYWlu
UmVzb3VyY2VVUkw7CisgICAgc3RydWN0IFJlc291cmNlRGF0YUl0ZW0geworICAgICAgICBSZWZQ
dHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0
YUxlbmd0aDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxSZXNvdXJjZURhdGFJdGVtPiBtX2J1
ZmZlcnM7CisjZWxzZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBtX21haW5SZXNvdXJjZTsKKyNlbmRpZgogICAgIGNvbnN0IFBsYXRmb3JtQ29udGVudEZpbHRl
ciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAgICAgU3RhdGUgbV9zdGF0
ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsK
ICAgICBib29sIG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UgeyBmYWxzZSB9OworICAgIGJvb2wgbV9y
ZXNwb25zZVJlY2VpdmVkIHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCShyZXZp
c2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBD
b250ZW50RmlsdGVyQ2xpZW50IHsKQEAgLTQxLDcgKzQyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0
ID0gMDsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgPSAwOworI2Vsc2UKICAgICB2aXJ0dWFsIHZvaWQg
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAw
OworI2VuZGlmCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9j
ayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRG
b3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjg2NTk2KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIwLDcgKzQyMCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZygpIGNvbnN0CiB2
b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKHJlc291cmNlKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCkBAIC03MTAsNyArNzEwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KFJlcwogICAgICAgICBuZXdSZXF1ZXN0LnNldFVSTChXVEZNb3ZlKHVybCkpOwog
ICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29u
dGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwog
I2VuZGlmCkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZChjbwogICAgIEFTU0VSVChyZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSk7CiAgICAg
Q29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAh
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSkp
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTMyNCw3ICsxMzI0LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZAogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpk
YXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAo
bV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVj
ZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xNDUyLDcg
KzE0NTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUoKQogICAgIHN0
b3BMb2FkaW5nKCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNlLT5o
YXNDbGllbnQoKnRoaXMpKQogICAgICAgICBtX21haW5SZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0
aGlzKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXIt
PnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMjAxNCw3ICsyMDE0LDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlcwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgbV9jb250ZW50RmlsdGVyID0gIW1fc3Vic3RpdHV0ZURhdGEuaXNW
YWxpZCgpID8gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKSA6IG51bGxwdHI7CiAjZW5kaWYK
IApAQCAtMjIxNiw3ICsyMjE2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJNYWluUmVz
b3VyY2UoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fbWFpblJlc291
cmNlICYmIG1fbWFpblJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMpKQogICAgICAgICBtX21haW5S
ZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQog
ICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNl
bmRpZgpAQCAtMjM0Nyw3ICsyMzQ3LDcgQEAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBE
b2N1bWVudExvYQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpiZWNvbWVNYWluUmVzb3VyY2VDbGll
bnQoKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRl
ci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKm1fbWFpblJlc291cmNlKTsKICNlbmRpZgpA
QCAtMjQwNCw3ICsyNDA0LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5
UG9saQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xh
dGlvbkV2ZW50KFdURk1vdmUoZXZlbnRJbml0KSk7CiB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBzaXplKQogewogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsKQEAgLTI0MTUsMTIgKzI0
MTUsMTkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTAogICAgIGNh
bmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCitSZXNvdXJjZUVycm9yIERvY3VtZW50
TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
IHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3sK
KyAgICByZXR1cm4gaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBX
VEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cit9CisKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7
CiAgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9j
a2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogCi1SZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlk
QmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcm
JiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCitSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcm
JiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRV
bnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7CkBAIC0yNDMwLDggKzI0MzcsNDAgQEAg
UmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbAogICAgICAgICB9KTsKICAg
ICB9CiAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7Ci0gICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmJs
b2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOworICAgIGF1dG8gZXJyb3IgPSBm
cmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCgpKTsKKwor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
bV9ibG9ja2VkQnlDb250ZW50RmlsdGVyID0gdHJ1ZTsKKyAgICBtX2Jsb2NrZWRFcnJvciA9IGVy
cm9yOworI2VuZGlmCisKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYg
YmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sK
KyAgICBmcmFtZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lKCksIGJsb2Nr
ZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogfQorCitib29sIERvY3VtZW50TG9hZGVyOjpj
b250ZW50RmlsdGVyV2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICByZXR1cm4gbV9ibG9ja2VkQnlDb250ZW50RmlsdGVyICYmIG1f
YmxvY2tlZEVycm9yLmVycm9yQ29kZSgpID09IGVycm9yLmVycm9yQ29kZSgpICYmIG1fYmxvY2tl
ZEVycm9yLmRvbWFpbigpID09IGVycm9yLmRvbWFpbigpOworI2Vsc2UKKyAgICByZXR1cm4gbV9j
b250ZW50RmlsdGVyICYmIG1fY29udGVudEZpbHRlci0+d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoZXJyb3IpOworI2VuZGlmCit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRl
bnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyNlbHNlCisgICAgaWYgKG1fY29udGVu
dEZpbHRlcikKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGVycm9yKTsKKyNlbmRpZgorfQorCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRBY3RpdmVDb250ZW50UnVsZUxpc3RB
Y3Rpb25QYXR0ZXJucyhjb25zdCBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4+JiBwYXR0
ZXJucykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lv
biAyODY1OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyCiAgICAg
OiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj4KICAgICAsIHB1YmxpYyBGcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGll
bnQKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKICAgICAsIHB1YmxpYyBDb250ZW50RmlsdGVyQ2xpZW50CiAjZW5kaWYKICAgICAsIHByaXZh
dGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgewpAQCAtMzg2LDEwICszODYsMTQgQEAgcHVibGlj
OgogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeVRvUHJvcGFnYXRlKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgQ29udGVudEZpbHRlciogY29udGVudEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudEZpbHRlci5nZXQoKTsgfQogICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3Vu
dGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmlu
YWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlmCisgICAg
V0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2so
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVDb250ZW50RmlsdGVyUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpOworI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNp
c2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hh
cmVkQnVmZmVyKik+JiYpOwpAQCAtNDM0LDYgKzQzOCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOyB9CiAgICAg
dm9pZCBzZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKGJvb2wg
aXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCkgeyBtX2lzQ29udGlu
dWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQgPSBpc0NvbnRpbnVpbmdMb2FkQWZ0
ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCisgICAgYm9vbCBjb250ZW50RmlsdGVyV2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgY29udGVudEZpbHRlckhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOworI2VuZGlmCisKIHBy
b3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwogCkBAIC00ODYsNyArNDk1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIC8vIENvbnRlbnRGaWx0
ZXJDbGllbnQKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250
ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwpAQCAt
NjM4LDcgKzY0NywxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRG
aWx0ZXI7CisjZWxzZQorICAgIGJvb2wgbV9ibG9ja2VkQnlDb250ZW50RmlsdGVyIHsgZmFsc2Ug
fTsKKyAgICBSZXNvdXJjZUVycm9yIG1fYmxvY2tlZEVycm9yOworI2VuZGlmCiAjZW5kaWYKIAog
I2lmIFVTRShRVUlDS19MT09LKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDU4LDcgKzI0NTgsNiBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAgICAgbV9wcm92aXNpb25hbExvYWRFcnJvckJl
aW5nSGFuZGxlZFVSTCA9IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIudXJsKCk7CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgYXV0byBjb250ZW50RmlsdGVyID0gcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlci5jb250ZW50RmlsdGVyKCk7CiAgICAgYXV0byBjb250ZW50Rmls
dGVyV2lsbENvbnRpbnVlTG9hZGluZyA9IGZhbHNlOwogI2VuZGlmCiAKQEAgLTI0NjYsNyArMjQ2
NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKICAgICBpZiAo
aGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpKQogICAgICAgICB3aWxsQ29udGludWVMb2FkaW5n
ID0gV2lsbENvbnRpbnVlTG9hZGluZzo6WWVzOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKLSAgICBpZiAoY29udGVudEZpbHRlciAmJiBjb250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpIHsKKyAgICBpZiAocHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlci5jb250ZW50RmlsdGVyV2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJy
b3IpKSB7CiAgICAgICAgIHdpbGxDb250aW51ZUxvYWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5n
OjpZZXM7CiAgICAgICAgIGNvbnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nID0gdHJ1ZTsK
ICAgICB9CkBAIC0yNDc2LDcgKzI0NzUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERp
ZEZhaWxQcm92aXNpCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGNv
bnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nKQotICAgICAgICBjb250ZW50RmlsdGVyLT5o
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICAgICAgcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci5jb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShl
cnJvcik7CiAjZW5kaWYKIAogICAgIG1fcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRV
UkwgPSB7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShy
ZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpQ
b2xpY3lDaGVja2VyOjpjaGVja05hCiAgICAgYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBsb2FkZXIt
PnN1YnN0aXR1dGVEYXRhKCk7CiAgICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiAh
c3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewogICAgICAgICBib29sIHNo
b3VsZENvbnRpbnVlID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYgKGF1dG8gbG9hZGVyID0gbV9mcmFtZS5s
b2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgc2hvdWxkQ29udGlu
dWUgPSBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KCps
b2FkZXIsIHN1YnN0aXR1dGVEYXRhKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnN0aXR1dGVEYXRhLmgJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAgICAgICAg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAg
ICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZTsgfQotICAgICAgICAKKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFN1
YnN0aXR1dGVEYXRhJik7CisKICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CkBAIC02Nyw0ICs3MCwy
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0
eSBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHk6OkhpZGRlbiB9OwogICAgIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFN1
YnN0aXR1dGVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG1fY29udGVudCA8PCBtX2ZhaWxpbmdVUkwgPDwgbV9yZXNwb25zZSA8PCBtX3Nob3Vs
ZFJldmVhbFRvU2Vzc2lvbkhpc3Rvcnk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citi
b29sIFN1YnN0aXR1dGVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3Vic3RpdHV0ZURh
dGEmIGRhdGEpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fY29udGVudCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX2Zh
aWxpbmdVUkwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEubV9yZXNwb25zZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YS5tX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjEtMTItMDYg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29u
dGVudCBmaWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzg2MTUwNzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRG
aWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9t
Q29udGVudEZpbHRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hl
bWVzL1dlYktpdC54Y3NjaGVtZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y29u
dGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJv
bUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbjoKKwogMjAyMS0xMi0wNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUg
Y29tcG9zaXRpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNiArNjcsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXZpZXdDb252
ZXJ0ZXIuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oPgorI2VuZGlmCisKICNk
ZWZpbmUgTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAi
JXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJh
bWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2U9
JWQsIGRlc3RpbmF0aW9uPSV1LCBpc1N5bmNocm9ub3VzPSVkXSBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OiIgZm10LCB0aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc01haW5S
ZXNvdXJjZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wYXJhbWV0ZXJzLm9wdGlvbnMuZGVz
dGluYXRpb24pLCBpc1N5bmNocm9ub3VzKCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIExPQURF
Ul9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZy
YW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNl
PSVkLCBkZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWlu
UmVzb3VyY2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRl
c3RpbmF0aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQogCkBAIC0xODcsNiAr
MTkyLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgQVNTRVJU
KCFtX3dhc1N0YXJ0ZWQpOwogICAgIG1fd2FzU3RhcnRlZCA9IHRydWU7CiAKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGF1dG8gcmVxdWVz
dCA9IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH07CisgICAgc3RhcnRDb250
ZW50RmlsdGVyaW5nKHJlcXVlc3QpOworI2VuZGlmCisKICAgICBpZiAobV9uZXR3b3JrTG9hZENo
ZWNrZXIpIHsKICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVx
dWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKQEAgLTIyNSw2ICsyMzUsMTggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
KCkKICAgICBzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVz
dCgpIH0sIEZpcnN0TG9hZDo6WWVzKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAo
IWlzTWFpblJlc291cmNlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRGaWx0ZXIg
PSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOworICAgIGlmICghbV9jb250ZW50RmlsdGVy
LT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Uo
KSkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5n
TWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygicmV0cmlldmVDYWNoZUVudHJ5OiBp
c01haW5GcmFtZUxvYWQ9JWQiLCBpc01haW5GcmFtZUxvYWQoKSk7CkBAIC03MDQsNiArNzI2LDEx
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmUKIHsKICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBN
SU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRlbnRMZW5ndGg9JSIg
UFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFzTmV0d29ya0xvYWRD
aGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRS
ZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgISFtX25ldHdv
cmtMb2FkQ2hlY2tlcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIGlmIChpc01haW5SZXNvdXJjZSgpICYmIG1fY29udGVudEZpbHRl
ciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChyZWNl
aXZlZFJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFj
dGlvbjo6SWdub3JlKTsKKyNlbmRpZgorCiAgICAgaWYgKGlzTWFpblJlc291cmNlKCkpCiAgICAg
ICAgIGRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZShyZWNlaXZlZFJlc3BvbnNlKTsKIApA
QCAtOTE1LDYgKzk0MiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hCiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRo
ZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgogICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9i
dWZmZXJlZERhdGEsIC0xKTsKICAgICAgICAgfQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIGlmIChpc01haW5SZXNvdXJjZSgpICYm
IG1fY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51
ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAg
ICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAg
ICAgIH0KKyNlbmRpZgorCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBA
IC0xMDA0LDYgKzEwMzgsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVkaQogICAgIGlmICghbV9maXJzdFJlc3BvbnNlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgbV9m
aXJzdFJlc3BvbnNlVVJMID0gcmVkaXJlY3RSZXNwb25zZS51cmwoKTsKIAorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKGlzTWFpblJl
c291cmNlKCkgJiYgbV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVl
QWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgICAg
IHJldHVybjsKKyNlbmRpZgorCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhl
bWVyYWwoKSkgewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVy
bCgpKSkgewpAQCAtMTI2Miw3ICsxMzAxLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpidWZmZXJpbmdUaW0KICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJl
Y2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFM
ZW5ndGgpKTsKKyAgICBib29sIHNob3VsZEZpbHRlciA9IGZhbHNlOworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgc2hvdWxkRmlsdGVyID0g
aXNNYWluUmVzb3VyY2UoKSAmJiBtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+
Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCgqbV9idWZmZXJlZERhdGEuZ2V0KCksIG1fYnVmZmVy
ZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpOworI2VuZGlmCisgICAgaWYgKCFzaG91bGRGaWx0ZXIp
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0
YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7
CiAKICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CkBAIC0xMjcyLDYgKzEzMTYsMTEgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoUwogewogICAgIEFTU0VSVCgh
aXNTeW5jaHJvbm91cygpKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisgICAgaWYgKGlzTWFpblJlc291cmNlKCkgJiYgbV9jb250ZW50Rmls
dGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVy
LCBlbmNvZGVkRGF0YUxlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyIH0s
IGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKQEAgLTEzMTgsNiArMTM2NywxMSBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDCiAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJkaWRSZXRyaWV2ZUNhY2hlRW50cnk6Iik7CiAgICAgYXV0byByZXNwb25zZSA9IGVudHJ5LT5y
ZXNwb25zZSgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSAmJiBtX2NvbnRlbnRGaWx0ZXIgJiYg
IW1fY29udGVudEZpbHRlci0+cmVzcG9uc2VSZWNlaXZlZCgpICYmICFtX2NvbnRlbnRGaWx0ZXIt
PmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJu
OworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkKICAgICAgICAgZGlkUmVjZWl2
ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlKTsKIApAQCAtMTM2OCw2ICsxNDIyLDEzIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBMT0FERVJfUkVM
RUFTRV9MT0coInNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5OiIpOwogI2lmIEVOQUJMRShTSEFSRUFC
TEVfUkVTT1VSQ0UpCiAgICAgaWYgKCFlbnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKS5p
c051bGwoKSkgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgICAgIGlmIChpc01haW5SZXNvdXJjZSgpICYmIG1fY29udGVudEZpbHRlciAm
JiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKCplbnRyeS0+YnVm
ZmVyKCksIGVudHJ5LT5idWZmZXIoKS0+c2l6ZSgpKSkgeworICAgICAgICAgICAgbV9jb250ZW50
RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3Qu
dXJsKCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJl
c291cmNlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgogICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc291cmNlKGVu
dHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMzkxLDYgKzE0NTIsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRS
ZXN1bHRGbwogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSA9
IDA7CiAKICAgICBzZW5kQnVmZmVyKCplbnRyeS0+YnVmZmVyKCksIGVudHJ5LT5idWZmZXIoKS0+
c2l6ZSgpKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIGlmIChpc01haW5SZXNvdXJjZSgpICYmIG1fY29udGVudEZpbHRlcikgeworICAg
ICAgICBtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFt
ZXRlcnMucmVxdWVzdC51cmwoKSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRl
cmluZ01haW5SZXNvdXJjZSgpOworICAgIH0KKyNlbmRpZgogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNz
KSk7CiB9CiAKQEAgLTE3MDcsNiArMTc3NCwzNiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6aXNBcHBJbml0aWF0CiAgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwSW5p
dGlhdGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpKTsKK30KKworV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9j
ayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0
cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5k
bGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworICAgIHJldHVybiBXZWJLaXQ6OmJs
b2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7Cit9CisKK3Zv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBSRUxF
QVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOworICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29u
c3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1
dGVEYXRhKQoreworICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7CisgICAg
ICAgIGF1dG8mIGVycm9yID0gbV9jb250ZW50RmlsdGVyLT5ibG9ja2VkRXJyb3IoKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyKGVycm9yKSk7CisgICAgfQorfQorI2VuZGlmIC8vIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjdW5kZWYgTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlz
aW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC5oPgpAQCAtNDMsNiArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U7CitjbGFzcyBDb250ZW50RmlsdGVyOwogY2xhc3MgRm9ybURh
dGE7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CkBAIC03MCw2ICs3Miw5IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAg
ICwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeUNsaWVudAogICAgICwgcHVibGljIFdlYkNvcmU6OkNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXJDbGllbnQKKyNlbmRpZgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtSZXNv
dXJjZUxvYWRlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TmV0d29ya1Jlc291cmNlTG9h
ZGVyPiBjcmVhdGUoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJl
cGx5JiYgcmVwbHkgPSBudWxscHRyKQpAQCAtOTAsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCi0gICAgdm9pZCBj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1
ZXN0LCBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKTsKKyAgICB2b2lkIGNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBib29sIGlz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKTsKIAogICAgIHZvaWQgc2V0UmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSB7IG1fcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQpAQCAtMTUxLDYgKzE1NiwxMSBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzQXBwSW5pdGlhdGVkKCk7CiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgcmVmKCkgY29u
c3QgZmluYWwgeyBSZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj46OnJlZigpOyB9Cisg
ICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VM
b2FkZXI+OjpkZXJlZigpOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxheWVkUmVwbHkmJik7CiAKQEAgLTE1OCw2ICsxNjgs
MTQgQEAgcHJpdmF0ZToKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50
b1VJbnQ2NCgpOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIC8vIENvbnRlbnRGaWx0ZXJDbGllbnQKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNp
emVfdCkgZmluYWw7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlk
QmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CisgICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0
ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBm
aW5hbDsKKyNlbmRpZgorCiAgICAgYm9vbCBjYW5Vc2VDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICBib29sIGNhblVzZUNhY2hlZFJlZGlyZWN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCkBAIC0yMTYsNiArMjM0LDEwIEBA
IHByaXZhdGU6CiAKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsKIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
dm9pZCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Cisj
ZW5kaWYKKwogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1l
dGVyczsKIAogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0
aW9uOwpAQCAtMjU5LDYgKzI4MSwxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwogICAgIFVSTCBtX2ZpcnN0UmVzcG9uc2VVUkw7
IC8vIEZpcnN0IFVSTCBpbiByZXNwb25zZSdzIFVSTCBsaXN0IChodHRwczovL2ZldGNoLnNwZWMu
d2hhdHdnLm9yZy8jY29uY2VwdC1yZXNwb25zZS11cmwtbGlzdCkuCiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBtX2N1
cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQ7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpD
b250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMjIsNiArMzIyLDI5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNvdXIKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
JiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7
CisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+
aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNh
bmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOworfQorCit2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNv
bnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8
ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KS0+aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoYmxvY2tlZFBhZ2VV
UkwsIHN1YnN0aXR1dGVEYXRhKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3Vu
ZGVmIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9u
IDI4NjU5NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVySWRlbnRpZmllci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU3Vic3RpdHV0ZURhdGEuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDIsNiArNDMsNyBAQCBjbGFzcyBGb3Jt
RGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwpAQCAtOTMsNiArOTUsMTIgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNv
bnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyAgICB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRG
b3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lk
IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwm
IGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOworI2VuZGlm
CisgICAgCiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7
CiAgICAgVHJhY2tpbmdQYXJhbWV0ZXJzIG1fdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIFdlYlJl
c291cmNlSW50ZXJjZXB0Q29udHJvbGxlciBtX2ludGVyY2VwdENvbnRyb2xsZXI7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg2NTk2KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTM3LDQgKzM3LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9h
ZGVyIExlZ2FjeVJlY2UKICAgICAvLyBEaWRSZWNlaXZlUmVzb3VyY2UgaXMgZm9yIHdoZW4gd2Ug
aGF2ZSB0aGUgZW50aXJlIHJlc291cmNlIGRhdGEgYXZhaWxhYmxlIGF0IG9uY2UsIHN1Y2ggYXMg
d2hlbiB0aGUgcmVzb3VyY2UgaXMgY2FjaGVkIGluIG1lbW9yeQogICAgIERpZFJlY2VpdmVSZXNv
dXJjZShXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgcmVzb3VyY2UpCiAjZW5kaWYK
KworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCkKKyAgICBDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yKQorICAgIEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9t
Q29udGVudEZpbHRlcihVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRh
IHN1YnN0aXR1dGVEYXRhKQorI2VuZGlmCisKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446551</attachid>
            <date>2021-12-09 08:25:25 -0800</date>
            <delta_ts>2021-12-09 11:34:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211209172523.patch</filename>
            <type>text/plain</type>
            <size>51718</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFIG1h
Y3JvIGZvciBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29ya2luZyBwcm9jZXNzLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaDoKKwogMjAyMS0xMi0wNiAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjg2
NTA3KTogW21hY09TXSBNYW55IGZpbGUgc3lzdGVtIGFjY2VzcyBsYXlvdXQgdGVzdHMgYmVjYW1l
IGZsYWt5IGZhaWx1cmVzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCShy
ZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsMTIgQEAKICNkZWZpbmUgRU5BQkxFX0NPTlRF
TlRfRklMVEVSSU5HIDEKICNlbmRpZgogCisjaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYwMDAwKSBcCisgICAg
fHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gOTAwMDApKQorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORworI2VuZGlmCisKICNpZiAhZGVmaW5l
ZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUg
RU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
ODY1OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw0NSBAQAorMjAyMS0xMi0wMiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5nIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc2
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3MDI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIGZy
b20gRG9jdW1lbnRMb2FkZXIgd2hlbiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLCBzaW5jZSB0aGlz
IHRha2VzIHBsYWNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgICAgIE1vZGlmeSB0
aGUgQ29udGVudEZpbHRlciBjbGFzcyBieSByZW1vdmluZyB1c2Ugb2YgdGhlIHR5cGVzIENhY2hl
ZFJlc291cmUgYW5kIENhY2hlZFJhd1Jlc291cmNlLCBzaW5jZSBvYmplY3RzIG9mIHRoZXNlCisg
ICAgICAgIHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoZSBOZXR3b3JraW5nIHByb2Nlc3Mu
IFBhcmFtZXRlcnMgd2l0aCB0aGVzZSB0eXBlcyBhcmUgcmVwbGFjZWQgd2l0aCBVUkwgcGFyYW1l
dGVycy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW50RmlsdGVyVW50
aWxCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJCdWZmZXJzKToKKyAgICAg
ICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sp
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tO
YXZpZ2F0aW9uUG9saWN5KToKKwogMjAyMS0xMi0wNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNp
ZGUgY29tcG9zaXRpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzMy
NSw3ICszMzI1LDcgQEAKIAkJQTE0ODMyQ0MxODdGNjdDNDAwREE2M0E2IC8qIFdlYkNvcmVUaHJl
YWRSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NDgzMjlFMTg3RjUwODcwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkUnVuLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0ODMyQ0YxODdGNjg0NzAw
REE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMkExMTg3RjUwODcwMERBNjNBNiAv
KiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTFEQTMxRjg1OUQ4NzAwOTVGNUQ0IC8qIFBh
eW1lbnRTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTQ5MURBMjFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCAqLzsgfTsK
LQkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENF
RjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IH07CisJCUExNDk3ODZGMUFCQUYzMzgwMENFRjdF
NCAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNDk3ODcx
MUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODcwMUFCQUYzQTUwMENFRjdF
NCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTRCQjBBMDFGOTgxM0I4MDA2MDVBMzUgLyogTW9ja1Bh
eW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NEJCMDlFMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovOyB9OwogCQlBMTVENzUx
NjFFNjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxMzFFNjhGN0IxMDBBMzVGQkMgLyogQmxv
YkNhbGxiYWNrLmggKi87IH07CkBAIC0zMzA1MSw3ICszMzA1MSw2IEBACiAJCQlpc2EgPSBQQlhI
ZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKLQkJCQk3QjU4MkREODI3MTZGNTVCMDA0QjkyRDAgLyogKG51bGwpIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2ln
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJz
dHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1MTUsMTAgKzMzNTE0LDEyIEBA
CiAJCQkJQ0QzRUVGM0MyNTc5OUZBQjAwNjU2M0JCIC8qIENvbG9yR2FtdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMDNCN0RGMURCMDE1NjcwMDhCQjg5MCAvKiBDb2xvckhhc2guaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY1NUIzREI0MTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkMzQTAwQzgyNzU0NDk2RDAwNDdDMEU1IC8qIENvbG9ySW50
ZXJwb2xhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0QTIzRUMyNUVDMTYwMjAwQUFDNjMw
IC8qIENvbG9yTHVtaW5hbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFREUzQTUwMDBDN0E0MzA2
MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDQUM2QUU5MjQ3RjA4
MkYwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMDEzN0My
NUMzNjI0QjAwREM3NzNDIC8qIENvbG9yTW9kZWxzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0Iy
Rjg4RTI3NUJFRTU4MDA3MjMxQkYgLyogQ29sb3JOb3JtYWxpemF0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3Q0QxRTY5MzI0QUJGNjI0MDA4OUM0MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzgyREY1ODEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9y
U3BhY2VDRy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjI0NCw3ICszNjI0NSw2IEBACiAJCQkJNDlE
NURDMkUwRjQyM0E3MzAwOEYyMEZEIC8qIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxREJDMUI1NjIzNDdCM0QyMDBCOTAxQUYgLyogUGljdHVyZUlu
UGljdHVyZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDJDODJCNzIzNkEzRjZBMDA1
NUQ2QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUJD
M0EwMEM4Mjc1NDQ5NkQwMDQ3QzBFNSAvKiBDb2xvckludGVycG9sYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFEMkY4RTA2MjM0NDc1MjMwMDk5M0I2OCAvKiBQaWN0dXJlSW5QaWN0dXJlV2lu
ZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzU4NTk3QzIzQTFGQ0YzMDBDNzQ1NzIgLyogUGlu
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEZGMkE1RTExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xv
YWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY2OSw3ICszNjY2OSw2IEBACiAJCQkJNDE4OEQ1
NjMyNkM1NTFCMTAwNDg1OEM4IC8qIFJUQ0R0bHNUcmFuc3BvcnRTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDc4RTA5MjAxN0QxNEQxQzAwNDIwQUExIC8qIFJUQ0RUTUZTZW5kZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3OEUwOTIxMTdEMTREMUMwMDQyMEFBMSAvKiBSVENEVE1GVG9uZUNo
YW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0IyRjg4RTI3NUJFRTU4MDA3MjMxQkYg
LyogQ29sb3JOb3JtYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUU2RDcxQjI2RUEx
QTQ2MDBCNzY1RDYgLyogUlRDRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQUI5Nzk1MjZF
NzVBMkUwMDdDMEZFNiAvKiBSVENFcnJvckRldGFpbFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3OEUwOTIzMTdEMTREMUMwMDQyMEFBMSAvKiBSVENJY2VDYW5kaWRhdGUuaCBpbiBIZWFkZXJz
ICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkocmV2aXNp
b24gMjg2NTk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDE4IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29u
dGludWVBZnRlcldpbGxTZW4KICAgICByZXR1cm4gIXJlcXVlc3QuaXNOdWxsKCk7CiB9CiAKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBD
b250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShjb25zdCBVUkwmIHVybCkK
K3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgc3RhcnQgZmls
dGVyaW5nIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIHVybC5zdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpGaWx0ZXJpbmc7CisgICAgQVNTRVJUKG1fbWFp
blJlc291cmNlVVJMLmlzRW1wdHkoKSk7CisgICAgbV9tYWluUmVzb3VyY2VVUkwgPSB1cmw7Cit9
CisjZWxzZQogdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShD
YWNoZWRSYXdSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6
OlN0b3BwZWQpCkBAIC0xMjMsMTIgKzEzNSwxNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0
RmlsdGVyaW5nTWFpblJlCiAgICAgQVNTRVJUKCFtX21haW5SZXNvdXJjZSk7CiAgICAgbV9tYWlu
UmVzb3VyY2UgPSAmcmVzb3VyY2U7CiB9CisjZW5kaWYKIAogdm9pZCBDb250ZW50RmlsdGVyOjpz
dG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
QmxvY2tlZCkKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdG9wcGVkOworI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgbV9tYWluUmVzb3Vy
Y2VVUkwgPSBVUkwoKTsKKyNlbHNlCiAgICAgbV9tYWluUmVzb3VyY2UgPSBudWxscHRyOworI2Vu
ZGlmCiB9CiAKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xNDIsMTQgKzE1OSwzMSBA
QCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zCiAgICAgICAgIH0pOwog
ICAgIH0KIAorICAgIG1fcmVzcG9uc2VSZWNlaXZlZCA9IHRydWU7CisKICAgICByZXR1cm4gbV9z
dGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKKyNlbHNlCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRh
UmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKKyNlbmRpZgogewogICAg
IFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9Owog
CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIExPRyhDb250ZW50
RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBmcm9t
IDwlcz4uXG4iLCBlbmNvZGVkRGF0YUxlbmd0aCwgbV9tYWluUmVzb3VyY2VVUkwuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tl
ZChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVu
dEZpbHRlcikgeworICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIH0pOworICAgICAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6QWxsb3dlZCkgeworICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0
YSgpOworICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJl
c291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAmYnVmZmVyIH0sIGVuY29kZWREYXRhTGVuZ3RoIH0p
OworI2Vsc2UKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJl
Y2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21haW5SZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29u
dGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0
ZXImIGNvbnRlbnRGaWx0ZXIpIHsKICAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShk
YXRhLCBsZW5ndGgpOwpAQCAtMTU3LDI5ICsxOTEsNDUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyRGF0YVJlYwogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxv
d2VkKQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWluUmVzb3VyY2UpOwor
I2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gbV9zdGF0
ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKQorI2Vsc2UKIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKKyNlbmRpZgogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3Rl
ZENsaWVudCB7IG1fY2xpZW50IH07Ci0KKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2VVUkwsIHJlc291
cmNlVVJMID09IG1fbWFpblJlc291cmNlVVJMKTsKKyNlbHNlCisgICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBpZiAobV9tYWluUmVz
b3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIAog
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBMT0coQ29udGVudEZp
bHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3Vy
Y2UgYXQgPCVzPi5cbiIsIG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKKyNlbHNlCiAgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3
aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVz
b3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyNlbmRpZgogICAgICAgICBm
b3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIm
IGNvbnRlbnRGaWx0ZXIpIHsKICAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRp
bmdEYXRhKCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpC
bG9ja2VkKSB7CiAgICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG93ZWQ7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgICAg
IGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKTsKKyNlbHNlCiAgICAgICAgICAgICBkZWxpdmVy
UmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJjZSk7CisjZW5kaWYKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVkKQpAQCAtMjE5LDcgKzI2OSwxNCBAQCB2
b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiAgICAgQVNTRVJUKG1fc3Rh
dGUgIT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpCbG9j
a2VkKTsKICAgICBBU1NFUlQoc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgfHwgc3RhdGUgPT0gU3Rh
dGU6OkJsb2NrZWQpOwotICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBk
ZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBz
dGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwgbV9tYWluUmVz
b3VyY2UgPyBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkgOiAi
Iik7CisjaWYgIUxPR19ESVNBQkxFRAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcgPSBtX21haW5S
ZXNvdXJjZVVSTC5zdHJpbmcoKTsKKyNlbHNlCisgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcg
PSBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKSA6IGVtcHR5
U3RyaW5nKCk7CisjZW5kaWYKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0
ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+Llxu
Iiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIHVybFN0
cmluZy5hc2NpaSgpLmRhdGEoKSk7CisjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogICAgIG1fc3Rh
dGUgPSBzdGF0ZTsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjI4LDEyICsyODUsMjAgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNp
ZGUoU3RhdGUgc3RhdAogICAgIG1fY2xpZW50LmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250
ZW50RmlsdGVyKG1fYmxvY2tlZEVycm9yKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0
YUxlbmd0aCkKKyNlbHNlCiB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OkFsbG93ZWQpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisjZWxzZQogICAgIEFTU0VSVChyZXNv
dXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVy
RGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VC
dWZmZXIoKSkKICAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisjZW5k
aWYKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpAQCAtMjQ1LDYgKzMx
MCw3IEBAIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKICAgICByZXR1cm4gYmxv
Y2tlZFBhZ2VVUkw7CiB9CiAKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1
dGVEYXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBT
dWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgaWYgKGF1dG8gY29udGVudEZp
bHRlciA9IGFjdGl2ZUxvYWRlci5jb250ZW50RmlsdGVyKCkpIHsKQEAgLTI1OSw2ICszMjUsNyBA
QCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KKyNlbmRpZgogCiBib29sIENvbnRlbnRGaWx0ZXI6OndpbGxIYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBjb25zdAogewpAQCAt
MjgzLDYgKzM1MCwxNSBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9h
CiAgICAgbV9jbGllbnQuaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50Rmls
dGVyKGJsb2NrZWRQYWdlVVJMKCksIHN1YnN0aXR1dGVEYXRhKTsKIH0KIAorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0
ZXI6OmRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2J1ZmZlcnMuc2l6ZSgpOyBpKyspCisgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURh
dGEoKm1fYnVmZmVyc1tpXS5idWZmZXIsIG1fYnVmZmVyc1tpXS5lbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgbV9idWZmZXJzLmNsZWFyKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCShyZXZpc2lvbiAyODY1OTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwyMyAr
NTAsMzYgQEAgY2xhc3MgQ29udGVudEZpbHRlciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFkZFR5cGUoKSB7IHR5cGVzKCkuYXBwZW5kKHR5cGU8VD4o
KSk7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gY3JlYXRl
KENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKLSAgICB+Q29udGVudEZpbHRlcigpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gY3JlYXRlKENv
bnRlbnRGaWx0ZXJDbGllbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+Q29udGVudEZpbHRlcigp
OwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNjaGVtZSgpIHsgcmV0dXJuICJ4LWFwcGxl
LWNvbnRlbnQtZmlsdGVyIjsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0RmlsdGVyaW5n
TWFpblJlc291cmNlKGNvbnN0IFVSTCYpOworI2Vsc2UKICAgICB2b2lkIHN0YXJ0RmlsdGVyaW5n
TWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7Ci0gICAgdm9pZCBzdG9wRmlsdGVyaW5n
TWFpblJlc291cmNlKCk7CisjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BGaWx0
ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAotICAgIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9v
bCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVz
b3VyY2VVUkwpOworI2Vsc2UKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CiAgICAgYm9vbCBjb250aW51ZUFmdGVyTm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wg
Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRlciYg
YWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgd2lsbEhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0OwotICAg
IHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAorICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGJsb2NrZWRF
cnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tlZEVycm9yOyB9CisgICAgYm9vbCBpc0FsbG93
ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkOyB9CisgICAgYm9v
bCByZXNwb25zZVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVJlY2VpdmVkOyB9
CisgICAgCiBwcml2YXRlOgogICAgIHVzaW5nIFN0YXRlID0gUGxhdGZvcm1Db250ZW50RmlsdGVy
OjpTdGF0ZTsKIApAQCAtODIsMTUgKzk1LDMxIEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQo
RnVuY3Rpb24mJik7CiAgICAgdm9pZCBkaWREZWNpZGUoU3RhdGUpOworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBkZWxpdmVyUmVz
b3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgdm9pZCBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CisjZWxzZQogICAgIHZvaWQg
ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYpOwotCisjZW5kaWYKKyAgICAKICAg
ICBDb250YWluZXIgbV9jb250ZW50RmlsdGVyczsKICAgICBDb250ZW50RmlsdGVyQ2xpZW50JiBt
X2NsaWVudDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIFVSTCBtX21haW5SZXNvdXJjZVVSTDsKKyAgICBzdHJ1Y3QgUmVzb3VyY2VEYXRh
SXRlbSB7CisgICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAg
ICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoOworICAgIH07CisgICAgCisgICAgVmVjdG9yPFJl
c291cmNlRGF0YUl0ZW0+IG1fYnVmZmVyczsKKyNlbHNlCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOworI2VuZGlmCiAgICAgY29uc3Qg
UGxhdGZvcm1Db250ZW50RmlsdGVyKiBtX2Jsb2NraW5nQ29udGVudEZpbHRlciB7IG51bGxwdHIg
fTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN0b3BwZWQgfTsKICAgICBSZXNvdXJjZUVy
cm9yIG1fYmxvY2tlZEVycm9yOwogICAgIGJvb2wgbV9pc0xvYWRpbmdCbG9ja2VkUGFnZSB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3Jlc3BvbnNlUmVjZWl2ZWQgeyBmYWxzZSB9OwogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3Rp
dHV0ZURhdGE7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAtNDEsNyArNDIsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90KSA9IDA7CisjZWxz
ZQogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCB1aW50OF90KiwgaW50KSA9IDA7CisjZW5kaWYKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikg
PSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZp
c2lvbiAyODY1OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MjAsNyArNDIwLDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6
aXNMb2FkaW5nKCkgY29uc3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRl
ciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQocmVzb3Vy
Y2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTcxMCw3ICs3MTAsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0
VVJMKFdURk1vdmUodXJsKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAh
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShuZXdSZXF1ZXN0KSk7CiAjZW5kaWYKQEAgLTkwOCw3ICs5MDgsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgQVNTRVJUKHJlc3BvbnNlLmNlcnRp
ZmljYXRlSW5mbygpKTsKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0
aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAo
bV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xMzI0LDcg
KzEzMjQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkCiAKIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+
Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpKQogICAgICAgICByZXR1cm47
CiAjZW5kaWYKQEAgLTE0NTIsNyArMTQ1Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFj
aEZyb21GcmFtZSgpCiAgICAgc3RvcExvYWRpbmcoKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2Ug
JiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291
cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlm
CkBAIC0yMDE0LDcgKzIwMTQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdN
YWluUmVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBtX2NvbnRlbnRGaWx0ZXIgPSAh
bV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgPyBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMp
IDogbnVsbHB0cjsKICNlbmRpZgogCkBAIC0yMjE2LDcgKzIyMTYsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhp
cykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYm
ICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlm
IChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmlu
Z01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMzQ3LDcgKzIzNDcsNyBAQCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IERvY3VtZW50TG9hCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmJl
Y29tZU1haW5SZXNvdXJjZUNsaWVudCgpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAg
ICAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSgqbV9tYWlu
UmVzb3VyY2UpOwogI2VuZGlmCkBAIC0yNDA0LDcgKzI0MDQsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1
ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoV1RGTW92ZShldmVudEluaXQpKTsKIH0KIAot
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCiB7CiAgICAgZGF0YVJlY2VpdmVkKGRhdGEsIHNp
emUpOwpAQCAtMjQxNSwxMiArMjQxNSwxOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxN
YWluUmVzb3VyY2VMCiAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7CiB9CiAKK1Jl
c291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIHJldHVybiBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxv
Y2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsK
K30KKwogdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZy
b21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRh
JiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBmcmFtZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJl
cXVlc3QoKmZyYW1lKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogfQorI2Vu
ZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAKLVJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2Fk
ZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5i
bG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKK1Jlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6Omhh
bmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5i
bG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewogICAg
IHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkpOwogICAgIGlm
ICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKQEAg
LTI0MzAsOCArMjQzNyw0MCBAQCBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250ZW50
RmlsCiAgICAgICAgIH0pOwogICAgIH0KICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5jb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIpKTsKLSAgICByZXR1
cm4gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7
CisgICAgYXV0byBlcnJvciA9IGZyYW1lTG9hZGVyKCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJF
cnJvcihyZXF1ZXN0KCkpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBtX2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIgPSB0cnVlOworICAg
IG1fYmxvY2tlZEVycm9yID0gZXJyb3I7CisjZW5kaWYKKworICAgIHJldHVybiBlcnJvcjsKK30K
Kwordm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
IHN1YnN0aXR1dGVEYXRhKQoreworICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVx
dWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CisKK2Jv
b2wgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHJldHVybiBtX2Jsb2NrZWRC
eUNvbnRlbnRGaWx0ZXIgJiYgbV9ibG9ja2VkRXJyb3IuZXJyb3JDb2RlKCkgPT0gZXJyb3IuZXJy
b3JDb2RlKCkgJiYgbV9ibG9ja2VkRXJyb3IuZG9tYWluKCkgPT0gZXJyb3IuZG9tYWluKCk7Cisj
ZWxzZQorICAgIHJldHVybiBtX2NvbnRlbnRGaWx0ZXIgJiYgbV9jb250ZW50RmlsdGVyLT53aWxs
SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisjZW5kaWYKK30KKwordm9pZCBE
b2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBVTlVTRURfUEFSQU0oZXJyb3IpOworI2Vs
c2UKKyAgICBpZiAobV9jb250ZW50RmlsdGVyKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworI2VuZGlmCit9CisKICNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEFj
dGl2ZUNvbnRlbnRSdWxlTGlzdEFjdGlvblBhdHRlcm5zKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8U3RyaW5nPj4mIHBhdHRlcm5zKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3Mg
RG9jdW1lbnRMb2FkZXIKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPgog
ICAgICwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVibGljIENvbnRl
bnRTZWN1cml0eVBvbGljeUNsaWVudAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICwgcHVibGljIENvbnRlbnRGaWx0ZXJDbGllbnQK
ICNlbmRpZgogICAgICwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CkBAIC0zODYs
MTAgKzM4NiwxNCBAQCBwdWJsaWM6CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSBjb25zdDsKIAogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBDb250ZW50RmlsdGVyKiBjb250ZW50RmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50RmlsdGVyLmdldCgpOyB9CiAgICAgdm9pZCByZWYoKSBj
b25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpyZWYoKTsgfQogICAgIHZv
aWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpkZXJl
ZigpOyB9CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGhhbmRsZUNv
bnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYm
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhh
bmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tl
ZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisjZW5kaWYKIAogICAgIHZvaWQgc3Rh
cnRJY29uTG9hZGluZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lz
aW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJik7CkBAIC00MzQsNiArNDM4LDExIEBA
IHB1YmxpYzoKICAgICBib29sIGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFs
TG9hZFN0YXJ0ZWQ7IH0KICAgICB2b2lkIHNldElzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lv
bmFsTG9hZFN0YXJ0ZWQoYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRT
dGFydGVkKSB7IG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCA9
IGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7IH0KIAorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKKyAgICBib29sIGNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBj
b250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVy
cm9yJik7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAK
QEAgLTQ4Niw3ICs0OTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2so
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkgZmluYWw7CkBAIC02MzgsNyArNjQ3LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyNlbHNlCisgICAgYm9vbCBtX2Jsb2NrZWRCeUNv
bnRlbnRGaWx0ZXIgeyBmYWxzZSB9OworICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7
CisjZW5kaWYKICNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTgsNyArMjQ1
OCw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKICAgICBtX3By
b3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0gcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlci51cmwoKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBhdXRvIGNv
bnRlbnRGaWx0ZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXIoKTsK
ICAgICBhdXRvIGNvbnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nID0gZmFsc2U7CiAjZW5k
aWYKIApAQCAtMjQ2Niw3ICsyNDY1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaQogICAgIGlmIChoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAg
IHdpbGxDb250aW51ZUxvYWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5nOjpZZXM7CiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChjb250ZW50RmlsdGVyICYmIGNvbnRlbnRG
aWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSkgeworICAgIGlm
IChwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShlcnJvcikpIHsKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9
IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsKICAgICAgICAgY29udGVudEZpbHRlcldpbGxDb250
aW51ZUxvYWRpbmcgPSB0cnVlOwogICAgIH0KQEAgLTI0NzYsNyArMjQ3NSw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAoY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcpCi0gICAg
ICAgIGNvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwor
ICAgICAgICBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKICNlbmRpZgogCiAgICAgbV9wcm92aXNpb25hbExv
YWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAgICBhdXRvJiBzdWJz
dGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBpZiAoc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBpZiAoYXV0
byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAg
ICAgICAgICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJz
dGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAkocmV2aXNpb24gMjg2NTk2KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDcgKzU5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLnRleHRFbmNvZGlu
Z05hbWUoKTsgfQogICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVy
biBtX2ZhaWxpbmdVUkw7IH0KICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgICAgIAorCisgICAgICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgU3Vic3RpdHV0ZURhdGEmKTsKKwogICAgIHByaXZhdGU6CiAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGVudDsKICAgICAgICAgVVJMIG1fZmFpbGlu
Z1VSTDsKQEAgLTY3LDQgKzcwLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Vz
c2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAgICAgfTsKIAordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgU3Vic3RpdHV0ZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9jb250ZW50IDw8IG1fZmFpbGluZ1VSTCA8PCBt
X3Jlc3BvbnNlIDw8IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeTsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgU3Vic3RpdHV0ZURhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEubV9jb250ZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhLm1fZmFpbGluZ1VSTCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX3Jlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fc2hvdWxkUmV2ZWFsVG9T
ZXNzaW9uSGlzdG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVl
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg2
NTk2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw0MCBAQAorMjAyMS0xMi0wNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5nIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc2MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyBmcm9tIHRo
ZSBEb2N1bWVudExvYWRlciBjbGFzcyBpbiB0aGUgV2ViUHJvY2VzcyB0byB0aGUgTmV0d29ya1Jl
c291cmNlTG9hZGVyIGNsYXNzIGluIHRoZQorICAgICAgICBOZXR3b3JraW5nIHByb2Nlc3MuIFRo
ZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgaXMgbm93IGEgY2xpZW50IG9mIHRoZSBjb250ZW50IGZp
bHRlciwgYW5kIHdpbGwgc2VuZCBtZXNzYWdlcworICAgICAgICB0byB0aGUgRG9jdW1lbnRMb2Fk
ZXIgaW4gdGhlIFdlYlByb2Nlc3MgdG8gY2FuY2VsIHRoZSBsb2FkIHdoZW4gdGhlIGNvbnRlbnQg
ZmlsdGVyIGRlY2lkZWQgdG8gYmxvY2sgdGhlIGxvYWQuCisgICAgICAgIElmIHRoZSBjb250ZW50
IGZpbHRlciBpcyBwcm92aWRpbmcgcmVwbGFjZW1lbnQgZGF0YSwgdGhpcyB3aWxsIGFsc28gYmUg
c2VudCBvdmVyIElQQyB0byB0aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgRGF0YSBpcyBub3QgYmVp
bmcgc2VudCB0byB0aGUgV2ViUHJvY2VzcyB1bnRpbCB0aGUgY29udGVudCBmaWx0ZXIgaGFzIGRl
Y2lkZWQgdG8gYWxsb3cgdGhlIGxvYWQsIGlmIGNvbnRlbnQKKyAgICAgICAgZmlsdGVyaW5nIGlz
IGVuYWJsZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2UpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRU
aHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3hjc2hh
cmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorCiAyMDIxLTEyLTA3ICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1
cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2
NTk2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxMSBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUHJldmlld0NvbnZlcnRlci5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZp
bHRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg+
CisjZW5kaWYKKwogI2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0Vf
TE9HKE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUlu
dDY0KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRl
cnMub3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykK
ICNkZWZpbmUgTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0l
IiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwg
aXNNYWluUmVzb3VyY2U9JWQsIGRlc3RpbmF0aW9uPSV1LCBpc1N5bmNocm9ub3VzPSVkXSBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJ
bnQ2NCgpLCBpc01haW5SZXNvdXJjZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wYXJhbWV0
ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24pLCBpc1N5bmNocm9ub3VzKCksICMjX19WQV9BUkdTX18p
CiAKQEAgLTE4Nyw4ICsxOTIsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
KCkKICAgICBBU1NFUlQoIW1fd2FzU3RhcnRlZCk7CiAgICAgbV93YXNTdGFydGVkID0gdHJ1ZTsK
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgYXV0byBuZXdSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkg
fTsKKyAgICBzdGFydENvbnRlbnRGaWx0ZXJpbmcobmV3UmVxdWVzdCk7CisjZW5kaWYKKwogICAg
IGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikgewotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tl
ci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfSwgdGhpcywgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChhdXRvJiYgcmVzdWx0KSB7CisgICAg
ICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1
ZXN0IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoYXV0byYm
IHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTIxNywxMyArMjI3LDI1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGF0IGNvZGUgcGF0aCBvbmNlIG1fbmV0d29ya0xvYWRDaGVja2VyIGlzIHVzZWQgZm9yIGFsbCBu
ZXR3b3JrIGxvYWRzLgotICAgIGlmIChjYW5Vc2VDYWNoZShvcmlnaW5hbFJlcXVlc3QoKSkpIHsK
KyAgICBpZiAoY2FuVXNlQ2FjaGUobmV3UmVxdWVzdCkpIHsKICAgICAgICAgcmV0cmlldmVDYWNo
ZUVudHJ5KG9yaWdpbmFsUmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfSwg
Rmlyc3RMb2FkOjpZZXMpOworICAgIHN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0IHsg
bmV3UmVxdWVzdCB9LCBGaXJzdExvYWQ6Olllcyk7Cit9CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7Cisg
ICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZW50
RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBpZiAoIW1fY29udGVu
dEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlKCkpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZp
bHRlcmluZ01haW5SZXNvdXJjZShyZXF1ZXN0LnVybCgpKTsKIH0KKyNlbmRpZgogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKQEAgLTcwNCw2ICs3MjYsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVj
ZWl2ZVJlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIE1JTUVUeXBlPSUiIFBVQkxJQ19MT0df
U1RSSU5HICIsIGV4cGVjdGVkQ29udGVudExlbmd0aD0lIiBQUklkNjQgIiwgaGFzQ2FjaGVkRW50
cnlGb3JWYWxpZGF0aW9uPSVkLCBoYXNOZXR3b3JrTG9hZENoZWNrZXI9JWQpIiwgcmVjZWl2ZWRS
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLm1pbWVUeXBlKCkudXRm
OCgpLmRhdGEoKSwgcmVjZWl2ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSwgISFt
X2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uLCAhIW1fbmV0d29ya0xvYWRDaGVja2VyKTsKIAorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYg
KG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9u
c2VSZWNlaXZlZChyZWNlaXZlZFJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyNlbmRpZgorCiAgICAgaWYgKGlzTWFpblJl
c291cmNlKCkpCiAgICAgICAgIGRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZShyZWNlaXZl
ZFJlc3BvbnNlKTsKIApAQCAtOTE1LDYgKzk0MiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hCiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFs
dWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgogICAgICAgICAgICAg
c2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKICAgICAgICAgfQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRl
ck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAg
IG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOworICAgICAgICB9
CisjZW5kaWYKKwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
RmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KIApAQCAtMTAw
NCw2ICsxMDM4LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGkK
ICAgICBpZiAoIW1fZmlyc3RSZXNwb25zZVVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIG1fZmlyc3RS
ZXNwb25zZVVSTCA9IHJlZGlyZWN0UmVzcG9uc2UudXJsKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1
ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE7CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7CiAgICAgICAgIGlmIChh
dXRvIHJlc3VsdCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJp
YnV0aW9uUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QudXJsKCkpKSB7CkBAIC0xMjYyLDcgKzEzMDEs
MTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbQogICAgIGlmICht
X2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERh
dGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIGJvb2wgc2hvdWxk
RmlsdGVyID0gZmFsc2U7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICBzaG91bGRGaWx0ZXIgPSBtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCgqbV9idWZmZXJlZERhdGEuZ2V0
KCksIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpOworI2VuZGlmCisgICAgaWYgKCFz
aG91bGRGaWx0ZXIpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWRE
YXRhTGVuZ3RoKSk7CiAKICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CkBAIC0xMjcyLDYg
KzEzMTYsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoUwogewog
ICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAh
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlciB9LCBlbmNvZGVk
RGF0YUxlbmd0aCkpOwogfQogCkBAIC0xMzE4LDYgKzEzNjcsMTEgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQwogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmV0
cmlldmVDYWNoZUVudHJ5OiIpOwogICAgIGF1dG8gcmVzcG9uc2UgPSBlbnRyeS0+cmVzcG9uc2Uo
KTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5yZXNwb25zZVJl
Y2VpdmVkKCkgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2
ZWQocmVzcG9uc2UpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGlmIChpc01haW5S
ZXNvdXJjZSgpKQogICAgICAgICBkaWRSZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVzcG9u
c2UpOwogCkBAIC0xMzY4LDYgKzE0MjIsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNlbmRSZXN1bHRGbwogICAgIExPQURFUl9SRUxFQVNFX0xPRygic2VuZFJlc3VsdEZvckNhY2hl
RW50cnk6Iik7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBpZiAoIWVudHJ5
LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpLmlzTnVsbCgpKSB7CisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1fY29udGVu
dEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKCpl
bnRyeS0+YnVmZmVyKCksIGVudHJ5LT5idWZmZXIoKS0+c2l6ZSgpKSkgeworICAgICAgICAgICAg
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJz
LnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVy
aW5nTWFpblJlc291cmNlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRp
ZgogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJl
c291cmNlKGVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xMzkxLDYgKzE0NTIsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlbmRSZXN1bHRGbwogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlEZWNv
ZGVkU2l6ZSA9IDA7CiAKICAgICBzZW5kQnVmZmVyKCplbnRyeS0+YnVmZmVyKCksIGVudHJ5LT5i
dWZmZXIoKS0+c2l6ZSgpKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoKTsKKyAgICB9CisjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogfQogCkBA
IC0xNzA3LDYgKzE3NzQsMzYgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQXBwSW5p
dGlhdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpOwog
fQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
K3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3Ro
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0
YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKSk7Cit9CisKK1dlYkNvcmU6OlJlc291cmNlRXJy
b3IgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250
ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworfQorCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9jb250ZW50RmlsdGVyKTsKKyAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUoZXJyb3IpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sK
KyAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOworICAgIGVsc2Ugewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOworICAgICAgICBhdXRvJiBl
cnJvciA9IG1fY29udGVudEZpbHRlci0+YmxvY2tlZEVycm9yKCk7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlcihlcnJvcikpOworICAgIH0KK30KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I3VuZGVmIExPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODY1OTYp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0xvYWRD
bGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9Db250ZW50RmlsdGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJp
dHlQb2xpY3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAg
LTQzLDYgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlOworY2xhc3MgQ29udGVudEZpbHRlcjsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3Mg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNzAsNiAr
NzIsOSBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKICAgICAsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lDbGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0Rpc2FibGVyCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50RmlsdGVyQ2xpZW50Cisj
ZW5kaWYKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRl
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmIHJlcGx5
ID0gbnVsbHB0cikKQEAgLTkwLDcgKzk1LDcgQEAgcHVibGljOgogICAgIC8vIE1lc3NhZ2UgaGFu
ZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotICAgIHZvaWQgY29udGludWVXaWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBp
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CisgICAgdm9pZCBjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBpc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFscyk7CiAKICAgICB2b2lkIHNldFJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyBtX3Jlc3BvbnNlID0gV1RGTW92ZShyZXNwb25z
ZSk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KQEAgLTE1MSw2ICsxNTYsMTEgQEAgcHVibGljOgog
CiAgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsg
UmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+OjpyZWYoKTsgfQorICAgIHZvaWQgZGVy
ZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPjo6ZGVy
ZWYoKTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3lu
Y2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYpOwogCkBAIC0xNTgsNiArMTY4LDE0IEBAIHByaXZh
dGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKTsg
fQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CisgICAgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdo
Q29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBzaXplX3QpIGZpbmFs
OworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNv
bnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZv
aWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVS
TCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CisjZW5k
aWYKKwogICAgIGJvb2wgY2FuVXNlQ2FjaGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JikgY29uc3Q7CiAgICAgYm9vbCBjYW5Vc2VDYWNoZWRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIApAQCAtMjE2LDYgKzIzNCwxMCBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvKCk7CiAKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgc3RhcnRD
b250ZW50RmlsdGVyaW5nKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworI2VuZGlmCisKICAg
ICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAKICAg
ICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlvbjsKQEAgLTI1
OSw2ICsyODEsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVkaXJlY3RSZXNwb25zZTsKICAgICBVUkwgbV9maXJzdFJlc3BvbnNlVVJMOyAvLyBGaXJzdCBV
UkwgaW4gcmVzcG9uc2UncyBVUkwgbGlzdCAoaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcv
I2NvbmNlcHQtcmVzcG9uc2UtdXJsLWxpc3QpLgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4gbV9jdXJyZW50Q29vcEVu
Zm9yY2VtZW50UmVzdWx0OworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEZpbHRl
cj4gbV9jb250ZW50RmlsdGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIyLDYgKzMyMiwyOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIGlmICgh
bV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRl
bnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCkpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVz
b3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKK30KKwordm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVy
KGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRh
JiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNv
bnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0
dXRlRGF0YSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODY1OTYpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1N1YnN0aXR1dGVEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQyLDYgKzQzLDcgQEAgY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAgLTkzLDYgKzk1LDEyIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYp
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3Jl
OjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZp
bHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBoYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRpZgorICAgIAogICAg
IFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9hZGVyOwogICAgIFRyYWNr
aW5nUGFyYW1ldGVycyBtX3RyYWNraW5nUGFyYW1ldGVyczsKICAgICBXZWJSZXNvdXJjZUludGVy
Y2VwdENvbnRyb2xsZXIgbV9pbnRlcmNlcHRDb250cm9sbGVyOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NjU5NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw0ICszNywxMSBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lS
ZWNlCiAgICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlzIGZvciB3aGVuIHdlIGhhdmUgdGhlIGVu
dGlyZSByZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBvbmNlLCBzdWNoIGFzIHdoZW4gdGhlIHJl
c291cmNlIGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBEaWRSZWNlaXZlUmVzb3VyY2UoV2ViS2l0
OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlKQogI2VuZGlmCisKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIENvbnRlbnRG
aWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisgICAgQ2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvcikKKyAgICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0
ZXIoVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRl
RGF0YSkKKyNlbmRpZgorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446577</attachid>
            <date>2021-12-09 11:34:20 -0800</date>
            <delta_ts>2021-12-09 12:53:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211209203418.patch</filename>
            <type>text/plain</type>
            <size>49551</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFIG1h
Y3JvIGZvciBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29ya2luZyBwcm9jZXNzLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaDoKKwogMjAyMS0xMi0wOSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIDpmb2N1cy12aXNp
YmxlIHBzZXVkby1jbGFzcyBieSBkZWZhdWx0CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGVDb2NvYS5oCShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsMTIgQEAKICNkZWZpbmUg
RU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HIDEKICNlbmRpZgogCisjaWYgKChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSBcCisgICAgfHwg
KFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYw
MDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gOTAwMDApKQorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORworI2VuZGlmCisK
ICNpZiAhZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNkZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0xMi0wMiAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3
b3JraW5nIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3MDI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNvbnRlbnQg
ZmlsdGVyaW5nIGZyb20gRG9jdW1lbnRMb2FkZXIgd2hlbiB0aGUgZmVhdHVyZSBpcyBlbmFibGVk
LCBzaW5jZSB0aGlzIHRha2VzIHBsYWNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAg
ICAgIE1vZGlmeSB0aGUgQ29udGVudEZpbHRlciBjbGFzcyBieSByZW1vdmluZyB1c2Ugb2YgdGhl
IHR5cGVzIENhY2hlZFJlc291cmUgYW5kIENhY2hlZFJhd1Jlc291cmNlLCBzaW5jZSBvYmplY3Rz
IG9mIHRoZXNlCisgICAgICAgIHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoZSBOZXR3b3Jr
aW5nIHByb2Nlc3MuIFBhcmFtZXRlcnMgd2l0aCB0aGVzZSB0eXBlcyBhcmUgcmVwbGFjZWQgd2l0
aCBVUkwgcGFyYW1ldGVycy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250
ZW50RmlsdGVyVW50aWxCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVz
b3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJCdWZm
ZXJzKToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJs
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50Rmls
dGVyRGlkQmxvY2spOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKwogMjAyMS0xMi0wOSAgQWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBBZGQgc3VwcG9ydCBmb3Ig
ZW1wdHkgYmlkaSBpbmxpbmUgYm94ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4Njc4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMzMyMyw3ICszMzIzLDcgQEAKIAkJQTE0ODMyQ0MxODdGNjdDNDAwREE2M0E2IC8qIFdl
YkNvcmVUaHJlYWRSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNDgzMjlFMTg3RjUwODcwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkUnVuLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0ODMyQ0Yx
ODdGNjg0NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMkExMTg3RjUwODcw
MERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTFEQTMxRjg1OUQ4NzAwOTVG
NUQ0IC8qIFBheW1lbnRTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTQ5MURBMjFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24u
aCAqLzsgfTsKLQkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFC
QUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IH07CisJCUExNDk3ODZGMUFCQUYz
MzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZp
bHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUExNDk3ODcxMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODcwMUFCQUYz
QTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTRCQjBBMDFGOTgxM0I4MDA2MDVBMzUg
LyogTW9ja1BheW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNEJCMDlFMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovOyB9Owog
CQlBMTVENzUxNjFFNjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxMzFFNjhGN0IxMDBBMzVG
QkMgLyogQmxvYkNhbGxiYWNrLmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTggQEAg
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyV2lsbFNlbgogICAgIHJldHVybiAhcmVx
dWVzdC5pc051bGwoKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJl
c291cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9w
cGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwg
dXJsLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkZpbHRl
cmluZzsKKyAgICBBU1NFUlQobV9tYWluUmVzb3VyY2VVUkwuaXNFbXB0eSgpKTsKKyAgICBtX21h
aW5SZXNvdXJjZVVSTCA9IHVybDsKK30KKyNlbHNlCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0
RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJiByZXNvdXJjZSkKIHsKICAg
ICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTEyMywxMiArMTM1LDE3IEBAIHZv
aWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NFUlQoIW1fbWFp
blJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0KKyNlbmRpZgog
CiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKQogewogICAg
IGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICBtX3N0YXRlID0gU3RhdGU6
OlN0b3BwZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICBtX21haW5SZXNvdXJjZVVSTCA9IFVSTCgpOworI2Vsc2UKICAgICBtX21haW5S
ZXNvdXJjZSA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKQEAgLTE0MiwxNCArMTU5LDMxIEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
clJlc3BvbnMKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgbV9yZXNwb25zZVJlY2VpdmVkID0g
dHJ1ZTsKKwogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK2Jvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIGJvb2wgQ29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQorI2VuZGlmCiB7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3Rl
ZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVy
aW5nKSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVk
ICV6dSBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGVuY29kZWREYXRhTGVuZ3RoLCBtX21h
aW5SZXNvdXJjZVVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGZvckVhY2hD
b250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtidWZmZXIgPSBSZWYgeyBidWZmZXIgfV0oUGxhdGZv
cm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50Rmls
dGVyLmFkZERhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CisgICAgICAgICAgICBk
ZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VE
YXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIG1fYnVmZmVycy5hcHBlbmQoUmVzb3VyY2VEYXRhSXRlbSB7IFJlZlB0ciB7ICZidWZmZXIg
fSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisjZWxzZQogICAgICAgICBMT0coQ29udGVudEZpbHRl
cmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4u
XG4iLCBsZW5ndGgsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhLCBsZW5n
dGhdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAgICAg
Y29udGVudEZpbHRlci5hZGREYXRhKGRhdGEsIGxlbmd0aCk7CkBAIC0xNTcsMjkgKzE5MSw0NSBA
QCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAKICAgICAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpCiAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VE
YXRhKCptX21haW5SZXNvdXJjZSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK2Jvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VV
UkwpCisjZWxzZQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQorI2VuZGlmCiB7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBSZWY8Q29udGVu
dEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLQorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWluUmVzb3VyY2VVUkwpOworI2Vs
c2UKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3Vy
Y2UpOwogICAgIGlmIChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbmRpZgogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmlu
ZykgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlz
aCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVzb3VyY2VVUkwu
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworI2Vsc2UKICAgICAgICAgTE9HKENvbnRlbnRGaWx0
ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNl
IGF0IDwlcz4uXG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCkpOworI2VuZGlmCiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtd
KFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAgICAgY29u
dGVudEZpbHRlci5maW5pc2hlZEFkZGluZ0RhdGEoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
aWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpIHsKICAgICAgICAgICAgIG1fc3RhdGUgPSBT
dGF0ZTo6QWxsb3dlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworI2Vs
c2UKICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNl
bmRpZgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQp
CkBAIC0yMTksNyArMjY5LDE0IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRl
IHN0YXQKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJU
KG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpOwogICAgIEFTU0VSVChzdGF0ZSA9PSBTdGF0ZTo6
QWxsb3dlZCB8fCBzdGF0ZSA9PSBTdGF0ZTo6QmxvY2tlZCk7Ci0gICAgTE9HKENvbnRlbnRGaWx0
ZXJpbmcsICJDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4g
cmVzb3VyY2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQi
IDogImJsb2NrZWQiLCBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSA6ICIiKTsKKyNpZiAhTE9HX0RJU0FCTEVECisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBjb25zdCBTdHJp
bmcmIHVybFN0cmluZyA9IG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpOworI2Vsc2UKKyAgICBj
b25zdCBTdHJpbmcmIHVybFN0cmluZyA9IG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3VyY2Ut
PnVybCgpLnN0cmluZygpIDogZW1wdHlTdHJpbmcoKTsKKyNlbmRpZgorICAgIExPRyhDb250ZW50
RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZvciBt
YWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxv
d2VkIiA6ICJibG9ja2VkIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKKyNlbmRpZiAvLyAh
TE9HX0RJU0FCTEVECiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogICAgIGlmIChtX3N0YXRlICE9IFN0
YXRlOjpCbG9ja2VkKQogICAgICAgICByZXR1cm47CkBAIC0yMjgsMTIgKzI4NSwyMCBAQCB2b2lk
IENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiAgICAgbV9jbGllbnQuY2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIobV9ibG9ja2VkRXJyb3IpOwogfQogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQg
Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRl
cjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYK
IHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBtX2NsaWVudC5kYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsK
KyNlbHNlCiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZm
ZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQogICAgICAgICBtX2NsaWVudC5kYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJj
ZUJ1ZmZlci0+c2l6ZSgpKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCgpCkBAIC0yNDUsNiArMzEwLDcgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBh
Z2VVUkwoKQogICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsKIH0KIAorI2lmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVy
JiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsK
ICAgICBpZiAoYXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIo
KSkgewpAQCAtMjU5LDYgKzMyNSw3IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
clN1YnN0aXQKIAogICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIGJvb2wgQ29udGVudEZp
bHRlcjo6d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIGNvbnN0CiB7CkBAIC0yODMsNiArMzUwLDE1IEBAIHZvaWQgQ29udGVudEZpbHRl
cjo6aGFuZGxlUHJvdmlzaW9uYWxMb2EKICAgICBtX2NsaWVudC5oYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwoKSwgc3Vic3RpdHV0ZURh
dGEpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYnVmZmVycy5zaXplKCk7IGkrKykKKyAg
ICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9idWZmZXJzW2ldLmJ1ZmZlciwgbV9idWZmZXJz
W2ldLmVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2J1ZmZlcnMuY2xlYXIoKTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlz
aW9uIDI4Njc4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDIzICs1MCwzNiBAQCBjbGFzcyBDb250ZW50RmlsdGVyIHsKIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgYWRkVHlwZSgpIHsg
dHlwZXMoKS5hcHBlbmQodHlwZTxUPigpKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYpOwotICAgIH5Db250
ZW50RmlsdGVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIH5Db250ZW50RmlsdGVyKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogdXJsU2No
ZW1lKCkgeyByZXR1cm4gIngtYXBwbGUtY29udGVudC1maWx0ZXIiOyB9CiAKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJik7CisjZWxzZQog
ICAgIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmKTsK
LSAgICB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyNlbmRpZgorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogCi0gICAgYm9vbCBj
b250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVl
QWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlclJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250
aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVSTCk7CisjZWxzZQogICAgIGJvb2wgY29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAg
ICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpOworI2Vu
ZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0
KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRh
Jik7CiAgICAgYm9vbCB3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNv
dXJjZUVycm9yJikgY29uc3Q7Ci0gICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCisgICAgY29uc3Qg
UmVzb3VyY2VFcnJvciYgYmxvY2tlZEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2VkRXJy
b3I7IH0KKyAgICBib29sIGlzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQ7IH0KKyAgICBib29sIHJlc3BvbnNlUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlUmVjZWl2ZWQ7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgdXNpbmcgU3RhdGUg
PSBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI6OlN0YXRlOwogCkBAIC04MiwxNSArOTUsMzEgQEAgcHJp
dmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCBmb3JFYWNoQ29u
dGVudEZpbHRlclVudGlsQmxvY2tlZChGdW5jdGlvbiYmKTsKICAgICB2b2lkIGRpZERlY2lkZShT
dGF0ZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURh
dGEoKTsKKyNlbHNlCiAgICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNl
Jik7Ci0KKyNlbmRpZgorICAgIAogICAgIENvbnRhaW5lciBtX2NvbnRlbnRGaWx0ZXJzOwogICAg
IENvbnRlbnRGaWx0ZXJDbGllbnQmIG1fY2xpZW50OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVVJMIG1fbWFpblJlc291cmNlVVJMOwor
ICAgIHN0cnVjdCBSZXNvdXJjZURhdGFJdGVtIHsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGg7CisgICAg
fTsKKyAgICAKKyAgICBWZWN0b3I8UmVzb3VyY2VEYXRhSXRlbT4gbV9idWZmZXJzOworI2Vsc2UK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3Vy
Y2U7CisjZW5kaWYKICAgICBjb25zdCBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdD
b250ZW50RmlsdGVyIHsgbnVsbHB0ciB9OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3Rv
cHBlZCB9OwogICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CiAgICAgYm9vbCBtX2lz
TG9hZGluZ0Jsb2NrZWRQYWdlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVzcG9uc2VSZWNlaXZl
ZCB7IGZhbHNlIH07CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNpb24gMjg2Nzg2KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQ29udGVudEZpbHRlckNs
aWVudCB7CkBAIC00MSw3ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZm
ZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyNlbmRpZgogICAg
IHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRl
cihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4Njc4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw3ICs0MjAsNyBA
QCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExv
YWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
ICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAt
NzEwLDcgKzcxMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMK
ICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RGTW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTA4
LDcgKzkwOCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAg
ICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5k
bGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1
cm47CiAjZW5kaWYKQEAgLTEzMjQsNyArMTMyNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRl
ciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEsIGxl
bmd0aCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTQ1Miw3ICsxNDUyLDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKICAgICBzdG9wTG9hZGluZygpOwog
ICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlz
KSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYg
KG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5n
TWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIwMTQsNyArMjAxNCw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
ICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRl
bnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOwogI2VuZGlmCiAKQEAgLTIyMTYsNyAr
MjIxNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5S
ZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92
ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIzNDcs
NyArMjM0Nyw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnRMb2EKIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKIHsKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBp
ZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVy
aW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5kaWYKQEAgLTI0MDQsNyArMjQw
NCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXVEZN
b3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRU
aHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAg
ICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CkBAIC0yNDE1LDEyICsyNDE1LDE5IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUwKICAgICBjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkKGVycm9yKTsKIH0KIAorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVu
dEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxl
ciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgcmV0dXJuIGhh
bmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGZyYW1lTG9h
ZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1
YnN0aXR1dGVEYXRhKSk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIAotUmVz
b3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorUmVzb3VyY2VF
cnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpCiB7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwo
ZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0Vt
cHR5KCkgJiYgZnJhbWUoKSkgewpAQCAtMjQzMCw4ICsyNDM3LDQwIEBAIFJlc291cmNlRXJyb3Ig
RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWwKICAgICAgICAgfSk7CiAgICAgfQogICAgIGZyYW1l
TG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJs
b2NrSGFuZGxlcikpOwotICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50
RmlsdGVyRXJyb3IocmVxdWVzdCgpKTsKKyAgICBhdXRvIGVycm9yID0gZnJhbWVMb2FkZXIoKS0+
YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fYmxvY2tlZEJ5Q29u
dGVudEZpbHRlciA9IHRydWU7CisgICAgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsKKyNlbmRpZgor
CisgICAgcmV0dXJuIGVycm9yOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250
ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgZnJhbWVMb2Fk
ZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vi
c3RpdHV0ZURhdGEpKTsKIH0KKworYm9vbCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlcldp
bGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5l
cnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4o
KSA9PSBlcnJvci5kb21haW4oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAm
JiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KTsKKyNlbmRpZgorfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCisgICAg
ICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7
CisjZW5kaWYKK30KKwogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogdm9p
ZCBEb2N1bWVudExvYWRlcjo6c2V0QWN0aXZlQ29udGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMo
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PiYgcGF0dGVybnMpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjg2Nzg2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0OSw3ICsxNDksNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDogcHVibGljIFJlZkNv
dW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLCBwdWJs
aWMgQ29udGVudEZpbHRlckNsaWVudAogI2VuZGlmCiAgICAgLCBwcml2YXRlIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50IHsKQEAgLTM4NiwxMCArMzg2LDE0IEBAIHB1YmxpYzoKICAgICBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3Bh
Z2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIENvbnRlbnRG
aWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGaWx0ZXIuZ2V0
KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExv
YWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRl
ZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JU
IFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZh
aWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsK
KyNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90
IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYm
KTsKQEAgLTQzNCw2ICs0MzgsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb250aW51aW5nTG9h
ZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb250aW51
aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZDsgfQogICAgIHZvaWQgc2V0SXNDb250
aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZChib29sIGlzQ29udGludWluZ0xv
YWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpIHsgbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQ
cm92aXNpb25hbExvYWRTdGFydGVkID0gaXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxM
b2FkU3RhcnRlZDsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorICAgIGJvb2wg
Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAg
V0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmKTsKIApAQCAtNDg2LDcgKzQ5NSw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9y
IGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmlu
ZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKQEAgLTYzOCw3ICs2NDcsMTIg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOworI2Vsc2UK
KyAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciB7IGZhbHNlIH07CisgICAgUmVzb3Vy
Y2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24g
Mjg2Nzg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ1OCw3ICsyNDU4LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaQogICAgIG1fcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwg
PSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLnVybCgpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQotICAgIGF1dG8gY29udGVudEZpbHRlciA9IHByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIuY29udGVudEZpbHRlcigpOwogICAgIGF1dG8gY29udGVudEZpbHRlcldpbGxDb250aW51
ZUxvYWRpbmcgPSBmYWxzZTsKICNlbmRpZgogCkBAIC0yNDY2LDcgKzI0NjUsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAgICAgaWYgKGhpc3RvcnkoKS5wcm92
aXNpb25hbEl0ZW0oKSkKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdpbGxDb250aW51
ZUxvYWRpbmc6OlllczsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKGNv
bnRlbnRGaWx0ZXIgJiYgY29udGVudEZpbHRlci0+d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmUoZXJyb3IpKSB7CisgICAgaWYgKHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuY29udGVu
dEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSkgewogICAgICAg
ICB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENvbnRpbnVlTG9hZGluZzo6WWVzOwogICAgICAg
ICBjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZyA9IHRydWU7CiAgICAgfQpAQCAtMjQ3
Niw3ICsyNDc1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChjb250ZW50RmlsdGVyV2ls
bENvbnRpbnVlTG9hZGluZykKLSAgICAgICAgY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Y29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogI2VuZGlm
CiAKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0geyB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gMjg2Nzg2
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6
Y2hlY2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbG9hZGVyLT5zdWJzdGl0dXRlRGF0
YSgpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgIXN1YnN0aXR1dGVEYXRh
LmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgYm9vbCBzaG91bGRDb250aW51ZSA9
IHRydWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiAgICAgICAgIGlmIChhdXRvIGxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gQ29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdCgqbG9hZGVyLCBzdWJzdGl0
dXRlRGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRl
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0
YS5oCShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0IFVSTCYgZmFp
bGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAgICBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0K
LSAgICAgICAgCisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBTdWJzdGl0dXRlRGF0YSYp
OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50
OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwpAQCAtNjcsNCArNzAsMjggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZl
YWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsK
ICAgICB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTdWJzdGl0dXRlRGF0YTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2NvbnRl
bnQgPDwgbV9mYWlsaW5nVVJMIDw8IG1fcmVzcG9uc2UgPDwgbV9zaG91bGRSZXZlYWxUb1Nlc3Np
b25IaXN0b3J5OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBTdWJzdGl0dXRl
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN1YnN0aXR1dGVEYXRhJiBkYXRhKQorewor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX2NvbnRlbnQpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9mYWlsaW5nVVJMKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fcmVz
cG9uc2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEubV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEyLTA2ICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5n
IHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNv
bnRlbnQgZmlsdGVyaW5nIGZyb20gdGhlIERvY3VtZW50TG9hZGVyIGNsYXNzIGluIHRoZSBXZWJQ
cm9jZXNzIHRvIHRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgY2xhc3MgaW4gdGhlCisgICAgICAg
IE5ldHdvcmtpbmcgcHJvY2Vzcy4gVGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBpcyBub3cgYSBj
bGllbnQgb2YgdGhlIGNvbnRlbnQgZmlsdGVyLCBhbmQgd2lsbCBzZW5kIG1lc3NhZ2VzCisgICAg
ICAgIHRvIHRoZSBEb2N1bWVudExvYWRlciBpbiB0aGUgV2ViUHJvY2VzcyB0byBjYW5jZWwgdGhl
IGxvYWQgd2hlbiB0aGUgY29udGVudCBmaWx0ZXIgZGVjaWRlZCB0byBibG9jayB0aGUgbG9hZC4K
KyAgICAgICAgSWYgdGhlIGNvbnRlbnQgZmlsdGVyIGlzIHByb3ZpZGluZyByZXBsYWNlbWVudCBk
YXRhLCB0aGlzIHdpbGwgYWxzbyBiZSBzZW50IG92ZXIgSVBDIHRvIHRoZSBXZWJQcm9jZXNzLgor
ICAgICAgICBEYXRhIGlzIG5vdCBiZWluZyBzZW50IHRvIHRoZSBXZWJQcm9jZXNzIHVudGlsIHRo
ZSBjb250ZW50IGZpbHRlciBoYXMgZGVjaWRlZCB0byBhbGxvdyB0aGUgbG9hZCwgaWYgY29udGVu
dAorICAgICAgICBmaWx0ZXJpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJl
Y3RSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVm
ZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2VuZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VuZFJlc3VsdEZvckNhY2hlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNzY2hlbWU6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisKIDIw
MjEtMTItMDkgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJB
dXRobl0gUmVtb3ZlIHVzZXIgZ2VzdHVyZSByZXF1aXJlbWVudCBmb3IgdXNpbmcgcGxhdGZvcm0g
YXV0aGVudGljYXRvciBvbiB0aGUgd2ViCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODY3
ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9QcmV2aWV3Q29udmVydGVyLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50Rmls
dGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4K
KyNlbmRpZgorCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9M
T0coTmV0d29yaywgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIg
UFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlPSVkLCBkZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29y
a1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50
NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVy
cy5vcHRpb25zLmRlc3RpbmF0aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQog
I2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VS
Uk9SKE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUlu
dDY0KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRl
cnMub3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykK
IApAQCAtMTg3LDggKzE5MiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQo
KQogICAgIEFTU0VSVCghbV93YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwog
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBhdXRvIG5ld1JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9
OworICAgIHN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KTsKKyNlbmRpZgorCiAgICAg
aWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7Ci0gICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2Vy
LT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCB0aGlzLCBbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKKyAgICAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVl
c3QgfSwgdGhpcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChhdXRvJiYg
cmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMjE3LDEzICsyMjcsMjUgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
YXQgY29kZSBwYXRoIG9uY2UgbV9uZXR3b3JrTG9hZENoZWNrZXIgaXMgdXNlZCBmb3IgYWxsIG5l
dHdvcmsgbG9hZHMuCi0gICAgaWYgKGNhblVzZUNhY2hlKG9yaWdpbmFsUmVxdWVzdCgpKSkgewor
ICAgIGlmIChjYW5Vc2VDYWNoZShuZXdSZXF1ZXN0KSkgewogICAgICAgICByZXRyaWV2ZUNhY2hl
RW50cnkob3JpZ2luYWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCBG
aXJzdExvYWQ6Olllcyk7CisgICAgc3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBu
ZXdSZXF1ZXN0IH0sIEZpcnN0TG9hZDo6WWVzKTsKK30KKworI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICBpZiAoIWlzTWFpblJlc291cmNlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRG
aWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOworICAgIGlmICghbV9jb250ZW50
RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2UoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0Rmls
dGVyaW5nTWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOwogfQorI2VuZGlmCiAKIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewpAQCAtNzA0LDYgKzcyNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlCiB7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlUmVzcG9uc2U6IChodHRwU3RhdHVzQ29kZT0lZCwgTUlNRVR5cGU9JSIgUFVCTElDX0xPR19T
VFJJTkcgIiwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoPSUiIFBSSWQ2NCAiLCBoYXNDYWNoZWRFbnRy
eUZvclZhbGlkYXRpb249JWQsIGhhc05ldHdvcmtMb2FkQ2hlY2tlcj0lZCkiLCByZWNlaXZlZFJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UubWltZVR5cGUoKS51dGY4
KCkuZGF0YSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCAhIW1f
Y2FjaGVFbnRyeUZvclZhbGlkYXRpb24sICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAo
bV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKHJlY2VpdmVkUmVzcG9uc2UpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVz
b3VyY2UoKSkKICAgICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlY2VpdmVk
UmVzcG9uc2UpOwogCkBAIC05MTUsNiArOTQyLDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1
ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCiAgICAgICAgICAgICBz
ZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOwogICAgICAgICB9CisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1fY29u
dGVudEZpbHRlcikgeworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVy
Tm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAg
bV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgICAgIH0K
KyNlbmRpZgorCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRG
aW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xMDA0
LDYgKzEwMzgsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaQog
ICAgIGlmICghbV9maXJzdFJlc3BvbnNlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgbV9maXJzdFJl
c3BvbnNlVVJMID0gcmVkaXJlY3RSZXNwb25zZS51cmwoKTsKIAorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRl
ciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
VHJpZ2dlckRhdGE+IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0
YTsKICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgaWYgKGF1
dG8gcmVzdWx0ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmli
dXRpb25SZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdC51cmwoKSkpIHsKQEAgLTEyNjIsNyArMTMwMSwx
MiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltCiAgICAgaWYgKG1f
YnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0
YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgYm9vbCBzaG91bGRG
aWx0ZXIgPSBmYWxzZTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIHNob3VsZEZpbHRlciA9IG1fY29udGVudEZpbHRlciAmJiAhbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKCptX2J1ZmZlcmVkRGF0YS5nZXQo
KSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCk7CisjZW5kaWYKKyAgICBpZiAoIXNo
b3VsZEZpbHRlcikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERh
dGFMZW5ndGgpKTsKIAogICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKQEAgLTEyNzIsNiAr
MTMxNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTCiB7CiAg
ICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyLCBlbmNvZGVk
RGF0YUxlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyIH0sIGVuY29kZWRE
YXRhTGVuZ3RoKSk7CiB9CiAKQEAgLTEzMTgsNiArMTM2NywxMSBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDCiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZXRy
aWV2ZUNhY2hlRW50cnk6Iik7CiAgICAgYXV0byByZXNwb25zZSA9IGVudHJ5LT5yZXNwb25zZSgp
OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPnJlc3BvbnNlUmVj
ZWl2ZWQoKSAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZl
ZChyZXNwb25zZSkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgaWYgKGlzTWFpblJl
c291cmNlKCkpCiAgICAgICAgIGRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZShyZXNwb25z
ZSk7CiAKQEAgLTEzNjgsNiArMTQyMiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VuZFJlc3VsdEZvCiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJzZW5kUmVzdWx0Rm9yQ2FjaGVF
bnRyeToiKTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIGlmICghZW50cnkt
PnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKCkuaXNOdWxsKCkpIHsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAobV9jb250ZW50
RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoKmVu
dHJ5LT5idWZmZXIoKSwgZW50cnktPmJ1ZmZlcigpLT5zaXplKCkpKSB7CisgICAgICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJp
bmdNYWluUmVzb3VyY2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlm
CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVz
b3VyY2UoZW50cnktPnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKCkpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEzOTEsNiArMTQ1MiwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2VuZFJlc3VsdEZvCiAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keURlY29k
ZWRTaXplID0gMDsKIAogICAgIHNlbmRCdWZmZXIoKmVudHJ5LT5idWZmZXIoKSwgZW50cnktPmJ1
ZmZlcigpLT5zaXplKCkpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRlcikgeworICAgICAgICBtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVz
dC51cmwoKSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNv
dXJjZSgpOworICAgIH0KKyNlbmRpZgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiB9CiAKQEAg
LTE3MDcsNiArMTc3NCwzNiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBcHBJbml0
aWF0CiAgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCk7CiB9
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRh
KGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkpOworICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRl
bnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCht
X2NvbnRlbnRGaWx0ZXIpOworICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShlcnJvcik7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQorewor
ICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CisgICAgZWxzZSB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7CisgICAgICAgIGF1dG8mIGVy
cm9yID0gbV9jb250ZW50RmlsdGVyLT5ibG9ja2VkRXJyb3IoKTsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50
RmlsdGVyKGVycm9yKSk7CisgICAgfQorfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4Njc4NikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrTG9hZENs
aWVudC5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRGaWx0ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0
eVBvbGljeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgpAQCAt
NDMsNiArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U7CitjbGFzcyBDb250ZW50RmlsdGVyOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBO
ZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC03MCw2ICs3
Miw5IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAgICwgcHVibGljIElQ
Qzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeUNsaWVudAogICAgICwgcHVibGljIFdlYkNvcmU6OkNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRGlzYWJsZXIKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJDbGllbnQKKyNl
bmRpZgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4g
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVhdGUo
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYgcmVwbHkg
PSBudWxscHRyKQpAQCAtOTAsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZSBoYW5k
bGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCi0gICAgdm9pZCBjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGlz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBib29sIGlzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzKTsKIAogICAgIHZvaWQgc2V0UmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSB7IG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNl
KTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQpAQCAtMTUxLDYgKzE1NiwxMSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzQXBwSW5pdGlhdGVkKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBS
ZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj46OnJlZigpOyB9CisgICAgdm9pZCBkZXJl
ZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+OjpkZXJl
ZigpOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5j
aHJvbm91c0xvYWREZWxheWVkUmVwbHkmJik7CiAKQEAgLTE1OCw2ICsxNjgsMTQgQEAgcHJpdmF0
ZToKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpOyB9
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIC8vIENvbnRlbnRGaWx0ZXJDbGllbnQKKyAgICB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgZmluYWw7
CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29u
dGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgdm9p
ZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBmaW5hbDsKKyNlbmRp
ZgorCiAgICAgYm9vbCBjYW5Vc2VDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdDsKICAgICBib29sIGNhblVzZUNhY2hlZFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIGNvbnN0OwogCkBAIC0yMTYsNiArMjM0LDEwIEBAIHByaXZhdGU6CiAK
ICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsKIAorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBzdGFydENv
bnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKKwogICAg
IGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAg
IFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwpAQCAtMjU5
LDYgKzI4MSwxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9y
ZWRpcmVjdFJlc3BvbnNlOwogICAgIFVSTCBtX2ZpcnN0UmVzcG9uc2VVUkw7IC8vIEZpcnN0IFVS
TCBpbiByZXNwb25zZSdzIFVSTCBsaXN0IChodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8j
Y29uY2VwdC1yZXNwb25zZS11cmwtbGlzdCkuCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpD
cm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBtX2N1cnJlbnRDb29wRW5m
b3JjZW1lbnRSZXN1bHQ7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RmlsdGVy
PiBtX2NvbnRlbnRGaWx0ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2Nzg2KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjIsNiArMzIyLDI5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIK
IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgaWYgKCFt
X2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVu
dEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNv
dXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50
TG9hZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIo
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEm
IHN1YnN0aXR1dGVEYXRhKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29u
dGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1
dGVEYXRhKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFdFQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4Njc4NikKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlTG9hZGVySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U3Vic3RpdHV0ZURhdGEuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIApAQCAtNDIsNiArNDMsNyBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5j
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwpAQCAtOTMsNiArOTUsMTIgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJik7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KTsKKyAgICB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdl
VVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOworI2VuZGlmCisgICAgCiAgICAg
UmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7CiAgICAgVHJhY2tp
bmdQYXJhbWV0ZXJzIG1fdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIFdlYlJlc291cmNlSW50ZXJj
ZXB0Q29udHJvbGxlciBtX2ludGVyY2VwdENvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg2Nzg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTM3LDQgKzM3LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJl
Y2UKICAgICAvLyBEaWRSZWNlaXZlUmVzb3VyY2UgaXMgZm9yIHdoZW4gd2UgaGF2ZSB0aGUgZW50
aXJlIHJlc291cmNlIGRhdGEgYXZhaWxhYmxlIGF0IG9uY2UsIHN1Y2ggYXMgd2hlbiB0aGUgcmVz
b3VyY2UgaXMgY2FjaGVkIGluIG1lbW9yeQogICAgIERpZFJlY2VpdmVSZXNvdXJjZShXZWJLaXQ6
OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgcmVzb3VyY2UpCiAjZW5kaWYKKworI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQ29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5i
bG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDYW5j
ZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yKQorICAgIEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cihVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVE
YXRhKQorI2VuZGlmCisKIH0K
</data>
<flag name="commit-queue"
          id="472030"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446590</attachid>
            <date>2021-12-09 12:42:33 -0800</date>
            <delta_ts>2022-02-17 09:24:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20211209214231.patch</filename>
            <type>text/plain</type>
            <size>49551</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFIG1h
Y3JvIGZvciBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29ya2luZyBwcm9jZXNzLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaDoKKwogMjAyMS0xMi0wOSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIDpmb2N1cy12aXNp
YmxlIHBzZXVkby1jbGFzcyBieSBkZWZhdWx0CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGVDb2NvYS5oCShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsMTIgQEAKICNkZWZpbmUg
RU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HIDEKICNlbmRpZgogCisjaWYgKChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSBcCisgICAgfHwg
KFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYw
MDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gOTAwMDApKQorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORworI2VuZGlmCisK
ICNpZiAhZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNkZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0xMi0wMiAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3
b3JraW5nIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3MDI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNvbnRlbnQg
ZmlsdGVyaW5nIGZyb20gRG9jdW1lbnRMb2FkZXIgd2hlbiB0aGUgZmVhdHVyZSBpcyBlbmFibGVk
LCBzaW5jZSB0aGlzIHRha2VzIHBsYWNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAg
ICAgIE1vZGlmeSB0aGUgQ29udGVudEZpbHRlciBjbGFzcyBieSByZW1vdmluZyB1c2Ugb2YgdGhl
IHR5cGVzIENhY2hlZFJlc291cmUgYW5kIENhY2hlZFJhd1Jlc291cmNlLCBzaW5jZSBvYmplY3Rz
IG9mIHRoZXNlCisgICAgICAgIHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoZSBOZXR3b3Jr
aW5nIHByb2Nlc3MuIFBhcmFtZXRlcnMgd2l0aCB0aGVzZSB0eXBlcyBhcmUgcmVwbGFjZWQgd2l0
aCBVUkwgcGFyYW1ldGVycy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250
ZW50RmlsdGVyVW50aWxCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVz
b3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJCdWZm
ZXJzKToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJs
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50Rmls
dGVyRGlkQmxvY2spOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKwogMjAyMS0xMi0wOSAgQWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBBZGQgc3VwcG9ydCBmb3Ig
ZW1wdHkgYmlkaSBpbmxpbmUgYm94ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4Njc4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMzMyMyw3ICszMzIzLDcgQEAKIAkJQTE0ODMyQ0MxODdGNjdDNDAwREE2M0E2IC8qIFdl
YkNvcmVUaHJlYWRSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNDgzMjlFMTg3RjUwODcwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkUnVuLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0ODMyQ0Yx
ODdGNjg0NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMkExMTg3RjUwODcw
MERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTFEQTMxRjg1OUQ4NzAwOTVG
NUQ0IC8qIFBheW1lbnRTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTQ5MURBMjFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24u
aCAqLzsgfTsKLQkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFC
QUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IH07CisJCUExNDk3ODZGMUFCQUYz
MzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZp
bHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUExNDk3ODcxMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODcwMUFCQUYz
QTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTRCQjBBMDFGOTgxM0I4MDA2MDVBMzUg
LyogTW9ja1BheW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNEJCMDlFMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovOyB9Owog
CQlBMTVENzUxNjFFNjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxMzFFNjhGN0IxMDBBMzVG
QkMgLyogQmxvYkNhbGxiYWNrLmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTggQEAg
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyV2lsbFNlbgogICAgIHJldHVybiAhcmVx
dWVzdC5pc051bGwoKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJl
c291cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9w
cGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwg
dXJsLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkZpbHRl
cmluZzsKKyAgICBBU1NFUlQobV9tYWluUmVzb3VyY2VVUkwuaXNFbXB0eSgpKTsKKyAgICBtX21h
aW5SZXNvdXJjZVVSTCA9IHVybDsKK30KKyNlbHNlCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0
RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJiByZXNvdXJjZSkKIHsKICAg
ICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTEyMywxMiArMTM1LDE3IEBAIHZv
aWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NFUlQoIW1fbWFp
blJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0KKyNlbmRpZgog
CiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKQogewogICAg
IGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICBtX3N0YXRlID0gU3RhdGU6
OlN0b3BwZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICBtX21haW5SZXNvdXJjZVVSTCA9IFVSTCgpOworI2Vsc2UKICAgICBtX21haW5S
ZXNvdXJjZSA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKQEAgLTE0MiwxNCArMTU5LDMxIEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
clJlc3BvbnMKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgbV9yZXNwb25zZVJlY2VpdmVkID0g
dHJ1ZTsKKwogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK2Jvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIGJvb2wgQ29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQorI2VuZGlmCiB7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3Rl
ZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVy
aW5nKSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVk
ICV6dSBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGVuY29kZWREYXRhTGVuZ3RoLCBtX21h
aW5SZXNvdXJjZVVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGZvckVhY2hD
b250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtidWZmZXIgPSBSZWYgeyBidWZmZXIgfV0oUGxhdGZv
cm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50Rmls
dGVyLmFkZERhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CisgICAgICAgICAgICBk
ZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VE
YXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIG1fYnVmZmVycy5hcHBlbmQoUmVzb3VyY2VEYXRhSXRlbSB7IFJlZlB0ciB7ICZidWZmZXIg
fSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisjZWxzZQogICAgICAgICBMT0coQ29udGVudEZpbHRl
cmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4u
XG4iLCBsZW5ndGgsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhLCBsZW5n
dGhdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAgICAg
Y29udGVudEZpbHRlci5hZGREYXRhKGRhdGEsIGxlbmd0aCk7CkBAIC0xNTcsMjkgKzE5MSw0NSBA
QCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAKICAgICAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpCiAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VE
YXRhKCptX21haW5SZXNvdXJjZSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK2Jvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VV
UkwpCisjZWxzZQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQorI2VuZGlmCiB7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBSZWY8Q29udGVu
dEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLQorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWluUmVzb3VyY2VVUkwpOworI2Vs
c2UKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3Vy
Y2UpOwogICAgIGlmIChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbmRpZgogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmlu
ZykgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlz
aCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVzb3VyY2VVUkwu
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworI2Vsc2UKICAgICAgICAgTE9HKENvbnRlbnRGaWx0
ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNl
IGF0IDwlcz4uXG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCkpOworI2VuZGlmCiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtd
KFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAgICAgY29u
dGVudEZpbHRlci5maW5pc2hlZEFkZGluZ0RhdGEoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
aWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpIHsKICAgICAgICAgICAgIG1fc3RhdGUgPSBT
dGF0ZTo6QWxsb3dlZDsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworI2Vs
c2UKICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNl
bmRpZgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQp
CkBAIC0yMTksNyArMjY5LDE0IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRl
IHN0YXQKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJU
KG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpOwogICAgIEFTU0VSVChzdGF0ZSA9PSBTdGF0ZTo6
QWxsb3dlZCB8fCBzdGF0ZSA9PSBTdGF0ZTo6QmxvY2tlZCk7Ci0gICAgTE9HKENvbnRlbnRGaWx0
ZXJpbmcsICJDb250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4g
cmVzb3VyY2UgYXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQi
IDogImJsb2NrZWQiLCBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSA6ICIiKTsKKyNpZiAhTE9HX0RJU0FCTEVECisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBjb25zdCBTdHJp
bmcmIHVybFN0cmluZyA9IG1fbWFpblJlc291cmNlVVJMLnN0cmluZygpOworI2Vsc2UKKyAgICBj
b25zdCBTdHJpbmcmIHVybFN0cmluZyA9IG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3VyY2Ut
PnVybCgpLnN0cmluZygpIDogZW1wdHlTdHJpbmcoKTsKKyNlbmRpZgorICAgIExPRyhDb250ZW50
RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZvciBt
YWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxv
d2VkIiA6ICJibG9ja2VkIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKKyNlbmRpZiAvLyAh
TE9HX0RJU0FCTEVECiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogICAgIGlmIChtX3N0YXRlICE9IFN0
YXRlOjpCbG9ja2VkKQogICAgICAgICByZXR1cm47CkBAIC0yMjgsMTIgKzI4NSwyMCBAQCB2b2lk
IENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiAgICAgbV9jbGllbnQuY2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIobV9ibG9ja2VkRXJyb3IpOwogfQogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQg
Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRl
cjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYK
IHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBtX2NsaWVudC5kYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsK
KyNlbHNlCiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZm
ZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQogICAgICAgICBtX2NsaWVudC5kYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJj
ZUJ1ZmZlci0+c2l6ZSgpKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCgpCkBAIC0yNDUsNiArMzEwLDcgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBh
Z2VVUkwoKQogICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsKIH0KIAorI2lmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVy
JiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsK
ICAgICBpZiAoYXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIo
KSkgewpAQCAtMjU5LDYgKzMyNSw3IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
clN1YnN0aXQKIAogICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIGJvb2wgQ29udGVudEZp
bHRlcjo6d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIGNvbnN0CiB7CkBAIC0yODMsNiArMzUwLDE1IEBAIHZvaWQgQ29udGVudEZpbHRl
cjo6aGFuZGxlUHJvdmlzaW9uYWxMb2EKICAgICBtX2NsaWVudC5oYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwoKSwgc3Vic3RpdHV0ZURh
dGEpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYnVmZmVycy5zaXplKCk7IGkrKykKKyAg
ICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9idWZmZXJzW2ldLmJ1ZmZlciwgbV9idWZmZXJz
W2ldLmVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2J1ZmZlcnMuY2xlYXIoKTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlz
aW9uIDI4Njc4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDIzICs1MCwzNiBAQCBjbGFzcyBDb250ZW50RmlsdGVyIHsKIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgYWRkVHlwZSgpIHsg
dHlwZXMoKS5hcHBlbmQodHlwZTxUPigpKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYpOwotICAgIH5Db250
ZW50RmlsdGVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIH5Db250ZW50RmlsdGVyKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogdXJsU2No
ZW1lKCkgeyByZXR1cm4gIngtYXBwbGUtY29udGVudC1maWx0ZXIiOyB9CiAKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJik7CisjZWxzZQog
ICAgIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmKTsK
LSAgICB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyNlbmRpZgorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogCi0gICAgYm9vbCBj
b250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVl
QWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlclJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250
aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVSTCk7CisjZWxzZQogICAgIGJvb2wgY29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAg
ICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpOworI2Vu
ZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0
KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRh
Jik7CiAgICAgYm9vbCB3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNv
dXJjZUVycm9yJikgY29uc3Q7Ci0gICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCisgICAgY29uc3Qg
UmVzb3VyY2VFcnJvciYgYmxvY2tlZEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2VkRXJy
b3I7IH0KKyAgICBib29sIGlzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQ7IH0KKyAgICBib29sIHJlc3BvbnNlUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlUmVjZWl2ZWQ7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgdXNpbmcgU3RhdGUg
PSBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI6OlN0YXRlOwogCkBAIC04MiwxNSArOTUsMzEgQEAgcHJp
dmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCBmb3JFYWNoQ29u
dGVudEZpbHRlclVudGlsQmxvY2tlZChGdW5jdGlvbiYmKTsKICAgICB2b2lkIGRpZERlY2lkZShT
dGF0ZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURh
dGEoKTsKKyNlbHNlCiAgICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNl
Jik7Ci0KKyNlbmRpZgorICAgIAogICAgIENvbnRhaW5lciBtX2NvbnRlbnRGaWx0ZXJzOwogICAg
IENvbnRlbnRGaWx0ZXJDbGllbnQmIG1fY2xpZW50OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVVJMIG1fbWFpblJlc291cmNlVVJMOwor
ICAgIHN0cnVjdCBSZXNvdXJjZURhdGFJdGVtIHsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGg7CisgICAg
fTsKKyAgICAKKyAgICBWZWN0b3I8UmVzb3VyY2VEYXRhSXRlbT4gbV9idWZmZXJzOworI2Vsc2UK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3Vy
Y2U7CisjZW5kaWYKICAgICBjb25zdCBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdD
b250ZW50RmlsdGVyIHsgbnVsbHB0ciB9OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3Rv
cHBlZCB9OwogICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CiAgICAgYm9vbCBtX2lz
TG9hZGluZ0Jsb2NrZWRQYWdlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVzcG9uc2VSZWNlaXZl
ZCB7IGZhbHNlIH07CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNpb24gMjg2Nzg2KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQ29udGVudEZpbHRlckNs
aWVudCB7CkBAIC00MSw3ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZm
ZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyNlbmRpZgogICAg
IHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRl
cihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4Njc4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw3ICs0MjAsNyBA
QCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExv
YWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
ICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAt
NzEwLDcgKzcxMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMK
ICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RGTW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTA4
LDcgKzkwOCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAg
ICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5k
bGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1
cm47CiAjZW5kaWYKQEAgLTEzMjQsNyArMTMyNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRl
ciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEsIGxl
bmd0aCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTQ1Miw3ICsxNDUyLDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKICAgICBzdG9wTG9hZGluZygpOwog
ICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlz
KSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYg
KG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5n
TWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIwMTQsNyArMjAxNCw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
ICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRl
bnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOwogI2VuZGlmCiAKQEAgLTIyMTYsNyAr
MjIxNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5S
ZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92
ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIzNDcs
NyArMjM0Nyw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnRMb2EKIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKIHsKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBp
ZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVy
aW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5kaWYKQEAgLTI0MDQsNyArMjQw
NCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXVEZN
b3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRU
aHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAg
ICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CkBAIC0yNDE1LDEyICsyNDE1LDE5IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUwKICAgICBjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkKGVycm9yKTsKIH0KIAorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVu
dEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxl
ciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgcmV0dXJuIGhh
bmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGZyYW1lTG9h
ZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1
YnN0aXR1dGVEYXRhKSk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIAotUmVz
b3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorUmVzb3VyY2VF
cnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpCiB7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwo
ZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0Vt
cHR5KCkgJiYgZnJhbWUoKSkgewpAQCAtMjQzMCw4ICsyNDM3LDQwIEBAIFJlc291cmNlRXJyb3Ig
RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWwKICAgICAgICAgfSk7CiAgICAgfQogICAgIGZyYW1l
TG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJs
b2NrSGFuZGxlcikpOwotICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50
RmlsdGVyRXJyb3IocmVxdWVzdCgpKTsKKyAgICBhdXRvIGVycm9yID0gZnJhbWVMb2FkZXIoKS0+
YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fYmxvY2tlZEJ5Q29u
dGVudEZpbHRlciA9IHRydWU7CisgICAgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsKKyNlbmRpZgor
CisgICAgcmV0dXJuIGVycm9yOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250
ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgZnJhbWVMb2Fk
ZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vi
c3RpdHV0ZURhdGEpKTsKIH0KKworYm9vbCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlcldp
bGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5l
cnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4o
KSA9PSBlcnJvci5kb21haW4oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAm
JiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KTsKKyNlbmRpZgorfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCisgICAg
ICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7
CisjZW5kaWYKK30KKwogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogdm9p
ZCBEb2N1bWVudExvYWRlcjo6c2V0QWN0aXZlQ29udGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMo
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PiYgcGF0dGVybnMpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjg2Nzg2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0OSw3ICsxNDksNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDogcHVibGljIFJlZkNv
dW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLCBwdWJs
aWMgQ29udGVudEZpbHRlckNsaWVudAogI2VuZGlmCiAgICAgLCBwcml2YXRlIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50IHsKQEAgLTM4NiwxMCArMzg2LDE0IEBAIHB1YmxpYzoKICAgICBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3Bh
Z2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIENvbnRlbnRG
aWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGaWx0ZXIuZ2V0
KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExv
YWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRl
ZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JU
IFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZh
aWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsK
KyNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90
IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYm
KTsKQEAgLTQzNCw2ICs0MzgsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb250aW51aW5nTG9h
ZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb250aW51
aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZDsgfQogICAgIHZvaWQgc2V0SXNDb250
aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZChib29sIGlzQ29udGludWluZ0xv
YWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpIHsgbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQ
cm92aXNpb25hbExvYWRTdGFydGVkID0gaXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxM
b2FkU3RhcnRlZDsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorICAgIGJvb2wg
Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAg
V0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmKTsKIApAQCAtNDg2LDcgKzQ5NSw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9y
IGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmlu
ZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKQEAgLTYzOCw3ICs2NDcsMTIg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOworI2Vsc2UK
KyAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciB7IGZhbHNlIH07CisgICAgUmVzb3Vy
Y2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24g
Mjg2Nzg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ1OCw3ICsyNDU4LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaQogICAgIG1fcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwg
PSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLnVybCgpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQotICAgIGF1dG8gY29udGVudEZpbHRlciA9IHByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIuY29udGVudEZpbHRlcigpOwogICAgIGF1dG8gY29udGVudEZpbHRlcldpbGxDb250aW51
ZUxvYWRpbmcgPSBmYWxzZTsKICNlbmRpZgogCkBAIC0yNDY2LDcgKzI0NjUsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAgICAgaWYgKGhpc3RvcnkoKS5wcm92
aXNpb25hbEl0ZW0oKSkKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdpbGxDb250aW51
ZUxvYWRpbmc6OlllczsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKGNv
bnRlbnRGaWx0ZXIgJiYgY29udGVudEZpbHRlci0+d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmUoZXJyb3IpKSB7CisgICAgaWYgKHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuY29udGVu
dEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSkgewogICAgICAg
ICB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENvbnRpbnVlTG9hZGluZzo6WWVzOwogICAgICAg
ICBjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZyA9IHRydWU7CiAgICAgfQpAQCAtMjQ3
Niw3ICsyNDc1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChjb250ZW50RmlsdGVyV2ls
bENvbnRpbnVlTG9hZGluZykKLSAgICAgICAgY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Y29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogI2VuZGlm
CiAKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0geyB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gMjg2Nzg2
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6
Y2hlY2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbG9hZGVyLT5zdWJzdGl0dXRlRGF0
YSgpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgIXN1YnN0aXR1dGVEYXRh
LmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgYm9vbCBzaG91bGRDb250aW51ZSA9
IHRydWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiAgICAgICAgIGlmIChhdXRvIGxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gQ29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdCgqbG9hZGVyLCBzdWJzdGl0
dXRlRGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRl
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0
YS5oCShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0IFVSTCYgZmFp
bGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAgICBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0K
LSAgICAgICAgCisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBTdWJzdGl0dXRlRGF0YSYp
OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50
OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwpAQCAtNjcsNCArNzAsMjggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZl
YWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsK
ICAgICB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTdWJzdGl0dXRlRGF0YTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2NvbnRl
bnQgPDwgbV9mYWlsaW5nVVJMIDw8IG1fcmVzcG9uc2UgPDwgbV9zaG91bGRSZXZlYWxUb1Nlc3Np
b25IaXN0b3J5OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBTdWJzdGl0dXRl
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN1YnN0aXR1dGVEYXRhJiBkYXRhKQorewor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX2NvbnRlbnQpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9mYWlsaW5nVVJMKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fcmVz
cG9uc2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEubV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyODY3ODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEyLTA2ICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5n
IHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNv
bnRlbnQgZmlsdGVyaW5nIGZyb20gdGhlIERvY3VtZW50TG9hZGVyIGNsYXNzIGluIHRoZSBXZWJQ
cm9jZXNzIHRvIHRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgY2xhc3MgaW4gdGhlCisgICAgICAg
IE5ldHdvcmtpbmcgcHJvY2Vzcy4gVGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBpcyBub3cgYSBj
bGllbnQgb2YgdGhlIGNvbnRlbnQgZmlsdGVyLCBhbmQgd2lsbCBzZW5kIG1lc3NhZ2VzCisgICAg
ICAgIHRvIHRoZSBEb2N1bWVudExvYWRlciBpbiB0aGUgV2ViUHJvY2VzcyB0byBjYW5jZWwgdGhl
IGxvYWQgd2hlbiB0aGUgY29udGVudCBmaWx0ZXIgZGVjaWRlZCB0byBibG9jayB0aGUgbG9hZC4K
KyAgICAgICAgSWYgdGhlIGNvbnRlbnQgZmlsdGVyIGlzIHByb3ZpZGluZyByZXBsYWNlbWVudCBk
YXRhLCB0aGlzIHdpbGwgYWxzbyBiZSBzZW50IG92ZXIgSVBDIHRvIHRoZSBXZWJQcm9jZXNzLgor
ICAgICAgICBEYXRhIGlzIG5vdCBiZWluZyBzZW50IHRvIHRoZSBXZWJQcm9jZXNzIHVudGlsIHRo
ZSBjb250ZW50IGZpbHRlciBoYXMgZGVjaWRlZCB0byBhbGxvdyB0aGUgbG9hZCwgaWYgY29udGVu
dAorICAgICAgICBmaWx0ZXJpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJl
Y3RSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVm
ZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2VuZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VuZFJlc3VsdEZvckNhY2hlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNzY2hlbWU6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisKIDIw
MjEtMTItMDkgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJB
dXRobl0gUmVtb3ZlIHVzZXIgZ2VzdHVyZSByZXF1aXJlbWVudCBmb3IgdXNpbmcgcGxhdGZvcm0g
YXV0aGVudGljYXRvciBvbiB0aGUgd2ViCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODY3
ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9QcmV2aWV3Q29udmVydGVyLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50Rmls
dGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4K
KyNlbmRpZgorCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9M
T0coTmV0d29yaywgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIg
UFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlPSVkLCBkZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29y
a1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50
NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVy
cy5vcHRpb25zLmRlc3RpbmF0aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQog
I2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VS
Uk9SKE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUlu
dDY0KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRl
cnMub3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykK
IApAQCAtMTg3LDggKzE5MiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQo
KQogICAgIEFTU0VSVCghbV93YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwog
CisgICAgYXV0byBuZXdSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0
KCkgfTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIHN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KTsKKyNlbmRpZgorCiAgICAg
aWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7Ci0gICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2Vy
LT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCB0aGlzLCBbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKKyAgICAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVl
c3QgfSwgdGhpcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChhdXRvJiYg
cmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMjE3LDEzICsyMjcsMjUgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
YXQgY29kZSBwYXRoIG9uY2UgbV9uZXR3b3JrTG9hZENoZWNrZXIgaXMgdXNlZCBmb3IgYWxsIG5l
dHdvcmsgbG9hZHMuCi0gICAgaWYgKGNhblVzZUNhY2hlKG9yaWdpbmFsUmVxdWVzdCgpKSkgewor
ICAgIGlmIChjYW5Vc2VDYWNoZShuZXdSZXF1ZXN0KSkgewogICAgICAgICByZXRyaWV2ZUNhY2hl
RW50cnkob3JpZ2luYWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCBG
aXJzdExvYWQ6Olllcyk7CisgICAgc3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBu
ZXdSZXF1ZXN0IH0sIEZpcnN0TG9hZDo6WWVzKTsKK30KKworI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICBpZiAoIWlzTWFpblJlc291cmNlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRG
aWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOworICAgIGlmICghbV9jb250ZW50
RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2UoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0Rmls
dGVyaW5nTWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOwogfQorI2VuZGlmCiAKIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewpAQCAtNzA0LDYgKzcyNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlCiB7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlUmVzcG9uc2U6IChodHRwU3RhdHVzQ29kZT0lZCwgTUlNRVR5cGU9JSIgUFVCTElDX0xPR19T
VFJJTkcgIiwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoPSUiIFBSSWQ2NCAiLCBoYXNDYWNoZWRFbnRy
eUZvclZhbGlkYXRpb249JWQsIGhhc05ldHdvcmtMb2FkQ2hlY2tlcj0lZCkiLCByZWNlaXZlZFJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UubWltZVR5cGUoKS51dGY4
KCkuZGF0YSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCAhIW1f
Y2FjaGVFbnRyeUZvclZhbGlkYXRpb24sICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAo
bV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKHJlY2VpdmVkUmVzcG9uc2UpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVz
b3VyY2UoKSkKICAgICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlY2VpdmVk
UmVzcG9uc2UpOwogCkBAIC05MTUsNiArOTQyLDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1
ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCiAgICAgICAgICAgICBz
ZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOwogICAgICAgICB9CisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1fY29u
dGVudEZpbHRlcikgeworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVy
Tm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAg
bV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgICAgIH0K
KyNlbmRpZgorCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRG
aW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xMDA0
LDYgKzEwMzgsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaQog
ICAgIGlmICghbV9maXJzdFJlc3BvbnNlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgbV9maXJzdFJl
c3BvbnNlVVJMID0gcmVkaXJlY3RSZXNwb25zZS51cmwoKTsKIAorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRl
ciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
VHJpZ2dlckRhdGE+IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0
YTsKICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgaWYgKGF1
dG8gcmVzdWx0ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmli
dXRpb25SZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdC51cmwoKSkpIHsKQEAgLTEyNjIsNyArMTMwMSwx
MiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltCiAgICAgaWYgKG1f
YnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0
YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgYm9vbCBzaG91bGRG
aWx0ZXIgPSBmYWxzZTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIHNob3VsZEZpbHRlciA9IG1fY29udGVudEZpbHRlciAmJiAhbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKCptX2J1ZmZlcmVkRGF0YS5nZXQo
KSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCk7CisjZW5kaWYKKyAgICBpZiAoIXNo
b3VsZEZpbHRlcikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERh
dGFMZW5ndGgpKTsKIAogICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKQEAgLTEyNzIsNiAr
MTMxNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTCiB7CiAg
ICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyLCBlbmNvZGVk
RGF0YUxlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyIH0sIGVuY29kZWRE
YXRhTGVuZ3RoKSk7CiB9CiAKQEAgLTEzMTgsNiArMTM2NywxMSBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDCiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZXRy
aWV2ZUNhY2hlRW50cnk6Iik7CiAgICAgYXV0byByZXNwb25zZSA9IGVudHJ5LT5yZXNwb25zZSgp
OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPnJlc3BvbnNlUmVj
ZWl2ZWQoKSAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZl
ZChyZXNwb25zZSkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgaWYgKGlzTWFpblJl
c291cmNlKCkpCiAgICAgICAgIGRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZShyZXNwb25z
ZSk7CiAKQEAgLTEzNjgsNiArMTQyMiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VuZFJlc3VsdEZvCiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJzZW5kUmVzdWx0Rm9yQ2FjaGVF
bnRyeToiKTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIGlmICghZW50cnkt
PnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKCkuaXNOdWxsKCkpIHsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAobV9jb250ZW50
RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoKmVu
dHJ5LT5idWZmZXIoKSwgZW50cnktPmJ1ZmZlcigpLT5zaXplKCkpKSB7CisgICAgICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJp
bmdNYWluUmVzb3VyY2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlm
CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVz
b3VyY2UoZW50cnktPnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKCkpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEzOTEsNiArMTQ1MiwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2VuZFJlc3VsdEZvCiAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keURlY29k
ZWRTaXplID0gMDsKIAogICAgIHNlbmRCdWZmZXIoKmVudHJ5LT5idWZmZXIoKSwgZW50cnktPmJ1
ZmZlcigpLT5zaXplKCkpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRlcikgeworICAgICAgICBtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVz
dC51cmwoKSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNv
dXJjZSgpOworICAgIH0KKyNlbmRpZgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiB9CiAKQEAg
LTE3MDcsNiArMTc3NCwzNiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBcHBJbml0
aWF0CiAgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCk7CiB9
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRh
KGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkpOworICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRl
bnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCht
X2NvbnRlbnRGaWx0ZXIpOworICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShlcnJvcik7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQorewor
ICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CisgICAgZWxzZSB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7CisgICAgICAgIGF1dG8mIGVy
cm9yID0gbV9jb250ZW50RmlsdGVyLT5ibG9ja2VkRXJyb3IoKTsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50
RmlsdGVyKGVycm9yKSk7CisgICAgfQorfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4Njc4NikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrTG9hZENs
aWVudC5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRGaWx0ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0
eVBvbGljeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgpAQCAt
NDMsNiArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U7CitjbGFzcyBDb250ZW50RmlsdGVyOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBO
ZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC03MCw2ICs3
Miw5IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAgICwgcHVibGljIElQ
Qzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeUNsaWVudAogICAgICwgcHVibGljIFdlYkNvcmU6OkNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRGlzYWJsZXIKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJDbGllbnQKKyNl
bmRpZgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4g
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVhdGUo
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYgcmVwbHkg
PSBudWxscHRyKQpAQCAtOTAsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZSBoYW5k
bGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCi0gICAgdm9pZCBjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGlz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBib29sIGlzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzKTsKIAogICAgIHZvaWQgc2V0UmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSB7IG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNl
KTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQpAQCAtMTUxLDYgKzE1NiwxMSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzQXBwSW5pdGlhdGVkKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBS
ZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj46OnJlZigpOyB9CisgICAgdm9pZCBkZXJl
ZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+OjpkZXJl
ZigpOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5j
aHJvbm91c0xvYWREZWxheWVkUmVwbHkmJik7CiAKQEAgLTE1OCw2ICsxNjgsMTQgQEAgcHJpdmF0
ZToKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpOyB9
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIC8vIENvbnRlbnRGaWx0ZXJDbGllbnQKKyAgICB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgZmluYWw7
CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29u
dGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgdm9p
ZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBmaW5hbDsKKyNlbmRp
ZgorCiAgICAgYm9vbCBjYW5Vc2VDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdDsKICAgICBib29sIGNhblVzZUNhY2hlZFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIGNvbnN0OwogCkBAIC0yMTYsNiArMjM0LDEwIEBAIHByaXZhdGU6CiAK
ICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsKIAorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBzdGFydENv
bnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKKwogICAg
IGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAg
IFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwpAQCAtMjU5
LDYgKzI4MSwxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9y
ZWRpcmVjdFJlc3BvbnNlOwogICAgIFVSTCBtX2ZpcnN0UmVzcG9uc2VVUkw7IC8vIEZpcnN0IFVS
TCBpbiByZXNwb25zZSdzIFVSTCBsaXN0IChodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8j
Y29uY2VwdC1yZXNwb25zZS11cmwtbGlzdCkuCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpD
cm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBtX2N1cnJlbnRDb29wRW5m
b3JjZW1lbnRSZXN1bHQ7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RmlsdGVy
PiBtX2NvbnRlbnRGaWx0ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2Nzg2KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjIsNiArMzIyLDI5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIK
IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgaWYgKCFt
X2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVu
dEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNv
dXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50
TG9hZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIo
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEm
IHN1YnN0aXR1dGVEYXRhKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29u
dGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1
dGVEYXRhKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFdFQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4Njc4NikKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlTG9hZGVySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U3Vic3RpdHV0ZURhdGEuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIApAQCAtNDIsNiArNDMsNyBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5j
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwpAQCAtOTMsNiArOTUsMTIgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJik7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KTsKKyAgICB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdl
VVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOworI2VuZGlmCisgICAgCiAgICAg
UmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7CiAgICAgVHJhY2tp
bmdQYXJhbWV0ZXJzIG1fdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIFdlYlJlc291cmNlSW50ZXJj
ZXB0Q29udHJvbGxlciBtX2ludGVyY2VwdENvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg2Nzg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTM3LDQgKzM3LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJl
Y2UKICAgICAvLyBEaWRSZWNlaXZlUmVzb3VyY2UgaXMgZm9yIHdoZW4gd2UgaGF2ZSB0aGUgZW50
aXJlIHJlc291cmNlIGRhdGEgYXZhaWxhYmxlIGF0IG9uY2UsIHN1Y2ggYXMgd2hlbiB0aGUgcmVz
b3VyY2UgaXMgY2FjaGVkIGluIG1lbW9yeQogICAgIERpZFJlY2VpdmVSZXNvdXJjZShXZWJLaXQ6
OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgcmVzb3VyY2UpCiAjZW5kaWYKKworI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQ29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5i
bG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDYW5j
ZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yKQorICAgIEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cihVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVE
YXRhKQorI2VuZGlmCisKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452378</attachid>
            <date>2022-02-17 09:24:24 -0800</date>
            <delta_ts>2022-02-17 11:22:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20220217092423.patch</filename>
            <type>text/plain</type>
            <size>49564</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAyLTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFIG1h
Y3JvIGZvciBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29ya2luZyBwcm9jZXNzLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaDoKKwogMjAyMi0wMi0xNiAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkb3B0IC1zdHJl
YW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6IGRl
bGVnYXRlIGNhbGxiYWNrCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCShy
ZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsMTIgQEAKICNkZWZpbmUgRU5BQkxFX0NPTlRF
TlRfRklMVEVSSU5HIDEKICNlbmRpZgogCisjaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYwMDAwKSBcCisgICAg
fHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gOTAwMDApKQorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORworI2VuZGlmCisKICNpZiAhZGVmaW5l
ZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUg
RU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
ODk5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw0NSBAQAorMjAyMi0wMi0xNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5nIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc2
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3MDI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIGZy
b20gRG9jdW1lbnRMb2FkZXIgd2hlbiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLCBzaW5jZSB0aGlz
IHRha2VzIHBsYWNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgICAgIE1vZGlmeSB0
aGUgQ29udGVudEZpbHRlciBjbGFzcyBieSByZW1vdmluZyB1c2Ugb2YgdGhlIHR5cGVzIENhY2hl
ZFJlc291cmUgYW5kIENhY2hlZFJhd1Jlc291cmNlLCBzaW5jZSBvYmplY3RzIG9mIHRoZXNlCisg
ICAgICAgIHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoZSBOZXR3b3JraW5nIHByb2Nlc3Mu
IFBhcmFtZXRlcnMgd2l0aCB0aGVzZSB0eXBlcyBhcmUgcmVwbGFjZWQgd2l0aCBVUkwgcGFyYW1l
dGVycy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW50RmlsdGVyVW50
aWxCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJCdWZmZXJzKToKKyAgICAg
ICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sp
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tO
YXZpZ2F0aW9uUG9saWN5KToKKwogMjAyMi0wMi0xNiAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBub24tdW5pZmllZCBidWlsZCBmaXggYWZ0
ZXIgcjI4OTc0MgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzY3LDcg
KzMzNjcsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMy
OUUxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYz
QTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8qIFdl
YkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVu
dFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9OwotCQlB
MTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0
IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8q
IENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzExQUJB
RjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8q
IFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QkIw
OUUxRjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2MUU2
OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2Fs
bGJhY2suaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxOCBAQCBib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAgICAgcmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgp
OwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3Qg
VVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxs
IHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmlsdGVyaW5nOworICAgIEFT
U0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkpOworICAgIG1fbWFpblJlc291cmNlVVJM
ID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWlu
UmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChtX3N0YXRl
ICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEyICsxMzUsMTcgQEAgdm9pZCBDb250ZW50Rmls
dGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFTU0VSVCghbV9tYWluUmVzb3VyY2UpOwog
ICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNlOwogfQorI2VuZGlmCiAKIHZvaWQgQ29udGVu
dEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1f
bWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxzZQogICAgIG1fbWFpblJlc291cmNlID0gbnVs
bHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTQyLDE0
ICsxNTksMzEgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9ucwogICAg
ICAgICB9KTsKICAgICB9CiAKKyAgICBtX3Jlc3BvbnNlUmVjZWl2ZWQgPSB0cnVlOworCiAgICAg
cmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXpl
X3QgZW5jb2RlZERhdGFMZW5ndGgpCisjZWxzZQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51
ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKKyNlbmRpZgogewog
ICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9
OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIExPRyhDb250
ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBm
cm9tIDwlcz4uXG4iLCBlbmNvZGVkRGF0YUxlbmd0aCwgbV9tYWluUmVzb3VyY2VVUkwuc3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxv
Y2tlZChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29u
dGVudEZpbHRlcikgeworICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGJ1ZmZlcik7
CisgICAgICAgIH0pOworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgewor
ICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworICAgICAgICAgICAgZGVs
aXZlclJlc291cmNlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQ
dHIgeyAmYnVmZmVyIH0sIGVuY29kZWREYXRhTGVuZ3RoIH0pOworI2Vsc2UKICAgICAgICAgTE9H
KENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBk
YXRhIGZyb20gPCVzPi5cbiIsIGRhdGEuc2l6ZSgpLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGls
QmxvY2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29udGVudEZpbHRlcikgewogICAg
ICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOwpAQCAtMTU3LDI5ICsxOTEsNDUg
QEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwogCiAgICAgICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNl
RGF0YSgqbV9tYWluUmVzb3VyY2UpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNl
VVJMKQorI2Vsc2UKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKKyNlbmRpZgogewotICAgIEFTU0VSVF9VTlVT
RUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CiAgICAgUmVmPENvbnRl
bnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0KKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2VVUkwsIHJlc291cmNlVVJMID09IG1fbWFpblJlc291cmNlVVJMKTsKKyNl
bHNlCisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291
cmNlKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJp
bmcpIHsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5p
c2ggZmlsdGVyaW5nIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIG1fbWFpblJlc291cmNlVVJM
LnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyNlbHNlCiAgICAgICAgIExPRyhDb250ZW50Rmls
dGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJj
ZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0
YSgpKTsKKyNlbmRpZgogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChb
XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKICAgICAgICAgICAgIGNv
bnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CiAgICAgICAgIH0pOwogCiAgICAgICAg
IGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CiAgICAgICAgICAgICBtX3N0YXRlID0g
U3RhdGU6OkFsbG93ZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICAgICAgICAgIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKTsKKyNl
bHNlCiAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJjZSk7Cisj
ZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVk
KQpAQCAtMjE5LDcgKzI2OSwxNCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0
ZSBzdGF0CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VS
VChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKTsKICAgICBBU1NFUlQoc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQgfHwgc3RhdGUgPT0gU3RhdGU6OkJsb2NrZWQpOwotICAgIExPRyhDb250ZW50Rmls
dGVyaW5nLCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZvciBtYWlu
IHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2Vk
IiA6ICJibG9ja2VkIiwgbV9tYWluUmVzb3VyY2UgPyBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkgOiAiIik7CisjaWYgIUxPR19ESVNBQkxFRAorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcgPSBtX21haW5SZXNvdXJjZVVSTC5zdHJpbmcoKTsKKyNlbHNlCisgICAg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcgPSBtX21haW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNl
LT51cmwoKS5zdHJpbmcoKSA6IGVtcHR5U3RyaW5nKCk7CisjZW5kaWYKKyAgICBMT0coQ29udGVu
dEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3Ig
bWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAiYWxs
b3dlZCIgOiAiYmxvY2tlZCIsIHVybFN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CisjZW5kaWYgLy8g
IUxPR19ESVNBQkxFRAogICAgIG1fc3RhdGUgPSBzdGF0ZTsKICAgICBpZiAobV9zdGF0ZSAhPSBT
dGF0ZTo6QmxvY2tlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI4LDEyICsyODUsMjAgQEAgdm9p
ZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdAogICAgIG1fY2xpZW50LmNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKG1fYmxvY2tlZEVycm9yKTsKIH0KIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lk
IENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyNlbHNlCiB2b2lkIENvbnRlbnRGaWx0
ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQorI2VuZGlm
CiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOworI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgbV9jbGllbnQuZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisjZWxzZQogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAg
LTI0NSw2ICszMTAsNyBAQCBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCiAgICAg
cmV0dXJuIGJsb2NrZWRQYWdlVVJMOwogfQogCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRl
ciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGlmIChhdXRv
IGNvbnRlbnRGaWx0ZXIgPSBhY3RpdmVMb2FkZXIuY29udGVudEZpbHRlcigpKSB7CkBAIC0yNTks
NiArMzI1LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdAogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CisjZW5kaWYKIAogYm9vbCBDb250ZW50RmlsdGVyOjp3aWxsSGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgY29u
c3QKIHsKQEAgLTI4Myw2ICszNTAsMTUgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92
aXNpb25hbExvYQogICAgIG1fY2xpZW50LmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9t
Q29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCgpLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBD
b250ZW50RmlsdGVyOjpkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCkKK3sKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9idWZmZXJzLnNpemUoKTsgaSsrKQorICAgICAgICBkZWxpdmVy
UmVzb3VyY2VEYXRhKCptX2J1ZmZlcnNbaV0uYnVmZmVyLCBtX2J1ZmZlcnNbaV0uZW5jb2RlZERh
dGFMZW5ndGgpOworICAgIG1fYnVmZmVycy5jbGVhcigpOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjg5OTcxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsMjMgKzUwLDM2IEBAIGNsYXNzIENvbnRlbnRGaWx0ZXIgewogcHVibGljOgogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBhZGRUeXBlKCkgeyB0eXBlcygpLmFwcGVu
ZCh0eXBlPFQ+KCkpOyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0
ZXI+IGNyZWF0ZShDb250ZW50RmlsdGVyQ2xpZW50Jik7Ci0gICAgfkNvbnRlbnRGaWx0ZXIoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+
IGNyZWF0ZShDb250ZW50RmlsdGVyQ2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkNvbnRl
bnRGaWx0ZXIoKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVy
biAieC1hcHBsZS1jb250ZW50LWZpbHRlciI7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFy
dEZpbHRlcmluZ01haW5SZXNvdXJjZShjb25zdCBVUkwmKTsKKyNlbHNlCiAgICAgdm9pZCBzdGFy
dEZpbHRlcmluZ01haW5SZXNvdXJjZShDYWNoZWRSYXdSZXNvdXJjZSYpOwotICAgIHZvaWQgc3Rv
cEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOworI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJX
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIGJvb2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJEYXRh
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25z
dCBVUkwmIHJlc291cmNlVVJMKTsKKyNlbHNlCiAgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJl
Y2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7CisjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGNv
bnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFj
dGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdpbGxIYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsKLSAgICB2
b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAKKyAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBibG9ja2VkRXJy
b3IoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrZWRFcnJvcjsgfQorICAgIGJvb2wgaXNBbGxvd2Vk
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZDsgfQorICAgIGJvb2wg
cmVzcG9uc2VSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VSZWNlaXZlZDsgfQor
ICAgIAogcHJpdmF0ZToKICAgICB1c2luZyBTdGF0ZSA9IFBsYXRmb3JtQ29udGVudEZpbHRlcjo6
U3RhdGU7CiAKQEAgLTgyLDE1ICs5NSwzMSBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0aW9uPiB2b2lkIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKEZ1
bmN0aW9uJiYpOwogICAgIHZvaWQgZGlkRGVjaWRlKFN0YXRlKTsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgZGVsaXZlclJlc291
cmNlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgIHZvaWQgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworI2Vsc2UKICAgICB2b2lkIGRl
bGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmKTsKLQorI2VuZGlmCisgICAgCiAgICAg
Q29udGFpbmVyIG1fY29udGVudEZpbHRlcnM7CiAgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9j
bGllbnQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICBVUkwgbV9tYWluUmVzb3VyY2VVUkw7CisgICAgc3RydWN0IFJlc291cmNlRGF0YUl0
ZW0geworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAg
IHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxSZXNv
dXJjZURhdGFJdGVtPiBtX2J1ZmZlcnM7CisjZWxzZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJjZTsKKyNlbmRpZgogICAgIGNvbnN0IFBs
YXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07
CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3VyY2VFcnJv
ciBtX2Jsb2NrZWRFcnJvcjsKICAgICBib29sIG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9yZXNwb25zZVJlY2VpdmVkIHsgZmFsc2UgfTsKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlckNsaWVudC5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0MiwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdo
Q29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAg
ICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250
ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxN
YWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9u
IDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxOSw3ICs0MTksNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xv
YWRpbmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYm
ICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkp
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEwLDcgKzcxMCw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwo
V1RGTW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2Nv
bnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KG5ld1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNh
dGVJbmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25I
YW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVj
ZWl2ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjIsNyArMTMy
Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVB
ZnRlckRhdGFSZWNlaXZlZChidWZmZXIpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTE0
NTUsNyArMTQ1NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiAg
ICAgc3RvcExvYWRpbmcoKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3Vy
Y2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGll
bnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZp
bHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMDE3LDcgKzIw
MTcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKICAgICBtX2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0
YS5pc1ZhbGlkKCkgPyBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKICNl
bmRpZgogCkBAIC0yMjIwLDcgKzIyMjAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1h
aW5SZXNvdXJjZSgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9tYWlu
UmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1f
bWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgp
OwogI2VuZGlmCkBAIC0yMzUwLDcgKzIzNTAsNyBAQCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IERvY3VtZW50TG9hCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJj
ZUNsaWVudCgpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50
RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2UpOwogI2Vu
ZGlmCkBAIC0yNDA3LDcgKzI0MDcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2Vj
dXJpdHlQb2xpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVNlY3VyaXR5UG9saWN5
VmlvbGF0aW9uRXZlbnQoV1RGTW92ZShldmVudEluaXQpKTsKIH0KIAotI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogdm9pZCBEb2N1bWVudExv
YWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CkBAIC0yNDE4LDEyICsyNDE4
LDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUwKICAgICBjYW5j
ZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAorUmVzb3VyY2VFcnJvciBEb2N1bWVudExv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1
bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7Cisg
ICAgcmV0dXJuIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RG
TW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3Qg
VVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewog
ICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tl
ZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKIAotUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJs
b2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJs
b2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5y
ZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewpAQCAtMjQzMyw4ICsyNDQwLDQwIEBAIFJl
c291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWwKICAgICAgICAgfSk7CiAgICAg
fQogICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQo
V1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwotICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5ibG9j
a2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCgpKTsKKyAgICBhdXRvIGVycm9yID0gZnJh
bWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CisKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1f
YmxvY2tlZEJ5Q29udGVudEZpbHRlciA9IHRydWU7CisgICAgbV9ibG9ja2VkRXJyb3IgPSBlcnJv
cjsKKyNlbmRpZgorCisgICAgcmV0dXJuIGVycm9yOworfQorCit2b2lkIERvY3VtZW50TG9hZGVy
OjpoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJs
b2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7Cisg
ICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2Vk
UGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KKworYm9vbCBEb2N1bWVudExvYWRlcjo6Y29u
dGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Js
b2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRF
cnJvci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fY29u
dGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGVycm9yKTsKKyNlbmRpZgorfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50
RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgIGlmIChtX2NvbnRlbnRG
aWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZShlcnJvcik7CisjZW5kaWYKK30KKwogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QWN0aXZlQ29udGVudFJ1bGVMaXN0QWN0
aW9uUGF0dGVybnMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PiYgcGF0dGVy
bnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24g
Mjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDog
cHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0
cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50
Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVudAogI2VuZGlmCiAgICAgLCBwcml2YXRl
IENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTQwMiwxMCArNDAyLDE0IEBAIHB1YmxpYzoK
ICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
ICAgIENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnRGaWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRl
ZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFs
IHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgorICAgIFdF
QkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CkBAIC00NTEsNiArNDU1LDExIEBAIHB1YmxpYzoKICAg
ICBib29sIGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7
IH0KICAgICB2b2lkIHNldElzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQoYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKSB7IG1f
aXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCA9IGlzQ29udGludWlu
Z0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7IH0KIAorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKKyAgICBib29sIGNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBjb250ZW50RmlsdGVy
SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisjZW5k
aWYKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTUwMyw3ICs1
MTIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLy8gQ29u
dGVudEZpbHRlckNsaWVudAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgV0VCQ09S
RV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmlu
YWw7CkBAIC02NTUsNyArNjY0LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1f
Y29udGVudEZpbHRlcjsKKyNlbHNlCisgICAgYm9vbCBtX2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIg
eyBmYWxzZSB9OworICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CisjZW5kaWYKICNl
bmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTMsNyArMjQ1Myw2IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKICAgICBtX3Byb3Zpc2lvbmFsTG9h
ZEVycm9yQmVpbmdIYW5kbGVkVVJMID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci51cmwoKTsK
IAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBhdXRvIGNvbnRlbnRGaWx0ZXIg
PSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXIoKTsKICAgICBhdXRvIGNv
bnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nID0gZmFsc2U7CiAjZW5kaWYKIApAQCAtMjQ2
MSw3ICsyNDYwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQog
ICAgIGlmIChoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAgIHdpbGxDb250aW51
ZUxvYWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5nOjpZZXM7CiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQotICAgIGlmIChjb250ZW50RmlsdGVyICYmIGNvbnRlbnRGaWx0ZXItPndpbGxI
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSkgeworICAgIGlmIChwcm92aXNpb25h
bERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZShlcnJvcikpIHsKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdpbGxDb250aW51
ZUxvYWRpbmc6OlllczsKICAgICAgICAgY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcg
PSB0cnVlOwogICAgIH0KQEAgLTI0NzEsNyArMjQ3MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRp
c3BhdGNoRGlkRmFpbFByb3Zpc2kKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAg
ICBpZiAoY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcpCi0gICAgICAgIGNvbnRlbnRG
aWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAgICBwcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGVycm9yKTsKICNlbmRpZgogCiAgICAgbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5n
SGFuZGxlZFVSTCA9IHsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRlRGF0YSA9
IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBpZiAoYXV0byBsb2FkZXIgPSBt
X2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBzaG91
bGRDb250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJl
cXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsgfQog
ICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdV
Ukw7IH0KICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgICAgIAorCisgICAgICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgU3Vic3RpdHV0ZURhdGEmKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdV
Ukw7CkBAIC02Nyw0ICs3MCwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNlc3Np
b25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNz
aW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwogICAgIH07CiAKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Cit2b2lkIFN1YnN0aXR1dGVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29udGVudCA8PCBtX2ZhaWxpbmdVUkwgPDwgbV9y
ZXNwb25zZSA8PCBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3Rvcnk7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+Citib29sIFN1YnN0aXR1dGVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgU3Vic3RpdHV0ZURhdGEmIGRhdGEpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRhLm1fY29udGVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YS5tX2ZhaWxpbmdVUkwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9yZXNwb25zZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX3Nob3VsZFJldmVhbFRvU2Vz
c2lvbkhpc3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTk3
MSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NDAgQEAKKzIwMjItMDItMTYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgY29udGVudCBmaWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg2MTUwNzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY29udGVudCBmaWx0ZXJpbmcgZnJvbSB0aGUg
RG9jdW1lbnRMb2FkZXIgY2xhc3MgaW4gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIE5ldHdvcmtSZXNv
dXJjZUxvYWRlciBjbGFzcyBpbiB0aGUKKyAgICAgICAgTmV0d29ya2luZyBwcm9jZXNzLiBUaGUg
TmV0d29ya1Jlc291cmNlTG9hZGVyIGlzIG5vdyBhIGNsaWVudCBvZiB0aGUgY29udGVudCBmaWx0
ZXIsIGFuZCB3aWxsIHNlbmQgbWVzc2FnZXMKKyAgICAgICAgdG8gdGhlIERvY3VtZW50TG9hZGVy
IGluIHRoZSBXZWJQcm9jZXNzIHRvIGNhbmNlbCB0aGUgbG9hZCB3aGVuIHRoZSBjb250ZW50IGZp
bHRlciBkZWNpZGVkIHRvIGJsb2NrIHRoZSBsb2FkLgorICAgICAgICBJZiB0aGUgY29udGVudCBm
aWx0ZXIgaXMgcHJvdmlkaW5nIHJlcGxhY2VtZW50IGRhdGEsIHRoaXMgd2lsbCBhbHNvIGJlIHNl
bnQgb3ZlciBJUEMgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgICAgIERhdGEgaXMgbm90IGJlaW5n
IHNlbnQgdG8gdGhlIFdlYlByb2Nlc3MgdW50aWwgdGhlIGNvbnRlbnQgZmlsdGVyIGhhcyBkZWNp
ZGVkIHRvIGFsbG93IHRoZSBsb2FkLCBpZiBjb250ZW50CisgICAgICAgIGZpbHRlcmluZyBpcyBl
bmFibGVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdv
cmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJl
ZGRhdGEveGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMi0xNiAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gYWRkaXRpb25zIHBvaW50
IGZvciBgc2hvdWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29nbml6ZXJg
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDYgKzY3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3Q29udmVydGVyLmg+CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4KKyNlbmRpZgorCiAjZGVmaW5lIExPQURF
Ul9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VQ
cm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVkLCBkZXN0aW5h
dGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwg
dGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3RpbmF0aW9uKSwg
aXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0FERVJfUkVMRUFTRV9M
T0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFtwYWdl
UHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0lZCwgZGVzdGlu
YXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQs
IHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0
KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCksIGlzTWFpblJlc291cmNlKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiks
IGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTg3LDggKzE5MiwxMyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIEFTU0VSVCghbV93YXNTdGFy
dGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwogCisgICAgYXV0byBuZXdSZXF1ZXN0ID0g
UmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHN0YXJ0Q29udGVudEZpbHRl
cmluZyhuZXdSZXF1ZXN0KTsKKyNlbmRpZgorCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2Vy
KSB7Ci0gICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3Qg
eyBvcmlnaW5hbFJlcXVlc3QoKSB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIt
PmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgdGhpcywgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjE3LDEzICsyMjcs
MjUgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoYXQgY29kZSBwYXRoIG9uY2UgbV9uZXR3
b3JrTG9hZENoZWNrZXIgaXMgdXNlZCBmb3IgYWxsIG5ldHdvcmsgbG9hZHMuCi0gICAgaWYgKGNh
blVzZUNhY2hlKG9yaWdpbmFsUmVxdWVzdCgpKSkgeworICAgIGlmIChjYW5Vc2VDYWNoZShuZXdS
ZXF1ZXN0KSkgewogICAgICAgICByZXRyaWV2ZUNhY2hlRW50cnkob3JpZ2luYWxSZXF1ZXN0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RhcnROZXR3b3JrTG9hZChSZXNvdXJj
ZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCBGaXJzdExvYWQ6Olllcyk7CisgICAgc3Rh
cnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIEZpcnN0TG9hZDo6
WWVzKTsKK30KKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5n
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIWlzTWFpblJlc291cmNlKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50RmlsdGVyOjpj
cmVhdGUoKnRoaXMpOworICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2ls
bFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSkpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKHJlcXVl
c3QudXJsKCkpOwogfQorI2VuZGlmCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRy
aWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewpAQCAtNjky
LDYgKzcxNCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlCiB7
CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChodHRwU3RhdHVz
Q29kZT0lZCwgTUlNRVR5cGU9JSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoPSUiIFBSSWQ2NCAiLCBoYXNDYWNoZWRFbnRyeUZvclZhbGlkYXRpb249JWQsIGhhc05l
dHdvcmtMb2FkQ2hlY2tlcj0lZCkiLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCks
IHJlY2VpdmVkUmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpLCByZWNlaXZlZFJlc3Bv
bnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCAhIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24s
ICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2Nv
bnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlY2VpdmVkUmVzcG9u
c2UpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25v
cmUpOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkKICAgICAgICAgZGlkUmVj
ZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlY2VpdmVkUmVzcG9uc2UpOwogCkBAIC05MDQsNiAr
OTMxLDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQg
ZGF0YSBzaXplIGZlYXR1cmUuCiAgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0
YS5nZXQoKSwgLTEpOwogICAgICAgICB9CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgeworICAg
ICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9w
YXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5z
dG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQo
bmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC05OTMsNiArMTAyNywxMSBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAgICAgaWYgKCFtX2ZpcnN0UmVz
cG9uc2VVUkwuaXNWYWxpZCgpKQogICAgICAgICBtX2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVj
dFJlc3BvbnNlLnVybCgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJl
Y3RSZXF1ZXN0LnVybCgpKSkgewpAQCAtMTI1MSw4ICsxMjkwLDE1IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW0KICAgICBpZiAobV9idWZmZXJlZERhdGEuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIGJvb2wgc2hvdWxkRmlsdGVyID0gZmFsc2U7CisgICAg
YXV0byBzaGFyZWRCdWZmZXIgPSBtX2J1ZmZlcmVkRGF0YS50YWtlQXNDb250aWd1b3VzKCk7Cisg
ICAgc2hvdWxkRmlsdGVyID0gbV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoc2hhcmVkQnVmZmVyLCBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoIXNob3VsZEZpbHRlcikKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVy
Q29weShzaGFyZWRCdWZmZXIuZ2V0KCkpLCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3Ro
KSk7CisjZWxzZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNl
aXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoKm1fYnVmZmVyZWREYXRhLmdldCgpKSwgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwotCisjZW5kaWYKICAgICBtX2J1ZmZlcmVk
RGF0YS5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwog
fQpAQCAtMTI2MSw2ICsxMzA3LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5k
QnVmZmVyKGMKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRl
bnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKSwgZW5jb2RlZERhdGFMZW5ndGgpKQorICAgICAgICByZXR1
cm47CisjZW5kaWYKKwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5n
dGgpKTsKIH0KIApAQCAtMTMwNyw2ICsxMzU4LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRSZXRyaWV2ZUMKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJldHJpZXZlQ2Fj
aGVFbnRyeToiKTsKICAgICBhdXRvIHJlc3BvbnNlID0gZW50cnktPnJlc3BvbnNlKCk7CiAKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlm
IChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+cmVzcG9uc2VSZWNlaXZlZCgp
ICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlc3Bv
bnNlKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVzb3VyY2Uo
KSkKICAgICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlKTsKIApA
QCAtMTM1OCw2ICsxNDE0LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVz
dWx0Rm8KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5OiIp
OwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgaWYgKCFlbnRyeS0+c2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGUoKS5pc051bGwoKSkgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIg
JiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChlbnRyeS0+YnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCksIGVudHJ5LT5idWZmZXIoKS0+c2l6ZSgpKSkgeworICAg
ICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9w
YXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5z
dG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyNlbmRpZgogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc291cmNlKGVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMzgxLDYgKzE0NDQsMTIgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGbwogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25z
ZUJvZHlEZWNvZGVkU2l6ZSA9IDA7CiAKICAgICBzZW5kQnVmZmVyKCplbnRyeS0+YnVmZmVyKCks
IGVudHJ5LT5idWZmZXIoKS0+c2l6ZSgpKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKKyAgICAg
ICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0
ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJp
bmdNYWluUmVzb3VyY2UoKTsKKyAgICB9CisjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykp
OwogfQogCkBAIC0xNjk3LDYgKzE3NjYsMzYgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmlzQXBwSW5pdGlhdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRp
YXRlZCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdo
Q29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5n
dGgpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRl
cnMucmVxdWVzdCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOworICAgIG1f
Y29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7Cit9CisK
K3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQoreworICAgIGlmIChzdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpIYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkws
IHN1YnN0aXR1dGVEYXRhKSk7CisgICAgZWxzZSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
Y29udGVudEZpbHRlcik7CisgICAgICAgIGF1dG8mIGVycm9yID0gbV9jb250ZW50RmlsdGVyLT5i
bG9ja2VkRXJyb3IoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGVycm9yKSk7CisgICAgfQor
fQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTE9BREVSX1JFTEVBU0VfTE9H
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUHJpdmF0
ZVJlbGF5ZWQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgpAQCAtNDUsNiArNDYsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CitjbGFzcyBDb250ZW50Rmls
dGVyOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC03Miw2ICs3NCw5IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciBmaW5hbAogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVi
bGljIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAogICAgICwgcHVibGljIFdl
YkNvcmU6OkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICwgcHVibGljIFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXJDbGllbnQKKyNlbmRpZgogICAgICwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVhdGUoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hy
b25vdXNMb2FkRGVsYXllZFJlcGx5JiYgcmVwbHkgPSBudWxscHRyKQpAQCAtOTIsNyArOTcsNyBA
QCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVO
ZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpOwogCi0gICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRp
YWxzKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKTsKIAogICAg
IHZvaWQgc2V0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSB7
IG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQpA
QCAtMTU1LDYgKzE2MCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQXBwSW5pdGlhdGVkKCk7
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxv
YWRlcj46OnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRl
ZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+OjpkZXJlZigpOyB9CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
JiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxheWVkUmVwbHkmJik7
CiAKQEAgLTE2Miw2ICsxNzIsMTQgQEAgcHJpdmF0ZToKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIC8vIENvbnRlbnRGaWx0ZXJDbGllbnQK
KyAgICB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgZmluYWw7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBjb250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7CisgICAgdm9p
ZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6
U3Vic3RpdHV0ZURhdGEmKSBmaW5hbDsKKyNlbmRpZgorCiAgICAgYm9vbCBjYW5Vc2VDYWNoZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICBib29sIGNhblVzZUNh
Y2hlZFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCkBA
IC0yMjAsNiArMjM4LDEwIEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291
cmNlTG9hZEluZm8oKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisgICAgdm9pZCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKKwogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gbV9jb25uZWN0aW9uOwpAQCAtMjY0LDYgKzI4NiwxMSBAQCBwcml2YXRlOgogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwogICAgIFVSTCBt
X2ZpcnN0UmVzcG9uc2VVUkw7IC8vIEZpcnN0IFVSTCBpbiByZXNwb25zZSdzIFVSTCBsaXN0ICho
dHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXNwb25zZS11cmwtbGlzdCku
CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9y
Y2VtZW50UmVzdWx0PiBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQ7CisKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisjZW5kaWYK
KwogICAgIFByaXZhdGVSZWxheWVkIG1fcHJpdmF0ZVJlbGF5ZWQgeyBQcml2YXRlUmVsYXllZDo6
Tm8gfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQ5LDYgKzM0OSwyOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzb3VyCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQor
eworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpj
YW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKK30KKwor
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8
fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdl
VVJMLCBzdWJzdGl0dXRlRGF0YSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1
bmRlZiBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lv
biAyODk5NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1N1YnN0aXR1dGVEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgU2hh
cmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwpAQCAtOTksNiArMTAxLDEyIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChj
b25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2Fk
Rm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9p
ZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRp
ZgorICAgIAogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9hZGVy
OwogICAgIFRyYWNraW5nUGFyYW1ldGVycyBtX3RyYWNraW5nUGFyYW1ldGVyczsKICAgICBXZWJS
ZXNvdXJjZUludGVyY2VwdENvbnRyb2xsZXIgbV9pbnRlcmNlcHRDb250cm9sbGVyOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw0ICszNywxMSBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxv
YWRlciBMZWdhY3lSZWNlCiAgICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlzIGZvciB3aGVuIHdl
IGhhdmUgdGhlIGVudGlyZSByZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBvbmNlLCBzdWNoIGFz
IHdoZW4gdGhlIHJlc291cmNlIGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBEaWRSZWNlaXZlUmVz
b3VyY2UoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlKQogI2VuZGlm
CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpCisgICAgQ2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJv
bUNvbnRlbnRGaWx0ZXIoVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSBzdWJzdGl0dXRlRGF0YSkKKyNlbmRpZgorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452394</attachid>
            <date>2022-02-17 11:22:12 -0800</date>
            <delta_ts>2022-02-17 13:30:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20220217112211.patch</filename>
            <type>text/plain</type>
            <size>49264</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAyLTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFIG1h
Y3JvIGZvciBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29ya2luZyBwcm9jZXNzLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaDoKKwogMjAyMi0wMi0xNiAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkb3B0IC1zdHJl
YW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6IGRl
bGVnYXRlIGNhbGxiYWNrCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCShy
ZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsMTIgQEAKICNkZWZpbmUgRU5BQkxFX0NPTlRF
TlRfRklMVEVSSU5HIDEKICNlbmRpZgogCisjaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYwMDAwKSBcCisgICAg
fHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gOTAwMDApKQorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORworI2VuZGlmCisKICNpZiAhZGVmaW5l
ZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUg
RU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
ODk5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw0NSBAQAorMjAyMi0wMi0xNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5nIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc2
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3MDI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIGZy
b20gRG9jdW1lbnRMb2FkZXIgd2hlbiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLCBzaW5jZSB0aGlz
IHRha2VzIHBsYWNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgICAgIE1vZGlmeSB0
aGUgQ29udGVudEZpbHRlciBjbGFzcyBieSByZW1vdmluZyB1c2Ugb2YgdGhlIHR5cGVzIENhY2hl
ZFJlc291cmUgYW5kIENhY2hlZFJhd1Jlc291cmNlLCBzaW5jZSBvYmplY3RzIG9mIHRoZXNlCisg
ICAgICAgIHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoZSBOZXR3b3JraW5nIHByb2Nlc3Mu
IFBhcmFtZXRlcnMgd2l0aCB0aGVzZSB0eXBlcyBhcmUgcmVwbGFjZWQgd2l0aCBVUkwgcGFyYW1l
dGVycy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW50RmlsdGVyVW50
aWxCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJCdWZmZXJzKToKKyAgICAg
ICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sp
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tO
YXZpZ2F0aW9uUG9saWN5KToKKwogMjAyMi0wMi0xNiAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBub24tdW5pZmllZCBidWlsZCBmaXggYWZ0
ZXIgcjI4OTc0MgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzY3LDcg
KzMzNjcsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMy
OUUxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYz
QTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8qIFdl
YkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVu
dFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9OwotCQlB
MTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0
IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8q
IENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzExQUJB
RjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8q
IFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QkIw
OUUxRjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2MUU2
OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2Fs
bGJhY2suaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxOCBAQCBib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAgICAgcmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgp
OwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3Qg
VVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxs
IHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmlsdGVyaW5nOworICAgIEFT
U0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkpOworICAgIG1fbWFpblJlc291cmNlVVJM
ID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWlu
UmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChtX3N0YXRl
ICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEyICsxMzUsMTcgQEAgdm9pZCBDb250ZW50Rmls
dGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFTU0VSVCghbV9tYWluUmVzb3VyY2UpOwog
ICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNlOwogfQorI2VuZGlmCiAKIHZvaWQgQ29udGVu
dEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1f
bWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxzZQogICAgIG1fbWFpblJlc291cmNlID0gbnVs
bHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTQyLDQ0
ICsxNTksNjkgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9ucwogICAg
ICAgICB9KTsKICAgICB9CiAKKyAgICBtX3Jlc3BvbnNlUmVjZWl2ZWQgPSB0cnVlOworCiAgICAg
cmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgc2l6ZV90
IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVB
ZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCisjZW5kaWYKIHsKICAg
ICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsK
IAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRh
IGZyb20gPCVzPi5cbiIsIGRhdGEuc2l6ZSgpLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZGF0YS5z
aXplKCksIHVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKwogICAgICAgICBmb3JFYWNo
Q29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29u
dGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOwog
ICAgICAgICB9KTsKLQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CisgICAg
ICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBkZWxpdmVy
UmVzb3VyY2VEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAm
ZGF0YSB9LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKKyNlbHNlCiAgICAgICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpBbGxvd2VkKQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9t
YWluUmVzb3VyY2UpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRGaWx0ZXI6
OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKQorI2Vs
c2UKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKKyNlbmRpZgogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJD
bGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0KKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2VVUkwsIHJlc291cmNlVVJMID09IG1fbWFpblJlc291cmNlVVJMKTsKKyNlbHNlCisgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAg
ICBpZiAobV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CisjZW5kaWYKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAg
ICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZp
bHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCku
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywg
IkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3VyY2UgYXQgPCVz
Pi5cbiIsIHVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgZm9yRWFjaENv
bnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW10oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50
RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmZpbmlzaGVkQWRkaW5nRGF0YSgp
OwogICAgICAgICB9KTsKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkg
ewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgICAgICBkZWxpdmVy
U3RvcmVkUmVzb3VyY2VEYXRhKCk7CisjZWxzZQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNl
RGF0YSgqbV9tYWluUmVzb3VyY2UpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTIxOSw3ICsyNjEsOSBAQCB2b2lkIENvbnRl
bnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3Rh
dGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKTsKICAg
ICBBU1NFUlQoc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgfHwgc3RhdGUgPT0gU3RhdGU6OkJsb2Nr
ZWQpOwotICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxv
YWQgc2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBT
dGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwgbV9tYWluUmVzb3VyY2UgPyBt
X21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkgOiAiIik7CisjaWYg
IUxPR19ESVNBQkxFRAorICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBk
ZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBz
dGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwgdXJsKCkuc3Ry
aW5nLmFzY2lpKCkuZGF0YSgpKTsKKyNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAgICAgbV9zdGF0
ZSA9IHN0YXRlOwogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMjgsMTIgKzI3MiwzMSBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERlY2lk
ZShTdGF0ZSBzdGF0CiAgICAgbV9jbGllbnQuY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRl
bnRGaWx0ZXIobV9ibG9ja2VkRXJyb3IpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJl
c291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRh
TGVuZ3RoKQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCisjZW5kaWYKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6QWxsb3dlZCk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbHNlCiAgICAgQVNTRVJUKHJlc291
cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1
ZmZlcigpKQogICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSk7CisjZW5kaWYKK30KKworVVJMIENv
bnRlbnRGaWx0ZXI6OnVybCgpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICByZXR1cm4gbV9tYWluUmVzb3VyY2VVUkw7CisjZWxzZQor
ICAgIGlmIChtX21haW5SZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG1fbWFpblJlc291cmNlLT51
cmwoKTsKKyAgICByZXR1cm4gVVJMKCk7CisjZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYg
YmxvY2tlZFBhZ2VVUkwoKQpAQCAtMjQ1LDYgKzMwOCw3IEBAIHN0YXRpYyBjb25zdCBVUkwmIGJs
b2NrZWRQYWdlVVJMKCkKICAgICByZXR1cm4gYmxvY2tlZFBhZ2VVUkw7CiB9CiAKKyNpZiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBEb2N1bWVu
dExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURh
dGEpCiB7CiAgICAgaWYgKGF1dG8gY29udGVudEZpbHRlciA9IGFjdGl2ZUxvYWRlci5jb250ZW50
RmlsdGVyKCkpIHsKQEAgLTI1OSw2ICszMjMsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRp
bnVlQWZ0ZXJTdWJzdGl0CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgogCiBib29sIENv
bnRlbnRGaWx0ZXI6OndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSBjb25zdAogewpAQCAtMjgzLDYgKzM0OCwxNSBAQCB2b2lkIENvbnRl
bnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hCiAgICAgbV9jbGllbnQuaGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMKCksIHN1YnN0
aXR1dGVEYXRhKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJTdG9yZWRSZXNvdXJjZURh
dGEoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2J1ZmZlcnMuc2l6ZSgpOyBp
KyspCisgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fYnVmZmVyc1tpXS5idWZmZXIsIG1f
YnVmZmVyc1tpXS5lbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgbV9idWZmZXJzLmNsZWFyKCk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5o
CShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwyMyArNTAsMzYgQEAgY2xhc3MgQ29udGVudEZpbHRl
ciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFkZFR5
cGUoKSB7IHR5cGVzKCkuYXBwZW5kKHR5cGU8VD4oKSk7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKLSAg
ICB+Q29udGVudEZpbHRlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB+Q29udGVudEZpbHRlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHVybFNjaGVtZSgpIHsgcmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOwor
I2Vsc2UKICAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291
cmNlJik7Ci0gICAgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisjZW5kaWYKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAotICAg
IGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBj
b250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRl
ck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpOworI2Vsc2UKICAgICBib29s
IGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9v
bCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyNlbmRpZgog
CiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25z
dCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwog
ICAgIGJvb2wgd2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VF
cnJvciYpIGNvbnN0OwotICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25z
dCBSZXNvdXJjZUVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAorICAgIGNvbnN0IFJlc291
cmNlRXJyb3ImIGJsb2NrZWRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tlZEVycm9yOyB9
CisgICAgYm9vbCBpc0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpB
bGxvd2VkOyB9CisgICAgYm9vbCByZXNwb25zZVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNwb25zZVJlY2VpdmVkOyB9CisgICAgCiBwcml2YXRlOgogICAgIHVzaW5nIFN0YXRlID0gUGxh
dGZvcm1Db250ZW50RmlsdGVyOjpTdGF0ZTsKIApAQCAtODIsMTUgKzk1LDMzIEBAIHByaXZhdGU6
CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgZm9yRWFjaENvbnRlbnRG
aWx0ZXJVbnRpbEJsb2NrZWQoRnVuY3Rpb24mJik7CiAgICAgdm9pZCBkaWREZWNpZGUoU3RhdGUp
OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7
CisjZWxzZQogICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYpOwot
CisjZW5kaWYKKyAgICAKKyAgICBVUkwgdXJsKCk7CisgICAgCiAgICAgQ29udGFpbmVyIG1fY29u
dGVudEZpbHRlcnM7CiAgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9jbGllbnQ7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBVUkwgbV9t
YWluUmVzb3VyY2VVUkw7CisgICAgc3RydWN0IFJlc291cmNlRGF0YUl0ZW0geworICAgICAgICBS
ZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIHNpemVfdCBlbmNvZGVk
RGF0YUxlbmd0aDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxSZXNvdXJjZURhdGFJdGVtPiBt
X2J1ZmZlcnM7CisjZWxzZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBtX21haW5SZXNvdXJjZTsKKyNlbmRpZgogICAgIGNvbnN0IFBsYXRmb3JtQ29udGVudEZp
bHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAgICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJv
cjsKICAgICBib29sIG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9yZXNwb25zZVJlY2VpdmVkIHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCShy
ZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25z
dCA9IDA7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihj
b25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAgdmlydHVhbCB2b2lk
IGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0g
MDsKKyNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxv
Y2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2Fk
Rm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3Qg
VVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxOSw3ICs0MTksNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBjb25zdAog
dm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAgICAgICAgIHJldHVy
bjsKICNlbmRpZgpAQCAtNzEwLDcgKzcxMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RGTW92ZSh1cmwpKTsK
ICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkp
CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsK
ICNlbmRpZgpAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNl
UmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpOwogICAg
IENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYg
IW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2Up
KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6
ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZChidWZmZXIpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTE0NTUsNyArMTQ1NSw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAgc3RvcExvYWRpbmco
KTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgq
dGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
IGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRl
cmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMDE3LDcgKzIwMTcsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKICAgICBtX2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgPyBD
b250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKICNlbmRpZgogCkBAIC0yMjIw
LDcgKzIyMjAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSgpCiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9t
YWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5y
ZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1f
Y29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0y
MzUwLDcgKzIzNTAsNyBAQCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IERvY3VtZW50TG9h
CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpCiB7Ci0j
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAg
ICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZp
bHRlcmluZ01haW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2UpOwogI2VuZGlmCkBAIC0yNDA3LDcg
KzI0MDcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpCiAgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQo
V1RGTW92ZShldmVudEluaXQpKTsKIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CkBAIC0yNDE4LDEyICsyNDE4LDE5IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUwKICAgICBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkKGVycm9yKTsKIH0KIAorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZp
bHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwg
U3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgcmV0dXJuIGhhbmRs
ZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkpOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCwgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGZyYW1lTG9hZGVy
KCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0
aXR1dGVEYXRhKSk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIAotUmVzb3Vy
Y2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorUmVzb3VyY2VFcnJv
ciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpCiB7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9j
dW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5
KCkgJiYgZnJhbWUoKSkgewpAQCAtMjQzMyw4ICsyNDQwLDQwIEBAIFJlc291cmNlRXJyb3IgRG9j
dW1lbnRMb2FkZXI6OmNvbnRlbnRGaWwKICAgICAgICAgfSk7CiAgICAgfQogICAgIGZyYW1lTG9h
ZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2Nr
SGFuZGxlcikpOwotICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50Rmls
dGVyRXJyb3IocmVxdWVzdCgpKTsKKyAgICBhdXRvIGVycm9yID0gZnJhbWVMb2FkZXIoKS0+Ymxv
Y2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CisKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fYmxvY2tlZEJ5Q29udGVu
dEZpbHRlciA9IHRydWU7CisgICAgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsKKyNlbmRpZgorCisg
ICAgcmV0dXJuIGVycm9yOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50
RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBj
b25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgZnJhbWVMb2FkZXIo
KS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3Rp
dHV0ZURhdGEpKTsKIH0KKworYm9vbCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlcldpbGxI
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQor
eworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJv
ckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4oKSA9
PSBlcnJvci5kb21haW4oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAmJiBt
X2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsK
KyNlbmRpZgorfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVOVVNF
RF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCisgICAgICAg
IG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7Cisj
ZW5kaWYKK30KKwogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6c2V0QWN0aXZlQ29udGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMoY29u
c3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PiYgcGF0dGVybnMpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjg5OTcxKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw3ICsxNTksNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDogcHVibGljIFJlZkNvdW50
ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
CiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ci0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLCBwdWJsaWMg
Q29udGVudEZpbHRlckNsaWVudAogI2VuZGlmCiAgICAgLCBwcml2YXRlIENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50IHsKQEAgLTQwMiwxMCArNDAyLDE0IEBAIHB1YmxpYzoKICAgICBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0
ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmICFFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIENvbnRlbnRGaWx0
ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGaWx0ZXIuZ2V0KCk7
IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRl
cj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxE
b2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyNl
bmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxv
YWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqKT4mJik7CkBAIC00NTEsNiArNDU1LDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udGlu
dWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7IH0KICAgICB2b2lkIHNl
dElzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoYm9vbCBpc0NvbnRp
bnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKSB7IG1faXNDb250aW51aW5nTG9h
ZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCA9IGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQ7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAg
ICBib29sIGNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25z
dCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisjZW5kaWYKKwogcHJvdGVjdGVk
OgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTUwMyw3ICs1MTIsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVu
dAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3Vy
Y2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7CkBAIC02NTUsNyAr
NjY0LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBv
bGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsK
KyNlbHNlCisgICAgYm9vbCBtX2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIgeyBmYWxzZSB9OworICAg
IFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgVVNF
KFFVSUNLX0xPT0spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NTMsNyArMjQ1Myw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRp
c3BhdGNoRGlkRmFpbFByb3Zpc2kKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5k
bGVkVVJMID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci51cmwoKTsKIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKLSAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBwcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXIoKTsKICAgICBhdXRvIGNvbnRlbnRGaWx0ZXJXaWxs
Q29udGludWVMb2FkaW5nID0gZmFsc2U7CiAjZW5kaWYKIApAQCAtMjQ2MSw3ICsyNDYwLDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAgIGlmIChoaXN0b3J5
KCkucHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAgIHdpbGxDb250aW51ZUxvYWRpbmcgPSBXaWxs
Q29udGludWVMb2FkaW5nOjpZZXM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAg
IGlmIChjb250ZW50RmlsdGVyICYmIGNvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlKGVycm9yKSkgeworICAgIGlmIChwcm92aXNpb25hbERvY3VtZW50TG9hZGVy
LmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpIHsK
ICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsK
ICAgICAgICAgY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcgPSB0cnVlOwogICAgIH0K
QEAgLTI0NzEsNyArMjQ3MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFBy
b3Zpc2kKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoY29udGVudEZp
bHRlcldpbGxDb250aW51ZUxvYWRpbmcpCi0gICAgICAgIGNvbnRlbnRGaWx0ZXItPmhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAgICBwcm92aXNpb25hbERvY3VtZW50
TG9hZGVyLmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsK
ICNlbmRpZgogCiAgICAgbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHsg
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9u
IDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNo
ZWNrZXI6OmNoZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3Rp
dHV0ZURhdGEoKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0
dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29u
dGludWUgPSB0cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgICAgICBpZiAoYXV0byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigp
LmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IENv
bnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwg
c3Vic3RpdHV0ZURhdGEpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZURhdGEuaAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsgfQogICAgICAgICBjb25zdCBV
UkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICAgICAg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3Bv
bnNlOyB9Ci0gICAgICAgIAorCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU3Vic3RpdHV0
ZURhdGEmKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CkBAIC02Nyw0ICs3
MCwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJp
bGl0eSBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHk6OkhpZGRlbiB9OwogICAgIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lk
IFN1YnN0aXR1dGVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IG1fY29udGVudCA8PCBtX2ZhaWxpbmdVUkwgPDwgbV9yZXNwb25zZSA8PCBtX3No
b3VsZFJldmVhbFRvU2Vzc2lvbkhpc3Rvcnk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
Citib29sIFN1YnN0aXR1dGVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3Vic3RpdHV0
ZURhdGEmIGRhdGEpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fY29udGVudCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5t
X2ZhaWxpbmdVUkwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEubV9yZXNwb25zZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDIt
MTYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
Y29udGVudCBmaWx0ZXJpbmcgdG8gTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg2MTUwNzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vdmUgY29udGVudCBmaWx0ZXJpbmcgZnJvbSB0aGUgRG9jdW1lbnRMb2FkZXIg
Y2xhc3MgaW4gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBjbGFz
cyBpbiB0aGUKKyAgICAgICAgTmV0d29ya2luZyBwcm9jZXNzLiBUaGUgTmV0d29ya1Jlc291cmNl
TG9hZGVyIGlzIG5vdyBhIGNsaWVudCBvZiB0aGUgY29udGVudCBmaWx0ZXIsIGFuZCB3aWxsIHNl
bmQgbWVzc2FnZXMKKyAgICAgICAgdG8gdGhlIERvY3VtZW50TG9hZGVyIGluIHRoZSBXZWJQcm9j
ZXNzIHRvIGNhbmNlbCB0aGUgbG9hZCB3aGVuIHRoZSBjb250ZW50IGZpbHRlciBkZWNpZGVkIHRv
IGJsb2NrIHRoZSBsb2FkLgorICAgICAgICBJZiB0aGUgY29udGVudCBmaWx0ZXIgaXMgcHJvdmlk
aW5nIHJlcGxhY2VtZW50IGRhdGEsIHRoaXMgd2lsbCBhbHNvIGJlIHNlbnQgb3ZlciBJUEMgdG8g
dGhlIFdlYlByb2Nlc3MuCisgICAgICAgIERhdGEgaXMgbm90IGJlaW5nIHNlbnQgdG8gdGhlIFdl
YlByb2Nlc3MgdW50aWwgdGhlIGNvbnRlbnQgZmlsdGVyIGhhcyBkZWNpZGVkIHRvIGFsbG93IHRo
ZSBsb2FkLCBpZiBjb250ZW50CisgICAgICAgIGZpbHRlcmluZyBpcyBlbmFibGVkLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVz
L1dlYktpdC54Y3NjaGVtZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
OjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNv
bnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5t
ZXNzYWdlcy5pbjoKKwogMjAyMi0wMi0xNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gYWRkaXRpb25zIHBvaW50IGZvciBgc2hvdWxkUmVj
b2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29nbml6ZXJgCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3Q29udmVydGVyLmg+CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSA8
V2ViQ29yZS9Db250ZW50RmlsdGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIuaD4KKyNlbmRpZgorCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xPRyhm
bXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2
NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNl
SUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVkLCBkZXN0aW5hdGlvbj0ldSwgaXNTeW5j
aHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3RpbmF0aW9uKSwgaXNTeW5jaHJvbm91cygp
LCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAu
Li4pIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1
NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEPSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3lu
Y2hyb25vdXM9JWRdIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1l
dGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyLnRvVUludDY0KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3BhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMo
KSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTg3LDggKzE5MiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIEFTU0VSVCghbV93YXNTdGFydGVkKTsKICAgICBtX3dh
c1N0YXJ0ZWQgPSB0cnVlOwogCisgICAgYXV0byBuZXdSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0
IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIHN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0
KTsKKyNlbmRpZgorCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7Ci0gICAgICAgIG1f
bmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVl
c3QoKSB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8m
JiByZXN1bHQpIHsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNl
UmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgdGhpcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH1dIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjE3LDEzICsyMjcsMjUgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoYXQgY29kZSBwYXRoIG9uY2UgbV9uZXR3b3JrTG9hZENoZWNrZXIg
aXMgdXNlZCBmb3IgYWxsIG5ldHdvcmsgbG9hZHMuCi0gICAgaWYgKGNhblVzZUNhY2hlKG9yaWdp
bmFsUmVxdWVzdCgpKSkgeworICAgIGlmIChjYW5Vc2VDYWNoZShuZXdSZXF1ZXN0KSkgewogICAg
ICAgICByZXRyaWV2ZUNhY2hlRW50cnkob3JpZ2luYWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgc3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBvcmln
aW5hbFJlcXVlc3QoKSB9LCBGaXJzdExvYWQ6Olllcyk7CisgICAgc3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIEZpcnN0TG9hZDo6WWVzKTsKK30KKworI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIWlzTWFpblJlc291cmNlKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwor
ICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRl
bnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOwogfQor
I2VuZGlmCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewpAQCAtNjkyLDYgKzcxNCwxMSBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlCiB7CiAgICAgTE9BREVSX1JF
TEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChodHRwU3RhdHVzQ29kZT0lZCwgTUlNRVR5
cGU9JSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoPSUiIFBSSWQ2
NCAiLCBoYXNDYWNoZWRFbnRyeUZvclZhbGlkYXRpb249JWQsIGhhc05ldHdvcmtMb2FkQ2hlY2tl
cj0lZCkiLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9u
c2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpLCAhIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24sICEhbV9uZXR3b3JrTG9h
ZENoZWNrZXIpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlY2VpdmVkUmVzcG9uc2UpKQorICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworI2VuZGlmCisK
ICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkKICAgICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJj
ZVJlc3BvbnNlKHJlY2VpdmVkUmVzcG9uc2UpOwogCkBAIC05MDQsNiArOTMxLDEzIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgICAgIC8vIEZJWE1F
OiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1
cmUuCiAgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwog
ICAgICAgICB9CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFp
blJlc291cmNlKCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRy
aWNzKSk7CiAgICAgfQogCkBAIC05OTMsNiArMTAyNywxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAgICAgaWYgKCFtX2ZpcnN0UmVzcG9uc2VVUkwuaXNWYWxp
ZCgpKQogICAgICAgICBtX2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgp
OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgICAgIHJl
dHVybjsKKyNlbmRpZgorCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKSkgewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgp
KSkgewpAQCAtMTI1MSw4ICsxMjkwLDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpi
dWZmZXJpbmdUaW0KICAgICBpZiAobV9idWZmZXJlZERhdGEuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIGJvb2wgc2hvdWxkRmlsdGVyID0gZmFsc2U7CisgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBtX2J1ZmZlcmVkRGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgc2hvdWxkRmlsdGVy
ID0gbV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRh
UmVjZWl2ZWQoc2hhcmVkQnVmZmVyLCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICBpZiAoIXNob3VsZEZpbHRlcikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShzaGFyZWRCdWZm
ZXIuZ2V0KCkpLCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisjZWxzZQogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkoKm1fYnVmZmVyZWREYXRhLmdldCgpKSwgbV9idWZmZXJlZERhdGFFbmNv
ZGVkRGF0YUxlbmd0aCkpOwotCisjZW5kaWYKICAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwog
ICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQpAQCAtMTI2MSw2ICsx
MzA3LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKGMKIHsKICAg
ICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1f
Y29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKSwgZW5jb2RlZERhdGFMZW5ndGgpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIApAQCAt
MTMwNyw2ICsxMzU4LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2
ZUMKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJldHJpZXZlQ2FjaGVFbnRyeToiKTsKICAg
ICBhdXRvIHJlc3BvbnNlID0gZW50cnktPnJlc3BvbnNlKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIgJiYgIW1fY29udGVudEZpbHRlci0+cmVzcG9uc2VSZWNlaXZlZCgpICYmICFtX2NvbnRlbnRG
aWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKSkKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkKICAgICAgICAgZGlk
UmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlKTsKIApAQCAtMTM1OCw2ICsxNDE0
LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coInNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5OiIpOwogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgaWYgKCFlbnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5k
bGUoKS5pc051bGwoKSkgeworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZp
bHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChlbnRyeS0+YnVmZmVyKCktPm1ha2VDb250
aWd1b3VzKCksIGVudHJ5LT5idWZmZXIoKS0+c2l6ZSgpKSkgeworICAgICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFp
blJlc291cmNlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc291cmNl
KGVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xMzgxLDYgKzE0NDQsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNl
bmRSZXN1bHRGbwogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6
ZSA9IDA7CiAKICAgICBzZW5kQnVmZmVyKCplbnRyeS0+YnVmZmVyKCksIGVudHJ5LT5idWZmZXIo
KS0+c2l6ZSgpKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJs
KCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
KTsKKyAgICB9CisjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogfQogCkBAIC0xNjk3
LDYgKzE3NjYsMzYgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQXBwSW5pdGlhdAog
ICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpOwogfQogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKK30KKworV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJE
aWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRs
ZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxv
Y2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworICAgIHJldHVybiBXZWJL
aXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7Cit9
CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9y
Q29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOworICAgIG1fY29udGVudEZpbHRlci0+
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7Cit9CisKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0
ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKQoreworICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRh
KSk7CisgICAgZWxzZSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7
CisgICAgICAgIGF1dG8mIGVycm9yID0gbV9jb250ZW50RmlsdGVyLT5ibG9ja2VkRXJyb3IoKTsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNhbmNlbE1haW5SZXNv
dXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGVycm9yKSk7CisgICAgfQorfQorI2VuZGlmIC8vIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJ
KHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZVJlbGF5ZWQuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC5oPgpAQCAtNDUsNiArNDYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CitjbGFzcyBDb250ZW50RmlsdGVyOwogY2xhc3MgRm9y
bURhdGE7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CkBAIC03Miw2ICs3NCw5IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAog
ICAgICwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAogICAgICwgcHVibGljIFdlYkNvcmU6OkNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXJDbGllbnQKKyNlbmRpZgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TmV0d29ya1Jlc291cmNl
TG9hZGVyPiBjcmVhdGUoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
LCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXll
ZFJlcGx5JiYgcmVwbHkgPSBudWxscHRyKQpAQCAtOTIsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VM
b2FkZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCi0gICAgdm9p
ZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0LCBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKTsKKyAgICB2b2lk
IGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBib29s
IGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKTsKIAogICAgIHZvaWQgc2V0UmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSB7IG1fcmVzcG9uc2UgPSBX
VEZNb3ZlKHJlc3BvbnNlKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQpAQCAtMTU1LDYgKzE2MCwx
MSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQXBwSW5pdGlhdGVkKCk7CiAKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgcmVmKCkg
Y29uc3QgZmluYWwgeyBSZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj46OnJlZigpOyB9
CisgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI+OjpkZXJlZigpOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxheWVkUmVwbHkmJik7CiAKQEAgLTE2Miw2ICsx
NzIsMTQgQEAgcHJpdmF0ZToKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ci50b1VJbnQ2NCgpOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIC8vIENvbnRlbnRGaWx0ZXJDbGllbnQKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYs
IHNpemVfdCkgZmluYWw7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVy
RGlkQmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWxNYWluUmVz
b3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
ZmluYWw7CisgICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEm
KSBmaW5hbDsKKyNlbmRpZgorCiAgICAgYm9vbCBjYW5Vc2VDYWNoZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICBib29sIGNhblVzZUNhY2hlZFJlZGlyZWN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCkBAIC0yMjAsNiArMjM4LDEw
IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsK
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgdm9pZCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CisjZW5kaWYKKwogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFy
YW1ldGVyczsKIAogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25u
ZWN0aW9uOwpAQCAtMjY0LDYgKzI4NiwxMSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwogICAgIFVSTCBtX2ZpcnN0UmVzcG9uc2VV
Ukw7IC8vIEZpcnN0IFVSTCBpbiByZXNwb25zZSdzIFVSTCBsaXN0IChodHRwczovL2ZldGNoLnNw
ZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXNwb25zZS11cmwtbGlzdCkuCiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBt
X2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQ7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisjZW5kaWYKKwogICAgIFByaXZhdGVS
ZWxheWVkIG1fcHJpdmF0ZVJlbGF5ZWQgeyBQcml2YXRlUmVsYXllZDo6Tm8gfTsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ5
LDYgKzM0OSwyOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRs
ZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIGlmICghbV9j
b3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRG
aWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJv
cikKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKK30KKwordm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBz
dWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRl
bnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRl
RGF0YSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBXRUJSRVNPVVJD
RUxPQURFUl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1
YnN0aXR1dGVEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsK
IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlTG9hZGVyOwpAQCAtOTksNiArMTAxLDEyIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYpOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRpZgorICAgIAogICAgIFJl
ZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9hZGVyOwogICAgIFRyYWNraW5n
UGFyYW1ldGVycyBtX3RyYWNraW5nUGFyYW1ldGVyczsKICAgICBXZWJSZXNvdXJjZUludGVyY2Vw
dENvbnRyb2xsZXIgbV9pbnRlcmNlcHRDb250cm9sbGVyOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw0ICszNywxMSBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNl
CiAgICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlzIGZvciB3aGVuIHdlIGhhdmUgdGhlIGVudGly
ZSByZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBvbmNlLCBzdWNoIGFzIHdoZW4gdGhlIHJlc291
cmNlIGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBEaWRSZWNlaXZlUmVzb3VyY2UoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlKQogI2VuZGlmCisKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIENvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxv
Y2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisgICAgQ2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBl
cnJvcikKKyAgICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIo
VVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0
YSkKKyNlbmRpZgorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452424</attachid>
            <date>2022-02-17 13:30:20 -0800</date>
            <delta_ts>2022-02-18 13:12:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20220217133019.patch</filename>
            <type>text/plain</type>
            <size>50523</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAyLTE3ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5l
dHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFIG1h
Y3JvIGZvciBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29ya2luZyBwcm9jZXNzLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaDoKKwogMjAyMi0wMi0xNiAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkb3B0IC1zdHJl
YW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6IGRl
bGVnYXRlIGNhbGxiYWNrCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCShy
ZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsMTIgQEAKICNkZWZpbmUgRU5BQkxFX0NPTlRF
TlRfRklMVEVSSU5HIDEKICNlbmRpZgogCisjaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYwMDAwKSBcCisgICAg
fHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gOTAwMDApKQorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORworI2VuZGlmCisKICNpZiAhZGVmaW5l
ZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUg
RU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
ODk5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw0NSBAQAorMjAyMi0wMi0xNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5nIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc2
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3MDI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIGZy
b20gRG9jdW1lbnRMb2FkZXIgd2hlbiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLCBzaW5jZSB0aGlz
IHRha2VzIHBsYWNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgICAgIE1vZGlmeSB0
aGUgQ29udGVudEZpbHRlciBjbGFzcyBieSByZW1vdmluZyB1c2Ugb2YgdGhlIHR5cGVzIENhY2hl
ZFJlc291cmUgYW5kIENhY2hlZFJhd1Jlc291cmNlLCBzaW5jZSBvYmplY3RzIG9mIHRoZXNlCisg
ICAgICAgIHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoZSBOZXR3b3JraW5nIHByb2Nlc3Mu
IFBhcmFtZXRlcnMgd2l0aCB0aGVzZSB0eXBlcyBhcmUgcmVwbGFjZWQgd2l0aCBVUkwgcGFyYW1l
dGVycy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW50RmlsdGVyVW50
aWxCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJCdWZmZXJzKToKKyAgICAg
ICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sp
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tO
YXZpZ2F0aW9uUG9saWN5KToKKwogMjAyMi0wMi0xNiAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBub24tdW5pZmllZCBidWlsZCBmaXggYWZ0
ZXIgcjI4OTc0MgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzY3LDcg
KzMzNjcsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMy
OUUxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYz
QTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8qIFdl
YkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVu
dFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9OwotCQlB
MTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0
IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8q
IENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzExQUJB
RjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8q
IFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QkIw
OUUxRjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2MUU2
OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2Fs
bGJhY2suaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxOCBAQCBib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAgICAgcmV0dXJuICFyZXF1ZXN0LmlzTnVsbCgp
OwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3Qg
VVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxs
IHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCB1cmwuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmlsdGVyaW5nOworICAgIEFT
U0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkpOworICAgIG1fbWFpblJlc291cmNlVVJM
ID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWlu
UmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChtX3N0YXRl
ICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEyICsxMzUsMTcgQEAgdm9pZCBDb250ZW50Rmls
dGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFTU0VSVCghbV9tYWluUmVzb3VyY2UpOwog
ICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNlOwogfQorI2VuZGlmCiAKIHZvaWQgQ29udGVu
dEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1f
bWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxzZQogICAgIG1fbWFpblJlc291cmNlID0gbnVs
bHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTQyLDQ0
ICsxNTksNjkgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9ucwogICAg
ICAgICB9KTsKICAgICB9CiAKKyAgICBtX3Jlc3BvbnNlUmVjZWl2ZWQgPSB0cnVlOworCiAgICAg
cmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgc2l6ZV90
IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVB
ZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCisjZW5kaWYKIHsKICAg
ICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsK
IAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRh
IGZyb20gPCVzPi5cbiIsIGRhdGEuc2l6ZSgpLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZGF0YS5z
aXplKCksIHVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKwogICAgICAgICBmb3JFYWNo
Q29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29u
dGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOwog
ICAgICAgICB9KTsKLQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CisgICAg
ICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBkZWxpdmVy
UmVzb3VyY2VEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAm
ZGF0YSB9LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKKyNlbHNlCiAgICAgICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpBbGxvd2VkKQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9t
YWluUmVzb3VyY2UpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCitib29sIENvbnRlbnRGaWx0ZXI6
OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKQorI2Vs
c2UKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKKyNlbmRpZgogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJD
bGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0KKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2VVUkwsIHJlc291cmNlVVJMID09IG1fbWFpblJlc291cmNlVVJMKTsKKyNlbHNlCisgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAg
ICBpZiAobV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CisjZW5kaWYKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAg
ICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZp
bHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCku
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywg
IkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3VyY2UgYXQgPCVz
Pi5cbiIsIHVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgZm9yRWFjaENv
bnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW10oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50
RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmZpbmlzaGVkQWRkaW5nRGF0YSgp
OwogICAgICAgICB9KTsKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkg
ewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgICAgICBkZWxpdmVy
U3RvcmVkUmVzb3VyY2VEYXRhKCk7CisjZWxzZQogICAgICAgICAgICAgZGVsaXZlclJlc291cmNl
RGF0YSgqbV9tYWluUmVzb3VyY2UpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTIxOSw3ICsyNjEsOSBAQCB2b2lkIENvbnRl
bnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3Rh
dGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKTsKICAg
ICBBU1NFUlQoc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgfHwgc3RhdGUgPT0gU3RhdGU6OkJsb2Nr
ZWQpOwotICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBkZWNpZGVkIGxv
YWQgc2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBT
dGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwgbV9tYWluUmVzb3VyY2UgPyBt
X21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkgOiAiIik7CisjaWYg
IUxPR19ESVNBQkxFRAorICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciBk
ZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBz
dGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwgdXJsKCkuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkpOworI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKICAgICBtX3N0
YXRlID0gc3RhdGU7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAg
IHJldHVybjsKQEAgLTIyOCwxMiArMjcyLDMxIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVj
aWRlKFN0YXRlIHN0YXQKICAgICBtX2NsaWVudC5jYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29u
dGVudEZpbHRlcihtX2Jsb2NrZWRFcnJvcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVy
UmVzb3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERh
dGFMZW5ndGgpCisjZWxzZQogdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRh
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKKyNlbmRpZgogewogICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpBbGxvd2VkKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworI2Vsc2UKICAgICBBU1NFUlQocmVz
b3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNl
QnVmZmVyKCkpCiAgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKKyNlbmRpZgorfQorCitVUkwg
Q29udGVudEZpbHRlcjo6dXJsKCkKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIHJldHVybiBtX21haW5SZXNvdXJjZVVSTDsKKyNlbHNl
CisgICAgaWYgKG1fbWFpblJlc291cmNlKQorICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2Ut
PnVybCgpOworICAgIHJldHVybiBVUkwoKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCgpCkBAIC0yNDUsNiArMzA4LDcgQEAgc3RhdGljIGNvbnN0IFVSTCYg
YmxvY2tlZFBhZ2VVUkwoKQogICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsKIH0KIAorI2lmICFF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3Vt
ZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRl
RGF0YSkKIHsKICAgICBpZiAoYXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRl
bnRGaWx0ZXIoKSkgewpAQCAtMjU5LDYgKzMyMyw3IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29u
dGludWVBZnRlclN1YnN0aXQKIAogICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIGJvb2wg
Q29udGVudEZpbHRlcjo6d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpIGNvbnN0CiB7CkBAIC0yODMsNiArMzQ4LDE1IEBAIHZvaWQgQ29u
dGVudEZpbHRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2EKICAgICBtX2NsaWVudC5oYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwoKSwgc3Vi
c3RpdHV0ZURhdGEpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclN0b3JlZFJlc291cmNl
RGF0YSgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYnVmZmVycy5zaXplKCk7
IGkrKykKKyAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9idWZmZXJzW2ldLmJ1ZmZlciwg
bV9idWZmZXJzW2ldLmVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2J1ZmZlcnMuY2xlYXIoKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmgJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDIzICs1MCwzNiBAQCBjbGFzcyBDb250ZW50Rmls
dGVyIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgYWRk
VHlwZSgpIHsgdHlwZXMoKS5hcHBlbmQodHlwZTxUPigpKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYpOwot
ICAgIH5Db250ZW50RmlsdGVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYpOworICAg
IFdFQkNPUkVfRVhQT1JUIH5Db250ZW50RmlsdGVyKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogdXJsU2NoZW1lKCkgeyByZXR1cm4gIngtYXBwbGUtY29udGVudC1maWx0ZXIiOyB9CiAKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3QgVVJMJik7
CisjZWxzZQogICAgIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVz
b3VyY2UmKTsKLSAgICB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyNlbmRpZgor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogCi0g
ICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlclJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFm
dGVyTm90aWZ5RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVSTCk7CisjZWxzZQogICAgIGJv
b2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBi
b29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpOworI2VuZGlm
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CiAgICAgYm9vbCB3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJj
ZUVycm9yJikgY29uc3Q7Ci0gICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCisgICAgY29uc3QgUmVz
b3VyY2VFcnJvciYgYmxvY2tlZEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2VkRXJyb3I7
IH0KKyAgICBib29sIGlzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQ7IH0KKyAgICBib29sIHJlc3BvbnNlUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlUmVjZWl2ZWQ7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgdXNpbmcgU3RhdGUgPSBQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXI6OlN0YXRlOwogCkBAIC04MiwxNSArOTUsMzMgQEAgcHJpdmF0
ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCBmb3JFYWNoQ29udGVu
dEZpbHRlclVudGlsQmxvY2tlZChGdW5jdGlvbiYmKTsKICAgICB2b2lkIGRpZERlY2lkZShTdGF0
ZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90
IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEo
KTsKKyNlbHNlCiAgICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJik7
Ci0KKyNlbmRpZgorICAgIAorICAgIFVSTCB1cmwoKTsKKyAgICAKICAgICBDb250YWluZXIgbV9j
b250ZW50RmlsdGVyczsKICAgICBDb250ZW50RmlsdGVyQ2xpZW50JiBtX2NsaWVudDsKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVSTCBt
X21haW5SZXNvdXJjZVVSTDsKKyAgICBzdHJ1Y3QgUmVzb3VyY2VEYXRhSXRlbSB7CisgICAgICAg
IFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgc2l6ZV90IGVuY29k
ZWREYXRhTGVuZ3RoOworICAgIH07CisgICAgCisgICAgVmVjdG9yPFJlc291cmNlRGF0YUl0ZW0+
IG1fYnVmZmVyczsKKyNlbHNlCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVz
b3VyY2U+IG1fbWFpblJlc291cmNlOworI2VuZGlmCiAgICAgY29uc3QgUGxhdGZvcm1Db250ZW50
RmlsdGVyKiBtX2Jsb2NraW5nQ29udGVudEZpbHRlciB7IG51bGxwdHIgfTsKICAgICBTdGF0ZSBt
X3N0YXRlIHsgU3RhdGU6OlN0b3BwZWQgfTsKICAgICBSZXNvdXJjZUVycm9yIG1fYmxvY2tlZEVy
cm9yOwogICAgIGJvb2wgbV9pc0xvYWRpbmdCbG9ja2VkUGFnZSB7IGZhbHNlIH07CisgICAgYm9v
bCBtX3Jlc3BvbnNlUmVjZWl2ZWQgeyBmYWxzZSB9OwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNv
bnN0ID0gMDsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgPSAwOworI2Vsc2UKICAgICB2aXJ0dWFsIHZv
aWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikg
PSAwOworI2VuZGlmCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRC
bG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjg5OTcxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDE5LDcgKzQxOSw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZygpIGNvbnN0
CiB2b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZp
bHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKHJlc291cmNlKSkKICAgICAgICAgcmV0
dXJuOwogI2VuZGlmCkBAIC03MTAsNyArNzEwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICBuZXdSZXF1ZXN0LnNldFVSTChXVEZNb3ZlKHVybCkp
OwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+
Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkp
OwogI2VuZGlmCkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9u
c2VSZWNlaXZlZChjbwogICAgIEFTU0VSVChyZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSk7CiAg
ICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAm
JiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChyZXNwb25z
ZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTMyMiw3ICsxMzIyLDcgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZAogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1f
Y29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2Vp
dmVkKGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTQ1NSw3ICsxNDU1LDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKICAgICBzdG9wTG9hZGlu
ZygpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50
KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0j
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAg
ICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmls
dGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIwMTcsNyArMjAxNyw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQogICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/
IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOwogI2VuZGlmCiAKQEAgLTIy
MjAsNyArMjIyMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBt
X21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2Ut
PnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAg
bV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAg
LTIzNTAsNyArMjM1MCw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnRM
b2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKIHsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
ICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0
RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5kaWYKQEAgLTI0MDcs
NyArMjQwNyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVu
dChXVEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKQEAgLTI0MTgsMTIgKzI0MTgsMTkgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTAogICAgIGNhbmNlbE1haW5SZXNvdXJj
ZUxvYWQoZXJyb3IpOwogfQogCitSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250ZW50
RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICByZXR1cm4gaGFu
ZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cit9CisKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQ
YWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgZnJhbWVMb2Fk
ZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vi
c3RpdHV0ZURhdGEpKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYm
ICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogCi1SZXNv
dXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCkKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCitSZXNvdXJjZUVy
cm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCkKIHsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChk
b2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1w
dHkoKSAmJiBmcmFtZSgpKSB7CkBAIC0yNDMzLDggKzI0NDAsNDAgQEAgUmVzb3VyY2VFcnJvciBE
b2N1bWVudExvYWRlcjo6Y29udGVudEZpbAogICAgICAgICB9KTsKICAgICB9CiAgICAgZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxv
Y2tIYW5kbGVyKSk7Ci0gICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmJsb2NrZWRCeUNvbnRlbnRG
aWx0ZXJFcnJvcihyZXF1ZXN0KCkpOworICAgIGF1dG8gZXJyb3IgPSBmcmFtZUxvYWRlcigpLT5i
bG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCgpKTsKKworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgbV9ibG9ja2VkQnlDb250
ZW50RmlsdGVyID0gdHJ1ZTsKKyAgICBtX2Jsb2NrZWRFcnJvciA9IGVycm9yOworI2VuZGlmCisK
KyAgICByZXR1cm4gZXJyb3I7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRl
bnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBmcmFtZUxvYWRl
cigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJz
dGl0dXRlRGF0YSkpOwogfQorCitib29sIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyV2ls
bEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICByZXR1cm4gbV9ibG9ja2VkQnlDb250ZW50RmlsdGVyICYmIG1fYmxvY2tlZEVycm9yLmVy
cm9yQ29kZSgpID09IGVycm9yLmVycm9yQ29kZSgpICYmIG1fYmxvY2tlZEVycm9yLmRvbWFpbigp
ID09IGVycm9yLmRvbWFpbigpOworI2Vsc2UKKyAgICByZXR1cm4gbV9jb250ZW50RmlsdGVyICYm
IG1fY29udGVudEZpbHRlci0+d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3Ip
OworI2VuZGlmCit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJIYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgVU5V
U0VEX1BBUkFNKGVycm9yKTsKKyNlbHNlCisgICAgaWYgKG1fY29udGVudEZpbHRlcikKKyAgICAg
ICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsK
KyNlbmRpZgorfQorCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiB2b2lk
IERvY3VtZW50TG9hZGVyOjpzZXRBY3RpdmVDb250ZW50UnVsZUxpc3RBY3Rpb25QYXR0ZXJucyhj
b25zdCBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4+JiBwYXR0ZXJucykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU5LDcgKzE1OSw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMgUmVmQ291
bnRlZDxEb2N1bWVudExvYWRlcj4KICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIKICAgICAsIHB1YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAsIHB1Ymxp
YyBDb250ZW50RmlsdGVyQ2xpZW50CiAjZW5kaWYKICAgICAsIHByaXZhdGUgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgewpAQCAtNDAyLDEwICs0MDIsMTQgQEAgcHVibGljOgogICAgIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFn
YXRlKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQ29udGVudEZp
bHRlciogY29udGVudEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZpbHRlci5nZXQo
KTsgfQogICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9h
ZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVk
PERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQg
UmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwor
I2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciopPiYmKTsKQEAgLTQ1MSw2ICs0NTUsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb250
aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZDsgfQogICAgIHZvaWQg
c2V0SXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZChib29sIGlzQ29u
dGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpIHsgbV9pc0NvbnRpbnVpbmdM
b2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkID0gaXNDb250aW51aW5nTG9hZEFmdGVyUHJv
dmlzaW9uYWxMb2FkU3RhcnRlZDsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
ICAgIGJvb2wgY29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyNlbmRpZgorCiBwcm90ZWN0
ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKIApAQCAtNTAzLDcgKzUxMiw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xp
ZW50CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNv
dXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKQEAgLTY1NSw3
ICs2NjQsMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5
UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVy
OworI2Vsc2UKKyAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciB7IGZhbHNlIH07Cisg
ICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAko
cmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQ1Myw3ICsyNDUzLDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAgIG1fcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hh
bmRsZWRVUkwgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLnVybCgpOwogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQotICAgIGF1dG8gY29udGVudEZpbHRlciA9IHByb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlcigpOwogICAgIGF1dG8gY29udGVudEZpbHRlcldp
bGxDb250aW51ZUxvYWRpbmcgPSBmYWxzZTsKICNlbmRpZgogCkBAIC0yNDYxLDcgKzI0NjAsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAgICAgaWYgKGhpc3Rv
cnkoKS5wcm92aXNpb25hbEl0ZW0oKSkKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdp
bGxDb250aW51ZUxvYWRpbmc6OlllczsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0g
ICAgaWYgKGNvbnRlbnRGaWx0ZXIgJiYgY29udGVudEZpbHRlci0+d2lsbEhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmUoZXJyb3IpKSB7CisgICAgaWYgKHByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIuY29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSkg
ewogICAgICAgICB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENvbnRpbnVlTG9hZGluZzo6WWVz
OwogICAgICAgICBjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZyA9IHRydWU7CiAgICAg
fQpAQCAtMjQ3MSw3ICsyNDcwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChjb250ZW50
RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZykKLSAgICAgICAgY29udGVudEZpbHRlci0+aGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgIHByb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIuY29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3Ip
OwogI2VuZGlmCiAKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0g
eyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNp
b24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5
Q2hlY2tlcjo6Y2hlY2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbG9hZGVyLT5zdWJz
dGl0dXRlRGF0YSgpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgIXN1YnN0
aXR1dGVEYXRhLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgYm9vbCBzaG91bGRD
b250aW51ZSA9IHRydWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChhdXRvIGxvYWRlciA9IG1fZnJhbWUubG9hZGVy
KCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0g
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdCgqbG9hZGVy
LCBzdWJzdGl0dXRlRGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlRGF0YS5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3Vic3RpdHV0ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0
IFVSTCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAg
ICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2U7IH0KLSAgICAgICAgCisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBTdWJzdGl0
dXRlRGF0YSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1fY29udGVudDsKICAgICAgICAgVVJMIG1fZmFpbGluZ1VSTDsKQEAgLTY3LDQg
KzcwLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eTo6SGlkZGVuIH07CiAgICAgfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3Zv
aWQgU3Vic3RpdHV0ZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgbV9jb250ZW50IDw8IG1fZmFpbGluZ1VSTCA8PCBtX3Jlc3BvbnNlIDw8IG1f
c2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KK2Jvb2wgU3Vic3RpdHV0ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTdWJzdGl0
dXRlRGF0YSYgZGF0YSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9jb250ZW50
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
Lm1fZmFpbGluZ1VSTCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YS5tX3Jlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAyMi0w
Mi0xNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92
ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5nIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc2MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vODYxNTA3MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyBmcm9tIHRoZSBEb2N1bWVudExvYWRl
ciBjbGFzcyBpbiB0aGUgV2ViUHJvY2VzcyB0byB0aGUgTmV0d29ya1Jlc291cmNlTG9hZGVyIGNs
YXNzIGluIHRoZQorICAgICAgICBOZXR3b3JraW5nIHByb2Nlc3MuIFRoZSBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIgaXMgbm93IGEgY2xpZW50IG9mIHRoZSBjb250ZW50IGZpbHRlciwgYW5kIHdpbGwg
c2VuZCBtZXNzYWdlcworICAgICAgICB0byB0aGUgRG9jdW1lbnRMb2FkZXIgaW4gdGhlIFdlYlBy
b2Nlc3MgdG8gY2FuY2VsIHRoZSBsb2FkIHdoZW4gdGhlIGNvbnRlbnQgZmlsdGVyIGRlY2lkZWQg
dG8gYmxvY2sgdGhlIGxvYWQuCisgICAgICAgIElmIHRoZSBjb250ZW50IGZpbHRlciBpcyBwcm92
aWRpbmcgcmVwbGFjZW1lbnQgZGF0YSwgdGhpcyB3aWxsIGFsc28gYmUgc2VudCBvdmVyIElQQyB0
byB0aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgRGF0YSBpcyBub3QgYmVpbmcgc2VudCB0byB0aGUg
V2ViUHJvY2VzcyB1bnRpbCB0aGUgY29udGVudCBmaWx0ZXIgaGFzIGRlY2lkZWQgdG8gYWxsb3cg
dGhlIGxvYWQsIGlmIGNvbnRlbnQKKyAgICAgICAgZmlsdGVyaW5nIGlzIGVuYWJsZWQuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZp
bHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
YW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVt
ZXMvV2ViS2l0Lnhjc2NoZW1lOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9t
Q29udGVudEZpbHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTE2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBhZGRpdGlvbnMgcG9pbnQgZm9yIGBzaG91bGRS
ZWNvZ25pemVTaW11bHRhbmVvdXNseVdpdGhHZXN0dXJlUmVjb2duaXplcmAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsMTEg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXZpZXdDb252ZXJ0ZXIuaD4KICNlbmRpZgogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpbmNsdWRl
IDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlci5oPgorI2VuZGlmCisKICNkZWZpbmUgTE9BREVSX1JFTEVBU0VfTE9H
KGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJ
dTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRD0lIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2U9JWQsIGRlc3RpbmF0aW9uPSV1LCBpc1N5
bmNocm9ub3VzPSVkXSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRl
cnMuaWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc01haW5SZXNvdXJjZSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9wYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24pLCBpc1N5bmNocm9ub3Vz
KCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIExPQURFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQs
IC4uLikgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBS
SXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291
cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVkLCBkZXN0aW5hdGlvbj0ldSwgaXNT
eW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVzb3VyY2UoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3RpbmF0aW9uKSwgaXNTeW5jaHJvbm91
cygpLCAjI19fVkFfQVJHU19fKQogCkBAIC0xODcsOCArMTkyLDEzIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAgIG1f
d2FzU3RhcnRlZCA9IHRydWU7CiAKKyAgICBhdXRvIG5ld1JlcXVlc3QgPSBSZXNvdXJjZVJlcXVl
c3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgc3RhcnRDb250ZW50RmlsdGVyaW5nKG5ld1JlcXVl
c3QpOworI2VuZGlmCisKICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKLSAgICAgICAg
bV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVx
dWVzdCgpIH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoYXV0
byYmIHJlc3VsdCkgeworICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3Vy
Y2VSZXF1ZXN0IHsgbmV3UmVxdWVzdCB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTcsMTMgKzIyNywyNSBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhhdCBjb2RlIHBhdGggb25jZSBtX25ldHdvcmtMb2FkQ2hlY2tl
ciBpcyB1c2VkIGZvciBhbGwgbmV0d29yayBsb2Fkcy4KLSAgICBpZiAoY2FuVXNlQ2FjaGUob3Jp
Z2luYWxSZXF1ZXN0KCkpKSB7CisgICAgaWYgKGNhblVzZUNhY2hlKG5ld1JlcXVlc3QpKSB7CiAg
ICAgICAgIHJldHJpZXZlQ2FjaGVFbnRyeShvcmlnaW5hbFJlcXVlc3QoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCB7IG9y
aWdpbmFsUmVxdWVzdCgpIH0sIEZpcnN0TG9hZDo6WWVzKTsKKyAgICBzdGFydE5ldHdvcmtMb2Fk
KFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgRmlyc3RMb2FkOjpZZXMpOworfQorCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghaXNNYWluUmVzb3VyY2UoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcyk7
CisgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3Qo
cmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UocmVxdWVzdC51cmwoKSk7CiB9
CisjZW5kaWYKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRy
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CkBAIC02OTIsNiArNzE0LDExIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmUKIHsKICAgICBMT0FERVJf
UkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBNSU1F
VHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRlbnRMZW5ndGg9JSIgUFJJ
ZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFzTmV0d29ya0xvYWRDaGVj
a2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNw
b25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgISFtX25ldHdvcmtM
b2FkQ2hlY2tlcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+
Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVjZWl2ZWRSZXNwb25zZSkpCisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisjZW5kaWYK
KwogICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBkaWRSZWNlaXZlTWFpblJlc291
cmNlUmVzcG9uc2UocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTkwNCw2ICs5MzEsMTMgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAgICAgICAgLy8gRklY
TUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVh
dHVyZS4KICAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLmdldCgpLCAtMSk7
CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBtX2Nv
bnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVx
dWVzdC51cmwoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdN
YWluUmVzb3VyY2UoKTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1l
dHJpY3MpKTsKICAgICB9CiAKQEAgLTk5Myw2ICsxMDI3LDExIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGkKICAgICBpZiAoIW1fZmlyc3RSZXNwb25zZVVSTC5pc1Zh
bGlkKCkpCiAgICAgICAgIG1fZmlyc3RSZXNwb25zZVVSTCA9IHJlZGlyZWN0UmVzcG9uc2UudXJs
KCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVB
ZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCisKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVt
ZXJhbCgpKSB7CiAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QudXJs
KCkpKSB7CkBAIC0xMjUxLDggKzEyOTAsMTUgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgYm9vbCBzaG91bGRGaWx0ZXIgPSBmYWxzZTsKKyAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IG1fYnVmZmVyZWREYXRhLnRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICBzaG91bGRGaWx0
ZXIgPSBtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRh
dGFSZWNlaXZlZChzaGFyZWRCdWZmZXIsIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgp
OworICAgIGlmICghc2hvdWxkRmlsdGVyKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KHNoYXJlZEJ1
ZmZlci5nZXQoKSksIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyNlbHNlCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKElQQzo6
U2hhcmVkQnVmZmVyQ29weSgqbV9idWZmZXJlZERhdGEuZ2V0KCkpLCBtX2J1ZmZlcmVkRGF0YUVu
Y29kZWREYXRhTGVuZ3RoKSk7Ci0KKyNlbmRpZgogICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7
CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CkBAIC0xMjYxLDYg
KzEzMDcsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoYwogewog
ICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAh
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLCBlbmNvZGVkRGF0YUxlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgor
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCkBA
IC0xMzA3LDYgKzEzNTgsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJp
ZXZlQwogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmV0cmlldmVDYWNoZUVudHJ5OiIpOwog
ICAgIGF1dG8gcmVzcG9uc2UgPSBlbnRyeS0+cmVzcG9uc2UoKTsKIAorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZp
bHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5yZXNwb25zZVJlY2VpdmVkKCkgJiYgIW1fY29udGVu
dEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpKQorICAgICAg
ICByZXR1cm47CisjZW5kaWYKKwogICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBk
aWRSZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UpOwogCkBAIC0xMzU4LDYgKzE0
MTQsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGbwogICAgIExP
QURFUl9SRUxFQVNFX0xPRygic2VuZFJlc3VsdEZvckNhY2hlRW50cnk6Iik7CiAjaWYgRU5BQkxF
KFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBpZiAoIWVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhh
bmRsZSgpLmlzTnVsbCgpKSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50
RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGVudHJ5LT5idWZmZXIoKS0+bWFrZUNv
bnRpZ3VvdXMoKSwgZW50cnktPmJ1ZmZlcigpLT5zaXplKCkpKSB7CisgICAgICAgICAgICBtX2Nv
bnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVx
dWVzdC51cmwoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdN
YWluUmVzb3VyY2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzb3Vy
Y2UoZW50cnktPnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKCkpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTEzODEsNiArMTQ0NCwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VuZFJlc3VsdEZvCiAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keURlY29kZWRT
aXplID0gMDsKIAogICAgIHNlbmRCdWZmZXIoKmVudHJ5LT5idWZmZXIoKSwgZW50cnktPmJ1ZmZl
cigpLT5zaXplKCkpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRlcikgeworICAgICAgICBtX2NvbnRlbnRG
aWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51
cmwoKSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJj
ZSgpOworICAgIH0KKyNlbmRpZgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiB9CiAKQEAgLTE2
OTcsNiArMTc2NiwzNiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBcHBJbml0aWF0
CiAgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCk7CiB9CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCkpOworfQorCitX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRl
ckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5i
bG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgcmV0dXJuIFdl
YktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsK
K30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRG
b3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQorewor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7CisgICAgbV9jb250ZW50RmlsdGVy
LT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKK30KKwordm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEpCit7CisgICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURh
dGEpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVy
KTsKKyAgICAgICAgYXV0byYgZXJyb3IgPSBtX2NvbnRlbnRGaWx0ZXItPmJsb2NrZWRFcnJvcigp
OworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuY2VsTWFpblJl
c291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoZXJyb3IpKTsKKyAgICB9Cit9CisjZW5kaWYgLy8g
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBMT0FERVJfUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcml2YXRlUmVsYXllZC5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50Lmg+CkBAIC00NSw2ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKK2NsYXNzIENvbnRlbnRGaWx0ZXI7CiBjbGFzcyBG
b3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKQEAgLTcyLDYgKzc0LDkgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyIGZpbmFs
CiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Q3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6Q29udGVu
dEZpbHRlckNsaWVudAorI2VuZGlmCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29y
a1Jlc291cmNlTG9hZGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxh
eWVkUmVwbHkmJiByZXBseSA9IG51bGxwdHIpCkBAIC05Miw3ICs5Nyw3IEBAIHB1YmxpYzoKICAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtSZXNvdXJj
ZUxvYWRlck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKLSAgICB2
b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5l
d1JlcXVlc3QsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOworICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGJv
b2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOwogCiAgICAgdm9pZCBzZXRSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpIHsgbV9yZXNwb25zZSA9
IFdURk1vdmUocmVzcG9uc2UpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CkBAIC0xNTUsNiArMTYw
LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBcHBJbml0aWF0ZWQoKTsKIAorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCByZWYo
KSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPjo6cmVmKCk7
IH0KKyAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPE5ldHdvcmtSZXNv
dXJjZUxvYWRlcj46OmRlcmVmKCk7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmKTsKIApAQCAtMTYyLDYg
KzE3MiwxNCBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLnRvVUludDY0KCk7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAorICAgIHZvaWQgZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Jiwgc2l6ZV90KSBmaW5hbDsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0
ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYm
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE1haW5S
ZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYpIGZpbmFsOworI2VuZGlmCisKICAgICBib29sIGNhblVzZUNhY2hlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIGJvb2wgY2FuVXNlQ2FjaGVkUmVkaXJlY3Qo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKQEAgLTIyMCw2ICsyMzgs
MTAgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbygp
OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICB2b2lkIHN0YXJ0Q29udGVudEZpbHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKKyNlbmRpZgorCiAgICAgY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9w
YXJhbWV0ZXJzOwogCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nv
bm5lY3Rpb247CkBAIC0yNjQsNiArMjg2LDExIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3JlZGlyZWN0UmVzcG9uc2U7CiAgICAgVVJMIG1fZmlyc3RSZXNwb25z
ZVVSTDsgLy8gRmlyc3QgVVJMIGluIHJlc3BvbnNlJ3MgVVJMIGxpc3QgKGh0dHBzOi8vZmV0Y2gu
c3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXJlc3BvbnNlLXVybC1saXN0KS4KICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+
IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdDsKKworI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyNlbmRpZgorCiAgICAgUHJpdmF0
ZVJlbGF5ZWQgbV9wcml2YXRlUmVsYXllZCB7IFByaXZhdGVSZWxheWVkOjpObyB9OwogfTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDksNiArMzQ5LDI5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIK
IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgaWYgKCFt
X2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVu
dEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNv
dXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50
TG9hZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIo
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEm
IHN1YnN0aXR1dGVEYXRhKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29u
dGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1
dGVEYXRhKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFdFQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4OTk3MSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlTG9hZGVySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U3Vic3RpdHV0ZURhdGEuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VMb2FkZXI7CkBAIC05OSw2ICsxMDEsMTIgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJik7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KTsKKyAgICB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdl
VVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOworI2VuZGlmCisgICAgCiAgICAg
UmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7CiAgICAgVHJhY2tp
bmdQYXJhbWV0ZXJzIG1fdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIFdlYlJlc291cmNlSW50ZXJj
ZXB0Q29udHJvbGxlciBtX2ludGVyY2VwdENvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTM3LDQgKzM3LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJl
Y2UKICAgICAvLyBEaWRSZWNlaXZlUmVzb3VyY2UgaXMgZm9yIHdoZW4gd2UgaGF2ZSB0aGUgZW50
aXJlIHJlc291cmNlIGRhdGEgYXZhaWxhYmxlIGF0IG9uY2UsIHN1Y2ggYXMgd2hlbiB0aGUgcmVz
b3VyY2UgaXMgY2FjaGVkIGluIG1lbW9yeQogICAgIERpZFJlY2VpdmVSZXNvdXJjZShXZWJLaXQ6
OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgcmVzb3VyY2UpCiAjZW5kaWYKKworI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQ29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5i
bG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDYW5j
ZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yKQorICAgIEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cihVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVE
YXRhKQorI2VuZGlmCisKIH0KSW5kZXg6IFdlYktpdC54Y3dvcmtzcGFjZS94Y3NoYXJlZGRhdGEv
eGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Lnhjd29y
a3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkocmV2aXNp
b24gMjg5OTcxKQorKysgV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMv
QWxsIFNvdXJjZS54Y3NjaGVtZQkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBACiAg
ICAgICA8L1Rlc3RhYmxlcz4KICAgIDwvVGVzdEFjdGlvbj4KICAgIDxMYXVuY2hBY3Rpb24KLSAg
ICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlv
biA9ICJSZWxlYXNlIgogICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUu
RGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIiCiAgICAgICBzZWxlY3RlZExhdW5jaGVy
SWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNoZXIuTExEQiIKICAg
ICAgIGxhdW5jaFN0eWxlID0gIjAiCkluZGV4OiBXZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRk
YXRhL3hjc2NoZW1lcy9BbGwgVG9vbHMueGNzY2hlbWUKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Lnhj
d29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFRvb2xzLnhjc2NoZW1lCShyZXZp
c2lvbiAyODk5NzEpCisrKyBXZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hjc2NoZW1l
cy9BbGwgVG9vbHMueGNzY2hlbWUJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAKICAg
ICAgIDwvVGVzdGFibGVzPgogICAgPC9UZXN0QWN0aW9uPgogICAgPExhdW5jaEFjdGlvbgotICAg
ICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgorICAgICAgYnVpbGRDb25maWd1cmF0aW9u
ID0gIlJlbGVhc2UiCiAgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5E
ZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKICAgICAgIHNlbGVjdGVkTGF1bmNoZXJJ
ZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgogICAg
ICAgbGF1bmNoU3R5bGUgPSAiMCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452569</attachid>
            <date>2022-02-18 13:12:22 -0800</date>
            <delta_ts>2022-02-18 13:41:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20220218131222.patch</filename>
            <type>text/plain</type>
            <size>53606</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDIyLTAyLTE4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmls
dGVyaW5nIHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1
MDcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW1vdmUgY29udGVudCBmaWx0ZXJpbmcgZnJvbSBEb2N1bWVudExvYWRlciB3aGVuIHRoZSBmZWF0
dXJlIGlzIGVuYWJsZWQsIHNpbmNlIHRoaXMgdGFrZXMgcGxhY2UgaW4gdGhlIFdlYkNvbnRlbnQg
cHJvY2Vzcy4KKyAgICAgICAgTW9kaWZ5IHRoZSBDb250ZW50RmlsdGVyIGNsYXNzIGJ5IHJlbW92
aW5nIHVzZSBvZiB0aGUgdHlwZXMgQ2FjaGVkUmVzb3VyZSBhbmQgQ2FjaGVkUmF3UmVzb3VyY2Us
IHNpbmNlIG9iamVjdHMgb2YgdGhlc2UKKyAgICAgICAgdHlwZXMgYXJlIG5vdCBhdmFpbGFibGUg
aW4gdGhlIE5ldHdvcmtpbmcgcHJvY2Vzcy4gUGFyYW1ldGVycyB3aXRoIHRoZXNlIHR5cGVzIGFy
ZSByZXBsYWNlZCB3aXRoIFVSTCBwYXJhbWV0ZXJzLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdN
YWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVB
ZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Rmls
dGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6ZGlkRGVjaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJTdG9yZWRSZXNv
dXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpibG9ja2VkRXJyb3IgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEZpbHRlcjo6aXNBbGxvd2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlclBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OmRlY29kZSk6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVl
c3QgY29uc3QpOgorCiAyMDIyLTAyLTE4ICBCcmFuZG9uIFN0ZXdhcnQgIDxicmFuZG9uc3Rld2Fy
dEBhcHBsZS5jb20+CiAKICAgICAgICAgR2VuZXJhdGUgY29tcGlsZV9jb21tYW5kcy5qc29uIG9u
IG1hY09TIEJ1aWxkcwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzY3
LDcgKzMzNjcsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVh
ZFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0
ODMyOUUxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBE
QTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8q
IFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5
bWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExNDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9Owot
CQlBMTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VG
N0U0IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0
IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzEx
QUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0
IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0
QkIwOUUxRjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2
MUU2OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9i
Q2FsbGJhY2suaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxOCBAQCBib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAgICAgcmV0dXJuICFyZXF1ZXN0LmlzTnVs
bCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29u
c3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlN0b3BwZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3
aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCB1cmwuc3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmlsdGVyaW5nOworICAg
IEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkpOworICAgIG1fbWFpblJlc291cmNl
VVJMID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdN
YWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChtX3N0
YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEyICsxMzUsMTcgQEAgdm9pZCBDb250ZW50
RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFTU0VSVCghbV9tYWluUmVzb3VyY2Up
OwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNlOwogfQorI2VuZGlmCiAKIHZvaWQgQ29u
dGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IG1fbWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxzZQogICAgIG1fbWFpblJlc291cmNlID0g
bnVsbHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTQy
LDQ0ICsxNTksNzUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9ucwog
ICAgICAgICB9KTsKICAgICB9CiAKKyAgICBtX3Jlc3BvbnNlUmVjZWl2ZWQgPSB0cnVlOworCiAg
ICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCisjZW5kaWYKIHsK
ICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQg
fTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9H
KENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBk
YXRhIGZyb20gPCVzPi5cbiIsIGRhdGEuc2l6ZSgpLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZGF0
YS5zaXplKCksIHVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKwogICAgICAgICBmb3JF
YWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYg
Y29udGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEp
OwogICAgICAgICB9KTsKLQotICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkK
LSAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgeworICAgICAgICAgICAgZGVsaXZlclN0b3Jl
ZFJlc291cmNlRGF0YSgpOworICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShkYXRhLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9idWZmZXJz
LmFwcGVuZChSZXNvdXJjZURhdGFJdGVtIHsgUmVmUHRyIHsgJmRhdGEgfSwgZW5jb2RlZERhdGFM
ZW5ndGggfSk7CisjZWxzZQorICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkg
eworICAgICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CisgICAgICAgICAgICBpZiAo
YXV0byogYnVmZmVyID0gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAg
ICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwor
ICAgICAgICB9CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJl
dHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29u
dGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCisjZWxzZQog
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlKQorI2VuZGlmCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
JnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVu
dD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWluUmVzb3VyY2VVUkwpOworI2Vsc2UKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGlm
IChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewotICAgICAg
ICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVy
aW5nIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29u
dGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+Llxu
IiwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29udGVu
dEZpbHRlclVudGlsQmxvY2tlZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0
ZXIpIHsKICAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CiAg
ICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG93ZWQ7Ci0gICAgICAgICAgICBkZWxpdmVy
UmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJjZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgICAgIGRlbGl2ZXJTdG9yZWRSZXNv
dXJjZURhdGEoKTsKKyNlbHNlCisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9tYWlu
UmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9t
YWluUmVzb3VyY2UtPmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpCdWZmZXJEYXRhKTsKKyAgICAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVkKQpAQCAtMjE5LDcgKzI2Nyw5
IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0YXQKICAgICBBU1NFUlQo
bV9zdGF0ZSAhPSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6
OkJsb2NrZWQpOwogICAgIEFTU0VSVChzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCB8fCBzdGF0ZSA9
PSBTdGF0ZTo6QmxvY2tlZCk7Ci0gICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50Rmls
dGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5c
biIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDogImJsb2NrZWQiLCBtX21h
aW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSA6ICIiKTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVzb3VyY2Ug
YXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDogImJsb2Nr
ZWQiLCB1cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisjZW5kaWYgLy8gIUxPR19ESVNB
QkxFRAogICAgIG1fc3RhdGUgPSBzdGF0ZTsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6Qmxv
Y2tlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI4LDEyICsyNzgsMjYgQEAgdm9pZCBDb250ZW50
RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdAogICAgIG1fY2xpZW50LmNhbmNlbE1haW5SZXNv
dXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKG1fYmxvY2tlZEVycm9yKTsKIH0KIAotdm9pZCBDb250
ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
K3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKLSAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIGlmIChh
dXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAg
IG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVy
LT5tYWtlQ29udGlndW91cygpKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKGJ1ZmZlcik7CisjZW5kaWYKK30KKworVVJMIENvbnRlbnRGaWx0ZXI6OnVy
bCgpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICByZXR1cm4gbV9tYWluUmVzb3VyY2VVUkw7CisjZWxzZQorICAgIGlmIChtX21haW5S
ZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG1fbWFpblJlc291cmNlLT51cmwoKTsKKyAgICByZXR1
cm4gVVJMKCk7CisjZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwo
KQpAQCAtMjQ1LDYgKzMwOSw3IEBAIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkK
ICAgICByZXR1cm4gYmxvY2tlZFBhZ2VVUkw7CiB9CiAKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGlu
dWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZl
TG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgaWYg
KGF1dG8gY29udGVudEZpbHRlciA9IGFjdGl2ZUxvYWRlci5jb250ZW50RmlsdGVyKCkpIHsKQEAg
LTI1OSw2ICszMjQsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgogCiBib29sIENvbnRlbnRGaWx0ZXI6Ondp
bGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSBjb25zdAogewpAQCAtMjgzLDYgKzM0OSwxNSBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRs
ZVByb3Zpc2lvbmFsTG9hCiAgICAgbV9jbGllbnQuaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMKCksIHN1YnN0aXR1dGVEYXRhKTsKIH0K
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2
b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKQoreworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2J1ZmZlcnMuc2l6ZSgpOyBpKyspCisgICAgICAgIGRl
bGl2ZXJSZXNvdXJjZURhdGEoKm1fYnVmZmVyc1tpXS5idWZmZXIsIG1fYnVmZmVyc1tpXS5lbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgbV9idWZmZXJzLmNsZWFyKCk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCShyZXZpc2lvbiAyODk5
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MCwyMyArNTAsMzYgQEAgY2xhc3MgQ29udGVudEZpbHRlciB7CiBwdWJsaWM6CiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFkZFR5cGUoKSB7IHR5cGVzKCku
YXBwZW5kKHR5cGU8VD4oKSk7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKLSAgICB+Q29udGVudEZpbHRl
cigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZp
bHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+
Q29udGVudEZpbHRlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNjaGVtZSgpIHsg
cmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOworI2Vsc2UKICAgICB2b2lk
IHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7Ci0gICAgdm9p
ZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAotICAgIGJvb2wgY29udGludWVB
ZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyV2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRl
ckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVk
KGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpOworI2Vsc2UKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJE
YXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBjb250aW51ZUFmdGVy
Tm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyNlbmRpZgogCiAgICAgc3RhdGljIGJv
b2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRl
ciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgd2lsbEhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0Owot
ICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9y
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAorICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGJsb2Nr
ZWRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tlZEVycm9yOyB9CisgICAgYm9vbCBpc0Fs
bG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkOyB9CisgICAg
Ym9vbCByZXNwb25zZVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVJlY2VpdmVk
OyB9CisgICAgCiBwcml2YXRlOgogICAgIHVzaW5nIFN0YXRlID0gUGxhdGZvcm1Db250ZW50Rmls
dGVyOjpTdGF0ZTsKIApAQCAtODIsMTUgKzk1LDMxIEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQoRnVuY3Rpb24mJik7CiAgICAgdm9pZCBkaWREZWNpZGUoU3RhdGUpOwotICAgIHZvaWQgZGVs
aXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYpOwotCisgICAgdm9pZCBkZWxpdmVyUmVz
b3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9
IDApOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgdm9pZCBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CisjZW5kaWYKKyAgICAKKyAg
ICBVUkwgdXJsKCk7CisgICAgCiAgICAgQ29udGFpbmVyIG1fY29udGVudEZpbHRlcnM7CiAgICAg
Q29udGVudEZpbHRlckNsaWVudCYgbV9jbGllbnQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBVUkwgbV9tYWluUmVzb3VyY2VVUkw7Cisg
ICAgc3RydWN0IFJlc291cmNlRGF0YUl0ZW0geworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aDsKKyAgICB9
OworICAgIAorICAgIFZlY3RvcjxSZXNvdXJjZURhdGFJdGVtPiBtX2J1ZmZlcnM7CisjZWxzZQog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJj
ZTsKKyNlbmRpZgogICAgIGNvbnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0Nv
bnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9w
cGVkIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKICAgICBib29sIG1faXNM
b2FkaW5nQmxvY2tlZFBhZ2UgeyBmYWxzZSB9OworICAgIGJvb2wgbV9yZXNwb25zZVJlY2VpdmVk
IHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCShyZXZpc2lvbiAyODk5NzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZpcnR1YWwg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXIm
LCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyNlbmRpZgogICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxOSw3ICs0MTksNyBAQCBi
b29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAg
ICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEw
LDcgKzcxMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAg
ICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RGTW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAo
bV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2Vu
ZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTAyLDcg
KzkwMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBB
U1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVy
Q2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+
Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47
CiAjZW5kaWYKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFS
ZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1f
Y29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIpKQogICAgICAg
ICByZXR1cm47CiAjZW5kaWYKQEAgLTE0NTUsNyArMTQ1NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAgc3RvcExvYWRpbmcoKTsKICAgICBpZiAobV9tYWlu
UmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1f
bWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgp
OwogI2VuZGlmCkBAIC0yMDE3LDcgKzIwMTcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dExvYWRpbmdNYWluUmVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBtX2NvbnRlbnRG
aWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgPyBDb250ZW50RmlsdGVyOjpjcmVh
dGUoKnRoaXMpIDogbnVsbHB0cjsKICNlbmRpZgogCkBAIC0yMjIwLDcgKzIyMjAsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSgpCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0Ns
aWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMp
OwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3Rv
cEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMzUwLDcgKzIzNTAsNyBAQCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IERvY3VtZW50TG9hCiAKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZp
bHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJj
ZSgqbV9tYWluUmVzb3VyY2UpOwogI2VuZGlmCkBAIC0yNDA3LDcgKzI0MDcsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoV1RGTW92ZShldmVudEluaXQp
KTsKIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgZGF0YVJlY2VpdmVkKGJ1
ZmZlcik7CkBAIC0yNDE4LDEyICsyNDE4LDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNl
bE1haW5SZXNvdXJjZUwKICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAor
UmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgcmV0dXJuIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRC
bG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkp
OworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURh
dGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2Fk
UmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9Cisj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIAotUmVzb3VyY2VFcnJvciBEb2N1bWVudExv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1
bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6
aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1
bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7CiAg
ICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAg
aWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewpA
QCAtMjQzMyw4ICsyNDQwLDQwIEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRl
bnRGaWwKICAgICAgICAgfSk7CiAgICAgfQogICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNv
bnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwotICAgIHJl
dHVybiBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCgp
KTsKKyAgICBhdXRvIGVycm9yID0gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRl
ckVycm9yKHJlcXVlc3QoKSk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciA9IHRydWU7Cisg
ICAgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsKKyNlbmRpZgorCisgICAgcmV0dXJuIGVycm9yOwor
fQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRS
ZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KKwor
Ym9vbCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgcmV0dXJuIG1fYmxvY2tl
ZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5l
cnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsK
KyNlbHNlCisgICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndp
bGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyNlbmRpZgorfQorCit2b2lk
IERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Cisj
ZWxzZQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisjZW5kaWYKK30KKwogI2VuZGlm
IC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0
QWN0aXZlQ29udGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMoY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxTdHJpbmc+PiYgcGF0dGVybnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFz
cyBEb2N1bWVudExvYWRlcgogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+
CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29u
dGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVu
dAogI2VuZGlmCiAgICAgLCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTQw
MiwxMCArNDAyLDE0IEBAIHB1YmxpYzoKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGaWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJlZigp
IGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAg
dm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRl
cmVmKCk7IH0KICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxl
Q29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBz
dGFydEljb25Mb2FkaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CkBAIC00NTEs
NiArNDU1LDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29udGludWluZ0xvYWRBZnRl
clByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7IH0KICAgICB2b2lkIHNldElzQ29udGludWluZ0xvYWRB
ZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92
aXNpb25hbExvYWRTdGFydGVkKSB7IG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCA9IGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7
IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAgICBib29sIGNvbnRlbnRGaWx0
ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7
CisgICAgdm9pZCBjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25z
dCBSZXNvdXJjZUVycm9yJik7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQ
T1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1
dGVEYXRhJik7CiAKQEAgLTUwMyw3ICs1MTIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjb250ZW50Rmls
dGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7CkBAIC02NTUsNyArNjY0LDEyIEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyNlbHNlCisgICAgYm9vbCBt
X2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIgeyBmYWxzZSB9OworICAgIFJlc291cmNlRXJyb3IgbV9i
bG9ja2VkRXJyb3I7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NTMsNyArMjQ1Myw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zp
c2kKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0gcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci51cmwoKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
LSAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRl
bnRGaWx0ZXIoKTsKICAgICBhdXRvIGNvbnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nID0g
ZmFsc2U7CiAjZW5kaWYKIApAQCAtMjQ2MSw3ICsyNDYwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAgIGlmIChoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVt
KCkpCiAgICAgICAgIHdpbGxDb250aW51ZUxvYWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5nOjpZ
ZXM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChjb250ZW50RmlsdGVy
ICYmIGNvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KSkgeworICAgIGlmIChwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJXaWxs
SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpIHsKICAgICAgICAgd2lsbENvbnRp
bnVlTG9hZGluZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsKICAgICAgICAgY29udGVudEZp
bHRlcldpbGxDb250aW51ZUxvYWRpbmcgPSB0cnVlOwogICAgIH0KQEAgLTI0NzEsNyArMjQ3MCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKIAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoY29udGVudEZpbHRlcldpbGxDb250aW51ZUxv
YWRpbmcpCi0gICAgICAgIGNvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoZXJyb3IpOworICAgICAgICBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0
ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKICNlbmRpZgogCiAgICAgbV9w
cm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHsgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAg
ICBhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBp
ZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJM
KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
ICAgICBpZiAoYXV0byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRp
bnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAkocmV2aXNp
b24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
LnRleHRFbmNvZGluZ05hbWUoKTsgfQogICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBj
b25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgICAgIAor
CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8U3Vic3RpdHV0ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CisKICAgICBwcml2YXRlOgogICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBV
UkwgbV9mYWlsaW5nVVJMOwpAQCAtNjcsNCArNzAsMzYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25I
aXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICB9OwogCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTdWJzdGl0dXRlRGF0YTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2NvbnRlbnQgPDwgbV9mYWls
aW5nVVJMIDw8IG1fcmVzcG9uc2UgPDwgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5Owor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTdWJzdGl0dXRlRGF0
YT4gU3Vic3RpdHV0ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBjb250ZW50OworICAgIGRl
Y29kZXIgPj4gY29udGVudDsKKyAgICBpZiAoIWNvbnRlbnQpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gZmFpbGluZ1VSTDsKKyAgICBkZWNv
ZGVyID4+IGZhaWxpbmdVUkw7CisgICAgaWYgKCFmYWlsaW5nVVJMKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlc3BvbnNlPiByZXNw
b25zZTsKKyAgICBkZWNvZGVyID4+IHJlc3BvbnNlOworICAgIGlmICghcmVzcG9uc2UpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNlc3Npb25IaXN0
b3J5VmlzaWJpbGl0eT4gc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeTsKKyAgICBkZWNvZGVy
ID4+IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3Rvcnk7CisgICAgaWYgKCFzaG91bGRSZXZlYWxU
b1Nlc3Npb25IaXN0b3J5KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpjb250ZW50KSwgKmZhaWxpbmdVUkwsICpyZXNwb25zZSwgKnNob3Vs
ZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgfSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkwMTQ5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMi0wMi0xOCAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRl
cmluZyB0byBOZXR3b3JraW5nIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3
MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
ZSBjb250ZW50IGZpbHRlcmluZyBmcm9tIHRoZSBEb2N1bWVudExvYWRlciBjbGFzcyBpbiB0aGUg
V2ViUHJvY2VzcyB0byB0aGUgTmV0d29ya1Jlc291cmNlTG9hZGVyIGNsYXNzIGluIHRoZQorICAg
ICAgICBOZXR3b3JraW5nIHByb2Nlc3MuIFRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgaXMgbm93
IGEgY2xpZW50IG9mIHRoZSBjb250ZW50IGZpbHRlciwgYW5kIHdpbGwgc2VuZCBtZXNzYWdlcwor
ICAgICAgICB0byB0aGUgRG9jdW1lbnRMb2FkZXIgaW4gdGhlIFdlYlByb2Nlc3MgdG8gY2FuY2Vs
IHRoZSBsb2FkIHdoZW4gdGhlIGNvbnRlbnQgZmlsdGVyIGRlY2lkZWQgdG8gYmxvY2sgdGhlIGxv
YWQuCisgICAgICAgIElmIHRoZSBjb250ZW50IGZpbHRlciBpcyBwcm92aWRpbmcgcmVwbGFjZW1l
bnQgZGF0YSwgdGhpcyB3aWxsIGFsc28gYmUgc2VudCBvdmVyIElQQyB0byB0aGUgV2ViUHJvY2Vz
cy4KKyAgICAgICAgRGF0YSBpcyBub3QgYmVpbmcgc2VudCB0byB0aGUgV2ViUHJvY2VzcyB1bnRp
bCB0aGUgY29udGVudCBmaWx0ZXIgaGFzIGRlY2lkZWQgdG8gYWxsb3cgdGhlIGxvYWQsIGlmIGNv
bnRlbnQKKyAgICAgICAgZmlsdGVyaW5nIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNo
ZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVz
dWx0Rm9yQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNv
bnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlbG9hZEFmdGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRl
cjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OnJlbG9hZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTE4ICBCcmFu
ZG9uIFN0ZXdhcnQgIDxicmFuZG9uc3Rld2FydEBhcHBsZS5jb20+CiAKICAgICAgICAgR2VuZXJh
dGUgY29tcGlsZV9jb21tYW5kcy5qc29uIG9uIG1hY09TIEJ1aWxkcwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxMSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0NvbnZlcnRlci5oPgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGVudEZpbHRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLmg+CisjZW5kaWYKKwogI2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0coZm10
LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQg
Iiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
PSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hy
b25vdXM9JWRdIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUlu
dDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLnRvVUludDY0KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX3BhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwg
IyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0
ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RD0lIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2U9JWQsIGRlc3RpbmF0aW9uPSV1LCBpc1N5bmNo
cm9ub3VzPSVkXSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBtX3BhcmFtZXRl
cnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc01haW5SZXNvdXJjZSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9wYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24pLCBpc1N5bmNocm9ub3VzKCks
ICMjX19WQV9BUkdTX18pCiAKQEAgLTE4Nyw4ICsxOTIsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0KCkKICAgICBBU1NFUlQoIW1fd2FzU3RhcnRlZCk7CiAgICAgbV93YXNT
dGFydGVkID0gdHJ1ZTsKIAorICAgIGF1dG8gbmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7
IG9yaWdpbmFsUmVxdWVzdCgpIH07CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBzdGFydENvbnRlbnRGaWx0ZXJpbmcobmV3UmVxdWVzdCk7
CisjZW5kaWYKKwogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikgewotICAgICAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0
KCkgfSwgdGhpcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChhdXRvJiYg
cmVzdWx0KSB7CisgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJl
cXVlc3QgeyBuZXdSZXF1ZXN0IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9XSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIxNywxNCArMjI3LDI2IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBvbmNlIG1fbmV0d29ya0xvYWRDaGVja2VyIGlz
IHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgotICAgIGlmIChjYW5Vc2VDYWNoZShvcmlnaW5h
bFJlcXVlc3QoKSkpIHsKKyAgICBpZiAoY2FuVXNlQ2FjaGUobmV3UmVxdWVzdCkpIHsKICAgICAg
ICAgcmV0cmlldmVDYWNoZUVudHJ5KG9yaWdpbmFsUmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2lu
YWxSZXF1ZXN0KCkgfSwgRmlyc3RMb2FkOjpZZXMpOworICAgIHN0YXJ0TmV0d29ya0xvYWQoUmVz
b3VyY2VSZXF1ZXN0IHsgbmV3UmVxdWVzdCB9LCBGaXJzdExvYWQ6Olllcyk7CiB9CiAKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCit7CisgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQorICAgICAgICByZXR1cm47
CisgICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICBpZiAoIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1
ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZW50
RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShyZXF1ZXN0LnVybCgpKTsKK30KKyNl
bmRpZgorCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0co
InJldHJpZXZlQ2FjaGVFbnRyeTogaXNNYWluRnJhbWVMb2FkPSVkIiwgaXNNYWluRnJhbWVMb2Fk
KCkpOwpAQCAtNjkyLDYgKzcxNCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlCiB7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IChodHRwU3RhdHVzQ29kZT0lZCwgTUlNRVR5cGU9JSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoPSUiIFBSSWQ2NCAiLCBoYXNDYWNoZWRFbnRyeUZvclZhbGlkYXRp
b249JWQsIGhhc05ldHdvcmtMb2FkQ2hlY2tlcj0lZCkiLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpLCBy
ZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCAhIW1fY2FjaGVFbnRyeUZv
clZhbGlkYXRpb24sICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50Rmls
dGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJl
Y2VpdmVkUmVzcG9uc2UpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUG9saWN5
QWN0aW9uOjpJZ25vcmUpOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkKICAg
ICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlY2VpdmVkUmVzcG9uc2UpOwog
CkBAIC05MDQsNiArOTMxLDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2EKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUg
dGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCiAgICAgICAgICAgICBzZW5kQnVmZmVyKCpt
X2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwogICAgICAgICB9CisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1fY29udGVudEZp
bHRlcikgeworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgICAgIH0KKyNlbmRp
ZgorCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hS
ZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC05OTMsNiArMTAy
NywxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAgICAgaWYg
KCFtX2ZpcnN0UmVzcG9uc2VVUkwuaXNWYWxpZCgpKQogICAgICAgICBtX2ZpcnN0UmVzcG9uc2VV
UkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAg
IGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBpZiAoYXV0byByZXN1
bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJl
cXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkgewpAQCAtMTI1MSw4ICsxMjkwLDE1IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW0KICAgICBpZiAobV9idWZmZXJl
ZERhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGJvb2wgc2hvdWxkRmlsdGVyID0g
ZmFsc2U7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBtX2J1ZmZlcmVkRGF0YS50YWtlQXNDb250
aWd1b3VzKCk7CisgICAgc2hvdWxkRmlsdGVyID0gbV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoc2hhcmVkQnVmZmVyLCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoIXNob3VsZEZpbHRlcikKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKElQQzo6
U2hhcmVkQnVmZmVyQ29weShzaGFyZWRCdWZmZXIuZ2V0KCkpLCBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoKSk7CisjZWxzZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoKm1fYnVmZmVyZWREYXRh
LmdldCgpKSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwotCisjZW5kaWYKICAg
ICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFM
ZW5ndGggPSAwOwogfQpAQCAtMTI2MSw2ICsxMzA3LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kQnVmZmVyKGMKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRh
dGFSZWNlaXZlZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSwgZW5jb2RlZERhdGFMZW5ndGgpKQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5j
b2RlZERhdGFMZW5ndGgpKTsKIH0KIApAQCAtMTMwNyw2ICsxMzU4LDExIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUMKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRp
ZFJldHJpZXZlQ2FjaGVFbnRyeToiKTsKICAgICBhdXRvIHJlc3BvbnNlID0gZW50cnktPnJlc3Bv
bnNlKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+cmVzcG9u
c2VSZWNlaXZlZCgpICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJl
Y2VpdmVkKHJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBpZiAoaXNN
YWluUmVzb3VyY2UoKSkKICAgICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJl
c3BvbnNlKTsKIApAQCAtMTM1OCw2ICsxNDE0LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInNlbmRSZXN1bHRGb3JD
YWNoZUVudHJ5OiIpOwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgaWYgKCFl
bnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKS5pc051bGwoKSkgeworI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZChlbnRyeS0+YnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCksIGVudHJ5LT5idWZmZXIoKS0+c2l6
ZSgpKSkgeworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc291cmNlKGVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRs
ZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzgxLDYgKzE0NDQsMTIgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGbwogICAgIG5ldHdvcmtMb2FkTWV0
cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSA9IDA7CiAKICAgICBzZW5kQnVmZmVyKCplbnRy
eS0+YnVmZmVyKCksIGVudHJ5LT5idWZmZXIoKS0+c2l6ZSgpKTsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIpIHsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNo
ZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0ZXIt
PnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyAgICB9CisjZW5kaWYKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtM
b2FkTWV0cmljcykpOwogfQogCkBAIC0xNjk3LDYgKzE3NjYsNDMgQEAgYm9vbCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmlzQXBwSW5pdGlhdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVz
dC5pc0FwcEluaXRpYXRlZCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5j
b2RlZERhdGFMZW5ndGgpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkpOworICAgIGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewor
ICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAgICAgIGlm
ICghdW5ibG9ja2VkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY29u
bmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRl
bnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEKSwgMCk7CisgICAgICAgIH0pOwor
ICAgIH0KKyAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9w
YXJhbWV0ZXJzLnJlcXVlc3QpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsK
KyAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3Ip
OworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQ
YWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOworICAgIGVsc2UgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX2NvbnRlbnRGaWx0ZXIpOworICAgICAgICBhdXRvJiBlcnJvciA9IG1fY29udGVudEZp
bHRlci0+YmxvY2tlZEVycm9yKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihlcnJvcikpOwor
ICAgIH0KK30KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIExPQURFUl9SRUxF
QVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
IlByaXZhdGVSZWxheWVkLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTQ1LDYgKzQ2LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOworY2xhc3MgQ29u
dGVudEZpbHRlcjsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNzIsNiArNzQsOSBAQCBjbGFzcyBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIgZmluYWwKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAg
ICAsIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAsIHB1
YmxpYyBXZWJDb3JlOjpDb250ZW50RmlsdGVyQ2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNv
bm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmIHJlcGx5ID0gbnVsbHB0cikKQEAgLTkyLDcg
Kzk3LDcgQEAgcHVibGljOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKIAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFscyk7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7
CiAKICAgICB2b2lkIHNldFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSkgeyBtX3Jlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2U7IH0KQEAgLTE1NSw2ICsxNjAsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FwcEluaXRp
YXRlZCgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+OjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJl
ZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPjo6ZGVyZWYoKTsgfQorI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJl
cGx5JiYpOwogCkBAIC0xNjIsNiArMTcyLDE0IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKTsgfQogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAvLyBDb250ZW50RmlsdGVy
Q2xpZW50CisgICAgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBzaXplX3QpIGZpbmFsOworICAgIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwor
ICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdl
YkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuVXNl
Q2FjaGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAgICAgYm9vbCBj
YW5Vc2VDYWNoZWRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25z
dDsKIApAQCAtMjIwLDYgKzIzOCwxMCBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VMb2FkSW5m
byByZXNvdXJjZUxvYWRJbmZvKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgc3RhcnRDb250ZW50RmlsdGVyaW5nKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOworI2VuZGlmCisKICAgICBjb25zdCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAKICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlvbjsKQEAgLTI2NCw2ICsyODYsMTEgQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKICAg
ICBVUkwgbV9maXJzdFJlc3BvbnNlVVJMOyAvLyBGaXJzdCBVUkwgaW4gcmVzcG9uc2UncyBVUkwg
bGlzdCAoaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVzcG9uc2UtdXJs
LWxpc3QpLgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3lFbmZvcmNlbWVudFJlc3VsdD4gbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0OworCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOwor
I2VuZGlmCisKICAgICBQcml2YXRlUmVsYXllZCBtX3ByaXZhdGVSZWxheWVkIHsgUHJpdmF0ZVJl
bGF5ZWQ6Ok5vIH07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI4OTk3MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUNvbnRl
bnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5o
IgorI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgpAQCAtNjA2LDYgKzYwNywxNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpCiAgICAgcGFnZS0+cmVzb3VyY2VMb2FkRGlk
Q29tcGxldGVXaXRoRXJyb3IoV1RGTW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVzcG9uc2UpLCBX
VEZNb3ZlKGVycm9yKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWxvYWRBZnRlclVu
YmxvY2tlZENvbnRlbnRGaWx0ZXIoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCit7Cisg
ICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOworICAgIGlm
ICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+cmVsb2FkKHsgfSk7Cit9Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvdXJj
ZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VM
b2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgcmVzb3Vy
Y2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3Vy
Y2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImJik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIHZvaWQgcmVsb2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIpOworI2VuZGlmCisKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RP
TUFJTlMpCiAgICAgdm9pZCBoYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Np
b24oUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDEwIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzUHJveHkgTGVnYWN5UmUKICAgICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxlbmdlKFdl
YktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktp
dDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UpCiAgICAgUmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0
IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIFJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVy
cm9yKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0
IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAg
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgUmVsb2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikKKyNlbmRpZgogCiAgICAgVHJpZ2dlckJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzcG9u
c2VEb21haW4sIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSAtPiAoYm9vbCBzdWNjZXNzKSBB
c3luYwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0OSw2ICszNDksMjkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc291cgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3sKKyAg
ICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5k
bGVDb250ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQpKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpCit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+
ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7Cit9CisKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1f
Y29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5o
YW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCwg
c3Vic3RpdHV0ZURhdGEpOworfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYg
V0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjg5
OTcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TdWJzdGl0dXRlRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIFNoYXJlZEJ1
ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAgLTk5LDYgKzEwMSwxMiBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGUmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3Qg
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiwgU3RyaW5nJiYgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQpOworICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNv
bnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CisjZW5kaWYKKyAg
ICAKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fY29yZUxvYWRlcjsKICAg
ICBUcmFja2luZ1BhcmFtZXRlcnMgbV90cmFja2luZ1BhcmFtZXRlcnM7CiAgICAgV2ViUmVzb3Vy
Y2VJbnRlcmNlcHRDb250cm9sbGVyIG1faW50ZXJjZXB0Q29udHJvbGxlcjsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNCArMzcsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIg
TGVnYWN5UmVjZQogICAgIC8vIERpZFJlY2VpdmVSZXNvdXJjZSBpcyBmb3Igd2hlbiB3ZSBoYXZl
IHRoZSBlbnRpcmUgcmVzb3VyY2UgZGF0YSBhdmFpbGFibGUgYXQgb25jZSwgc3VjaCBhcyB3aGVu
IHRoZSByZXNvdXJjZSBpcyBjYWNoZWQgaW4gbWVtb3J5CiAgICAgRGlkUmVjZWl2ZVJlc291cmNl
KFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSByZXNvdXJjZSkKICNlbmRpZgorCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBD
b250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQor
ICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCisgICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vi
c3RpdHV0ZURhdGEpCisjZW5kaWYKKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452576</attachid>
            <date>2022-02-18 13:41:37 -0800</date>
            <delta_ts>2022-02-18 16:12:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20220218134134.patch</filename>
            <type>text/plain</type>
            <size>54017</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDIyLTAyLTE4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmls
dGVyaW5nIHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1
MDcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW1vdmUgY29udGVudCBmaWx0ZXJpbmcgZnJvbSBEb2N1bWVudExvYWRlciB3aGVuIHRoZSBmZWF0
dXJlIGlzIGVuYWJsZWQsIHNpbmNlIHRoaXMgdGFrZXMgcGxhY2UgaW4gdGhlIFdlYkNvbnRlbnQg
cHJvY2Vzcy4KKyAgICAgICAgTW9kaWZ5IHRoZSBDb250ZW50RmlsdGVyIGNsYXNzIGJ5IHJlbW92
aW5nIHVzZSBvZiB0aGUgdHlwZXMgQ2FjaGVkUmVzb3VyZSBhbmQgQ2FjaGVkUmF3UmVzb3VyY2Us
IHNpbmNlIG9iamVjdHMgb2YgdGhlc2UKKyAgICAgICAgdHlwZXMgYXJlIG5vdCBhdmFpbGFibGUg
aW4gdGhlIE5ldHdvcmtpbmcgcHJvY2Vzcy4gUGFyYW1ldGVycyB3aXRoIHRoZXNlIHR5cGVzIGFy
ZSByZXBsYWNlZCB3aXRoIFVSTCBwYXJhbWV0ZXJzLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdN
YWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVB
ZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Rmls
dGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6ZGlkRGVjaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJTdG9yZWRSZXNv
dXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpibG9ja2VkRXJyb3IgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEZpbHRlcjo6aXNBbGxvd2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlclBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OmRlY29kZSk6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVl
c3QgY29uc3QpOgorCiAyMDIyLTAyLTE4ICBCcmFuZG9uIFN0ZXdhcnQgIDxicmFuZG9uc3Rld2Fy
dEBhcHBsZS5jb20+CiAKICAgICAgICAgR2VuZXJhdGUgY29tcGlsZV9jb21tYW5kcy5qc29uIG9u
IG1hY09TIEJ1aWxkcwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzY3
LDcgKzMzNjcsNyBAQAogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVh
ZFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0
ODMyOUUxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBE
QTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8q
IFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5
bWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExNDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9Owot
CQlBMTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VG
N0U0IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0
IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzEx
QUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0
IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0
QkIwOUUxRjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2
MUU2OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9i
Q2FsbGJhY2suaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxOCBAQCBib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuCiAgICAgcmV0dXJuICFyZXF1ZXN0LmlzTnVs
bCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29u
c3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlN0b3BwZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3
aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCB1cmwuc3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmlsdGVyaW5nOworICAg
IEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkpOworICAgIG1fbWFpblJlc291cmNl
VVJMID0gdXJsOworfQorI2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdN
YWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChtX3N0
YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTIzLDEyICsxMzUsMTcgQEAgdm9pZCBDb250ZW50
RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFTU0VSVCghbV9tYWluUmVzb3VyY2Up
OwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNlOwogfQorI2VuZGlmCiAKIHZvaWQgQ29u
dGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IG1fbWFpblJlc291cmNlVVJMID0gVVJMKCk7CisjZWxzZQogICAgIG1fbWFpblJlc291cmNlID0g
bnVsbHB0cjsKKyNlbmRpZgogfQogCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTQy
LDQ0ICsxNTksNzUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9ucwog
ICAgICAgICB9KTsKICAgICB9CiAKKyAgICBtX3Jlc3BvbnNlUmVjZWl2ZWQgPSB0cnVlOworCiAg
ICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKQorI2Vsc2UKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCisjZW5kaWYKIHsK
ICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQg
fTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9H
KENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBk
YXRhIGZyb20gPCVzPi5cbiIsIGRhdGEuc2l6ZSgpLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZGF0
YS5zaXplKCksIHVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKwogICAgICAgICBmb3JF
YWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYg
Y29udGVudEZpbHRlcikgewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEp
OwogICAgICAgICB9KTsKLQotICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkK
LSAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgeworICAgICAgICAgICAgZGVsaXZlclN0b3Jl
ZFJlc291cmNlRGF0YSgpOworICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShkYXRhLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9idWZmZXJz
LmFwcGVuZChSZXNvdXJjZURhdGFJdGVtIHsgUmVmUHRyIHsgJmRhdGEgfSwgZW5jb2RlZERhdGFM
ZW5ndGggfSk7CisjZWxzZQorICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkg
eworICAgICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CisgICAgICAgICAgICBpZiAo
YXV0byogYnVmZmVyID0gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAg
ICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwor
ICAgICAgICB9CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJl
dHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29u
dGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCisjZWxzZQog
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlKQorI2VuZGlmCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
JnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVu
dD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWluUmVzb3VyY2VVUkwpOworI2Vsc2UKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGlm
IChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewotICAgICAg
ICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVy
aW5nIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29u
dGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+Llxu
IiwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29udGVu
dEZpbHRlclVudGlsQmxvY2tlZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0
ZXIpIHsKICAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CiAg
ICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG93ZWQ7Ci0gICAgICAgICAgICBkZWxpdmVy
UmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJjZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgICAgIGRlbGl2ZXJTdG9yZWRSZXNv
dXJjZURhdGEoKTsKKyNlbHNlCisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9tYWlu
UmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9t
YWluUmVzb3VyY2UtPmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpCdWZmZXJEYXRhKTsKKyAgICAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVkKQpAQCAtMjE5LDcgKzI2Nyw5
IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0YXQKICAgICBBU1NFUlQo
bV9zdGF0ZSAhPSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6
OkJsb2NrZWQpOwogICAgIEFTU0VSVChzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCB8fCBzdGF0ZSA9
PSBTdGF0ZTo6QmxvY2tlZCk7Ci0gICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50Rmls
dGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5c
biIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDogImJsb2NrZWQiLCBtX21h
aW5SZXNvdXJjZSA/IG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSA6ICIiKTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyIGRlY2lkZWQgbG9hZCBzaG91bGQgYmUgJXMgZm9yIG1haW4gcmVzb3VyY2Ug
YXQgPCVzPi5cbiIsIHN0YXRlID09IFN0YXRlOjpBbGxvd2VkID8gImFsbG93ZWQiIDogImJsb2Nr
ZWQiLCB1cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisjZW5kaWYgLy8gIUxPR19ESVNB
QkxFRAogICAgIG1fc3RhdGUgPSBzdGF0ZTsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6Qmxv
Y2tlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI4LDEyICsyNzgsMjYgQEAgdm9pZCBDb250ZW50
RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdAogICAgIG1fY2xpZW50LmNhbmNlbE1haW5SZXNv
dXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKG1fYmxvY2tlZEVycm9yKTsKIH0KIAotdm9pZCBDb250
ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
K3ZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKLSAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIGlmIChh
dXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAg
IG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVy
LT5tYWtlQ29udGlndW91cygpKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKGJ1ZmZlcik7CisjZW5kaWYKK30KKworVVJMIENvbnRlbnRGaWx0ZXI6OnVy
bCgpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICByZXR1cm4gbV9tYWluUmVzb3VyY2VVUkw7CisjZWxzZQorICAgIGlmIChtX21haW5S
ZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG1fbWFpblJlc291cmNlLT51cmwoKTsKKyAgICByZXR1
cm4gVVJMKCk7CisjZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwo
KQpAQCAtMjQ1LDYgKzMwOSw3IEBAIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkK
ICAgICByZXR1cm4gYmxvY2tlZFBhZ2VVUkw7CiB9CiAKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGlu
dWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZl
TG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgaWYg
KGF1dG8gY29udGVudEZpbHRlciA9IGFjdGl2ZUxvYWRlci5jb250ZW50RmlsdGVyKCkpIHsKQEAg
LTI1OSw2ICszMjQsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgogCiBib29sIENvbnRlbnRGaWx0ZXI6Ondp
bGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSBjb25zdAogewpAQCAtMjgzLDYgKzM0OSwxNSBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRs
ZVByb3Zpc2lvbmFsTG9hCiAgICAgbV9jbGllbnQuaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMKCksIHN1YnN0aXR1dGVEYXRhKTsKIH0K
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2
b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKQoreworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2J1ZmZlcnMuc2l6ZSgpOyBpKyspCisgICAgICAgIGRl
bGl2ZXJSZXNvdXJjZURhdGEoKm1fYnVmZmVyc1tpXS5idWZmZXIsIG1fYnVmZmVyc1tpXS5lbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgbV9idWZmZXJzLmNsZWFyKCk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCShyZXZpc2lvbiAyODk5
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MCwyMyArNTAsMzYgQEAgY2xhc3MgQ29udGVudEZpbHRlciB7CiBwdWJsaWM6CiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFkZFR5cGUoKSB7IHR5cGVzKCku
YXBwZW5kKHR5cGU8VD4oKSk7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKLSAgICB+Q29udGVudEZpbHRl
cigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZp
bHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+
Q29udGVudEZpbHRlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNjaGVtZSgpIHsg
cmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOworI2Vsc2UKICAgICB2b2lk
IHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7Ci0gICAgdm9p
ZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAotICAgIGJvb2wgY29udGludWVB
ZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyV2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRl
ckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVk
KGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpOworI2Vsc2UKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJE
YXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBjb250aW51ZUFmdGVy
Tm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyNlbmRpZgogCiAgICAgc3RhdGljIGJv
b2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRl
ciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgd2lsbEhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0Owot
ICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9y
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAorICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGJsb2Nr
ZWRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tlZEVycm9yOyB9CisgICAgYm9vbCBpc0Fs
bG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkOyB9CisgICAg
Ym9vbCByZXNwb25zZVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVJlY2VpdmVk
OyB9CisgICAgCiBwcml2YXRlOgogICAgIHVzaW5nIFN0YXRlID0gUGxhdGZvcm1Db250ZW50Rmls
dGVyOjpTdGF0ZTsKIApAQCAtODIsMTUgKzk1LDMxIEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQoRnVuY3Rpb24mJik7CiAgICAgdm9pZCBkaWREZWNpZGUoU3RhdGUpOwotICAgIHZvaWQgZGVs
aXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYpOwotCisgICAgdm9pZCBkZWxpdmVyUmVz
b3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9
IDApOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgdm9pZCBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CisjZW5kaWYKKyAgICAKKyAg
ICBVUkwgdXJsKCk7CisgICAgCiAgICAgQ29udGFpbmVyIG1fY29udGVudEZpbHRlcnM7CiAgICAg
Q29udGVudEZpbHRlckNsaWVudCYgbV9jbGllbnQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBVUkwgbV9tYWluUmVzb3VyY2VVUkw7Cisg
ICAgc3RydWN0IFJlc291cmNlRGF0YUl0ZW0geworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aDsKKyAgICB9
OworICAgIAorICAgIFZlY3RvcjxSZXNvdXJjZURhdGFJdGVtPiBtX2J1ZmZlcnM7CisjZWxzZQog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJj
ZTsKKyNlbmRpZgogICAgIGNvbnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0Nv
bnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9w
cGVkIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKICAgICBib29sIG1faXNM
b2FkaW5nQmxvY2tlZFBhZ2UgeyBmYWxzZSB9OworICAgIGJvb2wgbV9yZXNwb25zZVJlY2VpdmVk
IHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCShyZXZpc2lvbiAyODk5NzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZpcnR1YWwg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXIm
LCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyNlbmRpZgogICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxOSw3ICs0MTksNyBAQCBi
b29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAg
ICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEw
LDcgKzcxMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAg
ICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RGTW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAo
bV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2Vu
ZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTAyLDcg
KzkwMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBB
U1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVy
Q2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+
Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47
CiAjZW5kaWYKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFS
ZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1f
Y29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIpKQogICAgICAg
ICByZXR1cm47CiAjZW5kaWYKQEAgLTE0NTUsNyArMTQ1NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAgc3RvcExvYWRpbmcoKTsKICAgICBpZiAobV9tYWlu
UmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1f
bWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgp
OwogI2VuZGlmCkBAIC0yMDE3LDcgKzIwMTcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dExvYWRpbmdNYWluUmVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBtX2NvbnRlbnRG
aWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgPyBDb250ZW50RmlsdGVyOjpjcmVh
dGUoKnRoaXMpIDogbnVsbHB0cjsKICNlbmRpZgogCkBAIC0yMjIwLDcgKzIyMjAsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSgpCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0Ns
aWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMp
OwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3Rv
cEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMzUwLDcgKzIzNTAsNyBAQCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IERvY3VtZW50TG9hCiAKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZp
bHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJj
ZSgqbV9tYWluUmVzb3VyY2UpOwogI2VuZGlmCkBAIC0yNDA3LDcgKzI0MDcsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoV1RGTW92ZShldmVudEluaXQp
KTsKIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgZGF0YVJlY2VpdmVkKGJ1
ZmZlcik7CkBAIC0yNDE4LDEyICsyNDE4LDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNl
bE1haW5SZXNvdXJjZUwKICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAor
UmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgcmV0dXJuIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRC
bG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkp
OworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURh
dGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2Fk
UmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9Cisj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIAotUmVzb3VyY2VFcnJvciBEb2N1bWVudExv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1
bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6
aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1
bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7CiAg
ICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAg
aWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewpA
QCAtMjQzMyw4ICsyNDQwLDQwIEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRl
bnRGaWwKICAgICAgICAgfSk7CiAgICAgfQogICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNv
bnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwotICAgIHJl
dHVybiBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCgp
KTsKKyAgICBhdXRvIGVycm9yID0gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRl
ckVycm9yKHJlcXVlc3QoKSk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciA9IHRydWU7Cisg
ICAgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsKKyNlbmRpZgorCisgICAgcmV0dXJuIGVycm9yOwor
fQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRS
ZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KKwor
Ym9vbCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgcmV0dXJuIG1fYmxvY2tl
ZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5l
cnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsK
KyNlbHNlCisgICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndp
bGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyNlbmRpZgorfQorCit2b2lk
IERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Cisj
ZWxzZQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisjZW5kaWYKK30KKwogI2VuZGlm
IC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0
QWN0aXZlQ29udGVudFJ1bGVMaXN0QWN0aW9uUGF0dGVybnMoY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxTdHJpbmc+PiYgcGF0dGVybnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFz
cyBEb2N1bWVudExvYWRlcgogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+
CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29u
dGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVu
dAogI2VuZGlmCiAgICAgLCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTQw
MiwxMCArNDAyLDE0IEBAIHB1YmxpYzoKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGaWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJlZigp
IGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAg
dm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRl
cmVmKCk7IH0KICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxl
Q29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBz
dGFydEljb25Mb2FkaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CkBAIC00NTEs
NiArNDU1LDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29udGludWluZ0xvYWRBZnRl
clByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7IH0KICAgICB2b2lkIHNldElzQ29udGludWluZ0xvYWRB
ZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92
aXNpb25hbExvYWRTdGFydGVkKSB7IG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCA9IGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7
IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAgICBib29sIGNvbnRlbnRGaWx0
ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7
CisgICAgdm9pZCBjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25z
dCBSZXNvdXJjZUVycm9yJik7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQ
T1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1
dGVEYXRhJik7CiAKQEAgLTUwMyw3ICs1MTIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjb250ZW50Rmls
dGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7CkBAIC02NTUsNyArNjY0LDEyIEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyNlbHNlCisgICAgYm9vbCBt
X2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIgeyBmYWxzZSB9OworICAgIFJlc291cmNlRXJyb3IgbV9i
bG9ja2VkRXJyb3I7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NTMsNyArMjQ1Myw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zp
c2kKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0gcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci51cmwoKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
LSAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRl
bnRGaWx0ZXIoKTsKICAgICBhdXRvIGNvbnRlbnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nID0g
ZmFsc2U7CiAjZW5kaWYKIApAQCAtMjQ2MSw3ICsyNDYwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAgIGlmIChoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVt
KCkpCiAgICAgICAgIHdpbGxDb250aW51ZUxvYWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5nOjpZ
ZXM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChjb250ZW50RmlsdGVy
ICYmIGNvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KSkgeworICAgIGlmIChwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJXaWxs
SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpIHsKICAgICAgICAgd2lsbENvbnRp
bnVlTG9hZGluZyA9IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsKICAgICAgICAgY29udGVudEZp
bHRlcldpbGxDb250aW51ZUxvYWRpbmcgPSB0cnVlOwogICAgIH0KQEAgLTI0NzEsNyArMjQ3MCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKIAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoY29udGVudEZpbHRlcldpbGxDb250aW51ZUxv
YWRpbmcpCi0gICAgICAgIGNvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoZXJyb3IpOworICAgICAgICBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0
ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKICNlbmRpZgogCiAgICAgbV9w
cm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHsgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAg
ICBhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBp
ZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJM
KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
ICAgICBpZiAoYXV0byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRp
bnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAkocmV2aXNp
b24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
LnRleHRFbmNvZGluZ05hbWUoKTsgfQogICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBj
b25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgICAgIAor
CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8U3Vic3RpdHV0ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CisKICAgICBwcml2YXRlOgogICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBV
UkwgbV9mYWlsaW5nVVJMOwpAQCAtNjcsNCArNzAsMzYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25I
aXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICB9OwogCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTdWJzdGl0dXRlRGF0YTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2NvbnRlbnQgPDwgbV9mYWls
aW5nVVJMIDw8IG1fcmVzcG9uc2UgPDwgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5Owor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTdWJzdGl0dXRlRGF0
YT4gU3Vic3RpdHV0ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBjb250ZW50OworICAgIGRl
Y29kZXIgPj4gY29udGVudDsKKyAgICBpZiAoIWNvbnRlbnQpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gZmFpbGluZ1VSTDsKKyAgICBkZWNv
ZGVyID4+IGZhaWxpbmdVUkw7CisgICAgaWYgKCFmYWlsaW5nVVJMKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlc3BvbnNlPiByZXNw
b25zZTsKKyAgICBkZWNvZGVyID4+IHJlc3BvbnNlOworICAgIGlmICghcmVzcG9uc2UpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNlc3Npb25IaXN0
b3J5VmlzaWJpbGl0eT4gc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeTsKKyAgICBkZWNvZGVy
ID4+IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3Rvcnk7CisgICAgaWYgKCFzaG91bGRSZXZlYWxU
b1Nlc3Npb25IaXN0b3J5KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpjb250ZW50KSwgKmZhaWxpbmdVUkwsICpyZXNwb25zZSwgKnNob3Vs
ZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgfSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkwMTQ5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMi0wMi0xOCAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRl
cmluZyB0byBOZXR3b3JraW5nIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3
MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
ZSBjb250ZW50IGZpbHRlcmluZyBmcm9tIHRoZSBEb2N1bWVudExvYWRlciBjbGFzcyBpbiB0aGUg
V2ViUHJvY2VzcyB0byB0aGUgTmV0d29ya1Jlc291cmNlTG9hZGVyIGNsYXNzIGluIHRoZQorICAg
ICAgICBOZXR3b3JraW5nIHByb2Nlc3MuIFRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgaXMgbm93
IGEgY2xpZW50IG9mIHRoZSBjb250ZW50IGZpbHRlciwgYW5kIHdpbGwgc2VuZCBtZXNzYWdlcwor
ICAgICAgICB0byB0aGUgRG9jdW1lbnRMb2FkZXIgaW4gdGhlIFdlYlByb2Nlc3MgdG8gY2FuY2Vs
IHRoZSBsb2FkIHdoZW4gdGhlIGNvbnRlbnQgZmlsdGVyIGRlY2lkZWQgdG8gYmxvY2sgdGhlIGxv
YWQuCisgICAgICAgIElmIHRoZSBjb250ZW50IGZpbHRlciBpcyBwcm92aWRpbmcgcmVwbGFjZW1l
bnQgZGF0YSwgdGhpcyB3aWxsIGFsc28gYmUgc2VudCBvdmVyIElQQyB0byB0aGUgV2ViUHJvY2Vz
cy4KKyAgICAgICAgRGF0YSBpcyBub3QgYmVpbmcgc2VudCB0byB0aGUgV2ViUHJvY2VzcyB1bnRp
bCB0aGUgY29udGVudCBmaWx0ZXIgaGFzIGRlY2lkZWQgdG8gYWxsb3cgdGhlIGxvYWQsIGlmIGNv
bnRlbnQKKyAgICAgICAgZmlsdGVyaW5nIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNo
ZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVz
dWx0Rm9yQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNv
bnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlbG9hZEFmdGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRl
cjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OnJlbG9hZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTE4ICBCcmFu
ZG9uIFN0ZXdhcnQgIDxicmFuZG9uc3Rld2FydEBhcHBsZS5jb20+CiAKICAgICAgICAgR2VuZXJh
dGUgY29tcGlsZV9jb21tYW5kcy5qc29uIG9uIG1hY09TIEJ1aWxkcwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxMSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0NvbnZlcnRlci5oPgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGVudEZpbHRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLmg+CisjZW5kaWYKKwogI2RlZmluZSBMT0FERVJfUkVMRUFTRV9MT0coZm10
LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQg
Iiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
PSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hy
b25vdXM9JWRdIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUlu
dDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLnRvVUludDY0KCksIGlzTWFpblJlc291cmNlKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX3BhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwg
IyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0
ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RD0lIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2U9JWQsIGRlc3RpbmF0aW9uPSV1LCBpc1N5bmNo
cm9ub3VzPSVkXSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBtX3BhcmFtZXRl
cnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc01haW5SZXNvdXJjZSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9wYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24pLCBpc1N5bmNocm9ub3VzKCks
ICMjX19WQV9BUkdTX18pCiAKQEAgLTE4Nyw4ICsxOTIsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0KCkKICAgICBBU1NFUlQoIW1fd2FzU3RhcnRlZCk7CiAgICAgbV93YXNT
dGFydGVkID0gdHJ1ZTsKIAorICAgIGF1dG8gbmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7
IG9yaWdpbmFsUmVxdWVzdCgpIH07CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBzdGFydENvbnRlbnRGaWx0ZXJpbmcobmV3UmVxdWVzdCk7
CisjZW5kaWYKKwogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikgewotICAgICAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0
KCkgfSwgdGhpcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChhdXRvJiYg
cmVzdWx0KSB7CisgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJl
cXVlc3QgeyBuZXdSZXF1ZXN0IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9XSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIxNywxNCArMjI3LDI2IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBvbmNlIG1fbmV0d29ya0xvYWRDaGVja2VyIGlz
IHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgotICAgIGlmIChjYW5Vc2VDYWNoZShvcmlnaW5h
bFJlcXVlc3QoKSkpIHsKKyAgICBpZiAoY2FuVXNlQ2FjaGUobmV3UmVxdWVzdCkpIHsKICAgICAg
ICAgcmV0cmlldmVDYWNoZUVudHJ5KG9yaWdpbmFsUmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2lu
YWxSZXF1ZXN0KCkgfSwgRmlyc3RMb2FkOjpZZXMpOworICAgIHN0YXJ0TmV0d29ya0xvYWQoUmVz
b3VyY2VSZXF1ZXN0IHsgbmV3UmVxdWVzdCB9LCBGaXJzdExvYWQ6Olllcyk7CiB9CiAKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCit7CisgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQorICAgICAgICByZXR1cm47
CisgICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICBpZiAoIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1
ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZW50
RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShyZXF1ZXN0LnVybCgpKTsKK30KKyNl
bmRpZgorCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0co
InJldHJpZXZlQ2FjaGVFbnRyeTogaXNNYWluRnJhbWVMb2FkPSVkIiwgaXNNYWluRnJhbWVMb2Fk
KCkpOwpAQCAtNjkyLDYgKzcxNCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlCiB7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IChodHRwU3RhdHVzQ29kZT0lZCwgTUlNRVR5cGU9JSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoPSUiIFBSSWQ2NCAiLCBoYXNDYWNoZWRFbnRyeUZvclZhbGlkYXRp
b249JWQsIGhhc05ldHdvcmtMb2FkQ2hlY2tlcj0lZCkiLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpLCBy
ZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCAhIW1fY2FjaGVFbnRyeUZv
clZhbGlkYXRpb24sICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50Rmls
dGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJl
Y2VpdmVkUmVzcG9uc2UpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUG9saWN5
QWN0aW9uOjpJZ25vcmUpOworI2VuZGlmCisKICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkKICAg
ICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlY2VpdmVkUmVzcG9uc2UpOwog
CkBAIC05MDQsNiArOTMxLDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2EKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUg
dGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCiAgICAgICAgICAgICBzZW5kQnVmZmVyKCpt
X2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwogICAgICAgICB9CisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1fY29udGVudEZp
bHRlcikgeworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgICAgIH0KKyNlbmRp
ZgorCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hS
ZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC05OTMsNiArMTAy
NywxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAgICAgaWYg
KCFtX2ZpcnN0UmVzcG9uc2VVUkwuaXNWYWxpZCgpKQogICAgICAgICBtX2ZpcnN0UmVzcG9uc2VV
UkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAg
IGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBpZiAoYXV0byByZXN1
bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJl
cXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkgewpAQCAtMTI1MSw4ICsxMjkwLDE1IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW0KICAgICBpZiAobV9idWZmZXJl
ZERhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGJvb2wgc2hvdWxkRmlsdGVyID0g
ZmFsc2U7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBtX2J1ZmZlcmVkRGF0YS50YWtlQXNDb250
aWd1b3VzKCk7CisgICAgc2hvdWxkRmlsdGVyID0gbV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoc2hhcmVkQnVmZmVyLCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoIXNob3VsZEZpbHRlcikKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKElQQzo6
U2hhcmVkQnVmZmVyQ29weShzaGFyZWRCdWZmZXIuZ2V0KCkpLCBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoKSk7CisjZWxzZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoKm1fYnVmZmVyZWREYXRh
LmdldCgpKSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwotCisjZW5kaWYKICAg
ICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFM
ZW5ndGggPSAwOwogfQpAQCAtMTI2MSw2ICsxMzA3LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kQnVmZmVyKGMKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRh
dGFSZWNlaXZlZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSwgZW5jb2RlZERhdGFMZW5ndGgpKQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5j
b2RlZERhdGFMZW5ndGgpKTsKIH0KIApAQCAtMTMwNyw2ICsxMzU4LDExIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUMKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRp
ZFJldHJpZXZlQ2FjaGVFbnRyeToiKTsKICAgICBhdXRvIHJlc3BvbnNlID0gZW50cnktPnJlc3Bv
bnNlKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+cmVzcG9u
c2VSZWNlaXZlZCgpICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJl
Y2VpdmVkKHJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBpZiAoaXNN
YWluUmVzb3VyY2UoKSkKICAgICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJl
c3BvbnNlKTsKIApAQCAtMTM1OCw2ICsxNDE0LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInNlbmRSZXN1bHRGb3JD
YWNoZUVudHJ5OiIpOwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgaWYgKCFl
bnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKS5pc051bGwoKSkgeworI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZChlbnRyeS0+YnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCksIGVudHJ5LT5idWZmZXIoKS0+c2l6
ZSgpKSkgeworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc291cmNlKGVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRs
ZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzgxLDYgKzE0NDQsMTIgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGbwogICAgIG5ldHdvcmtMb2FkTWV0
cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSA9IDA7CiAKICAgICBzZW5kQnVmZmVyKCplbnRy
eS0+YnVmZmVyKCksIGVudHJ5LT5idWZmZXIoKS0+c2l6ZSgpKTsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIpIHsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNo
ZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0ZXIt
PnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyAgICB9CisjZW5kaWYKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtM
b2FkTWV0cmljcykpOwogfQogCkBAIC0xNjk3LDYgKzE3NjYsNDMgQEAgYm9vbCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmlzQXBwSW5pdGlhdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVz
dC5pc0FwcEluaXRpYXRlZCgpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5j
b2RlZERhdGFMZW5ndGgpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkpOworICAgIGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewor
ICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAgICAgIGlm
ICghdW5ibG9ja2VkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY29u
bmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRl
bnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEKSwgMCk7CisgICAgICAgIH0pOwor
ICAgIH0KKyAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9w
YXJhbWV0ZXJzLnJlcXVlc3QpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsK
KyAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3Ip
OworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBpZiAoc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQ
YWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOworICAgIGVsc2UgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX2NvbnRlbnRGaWx0ZXIpOworICAgICAgICBhdXRvJiBlcnJvciA9IG1fY29udGVudEZp
bHRlci0+YmxvY2tlZEVycm9yKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihlcnJvcikpOwor
ICAgIH0KK30KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIExPQURFUl9SRUxF
QVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
IlByaXZhdGVSZWxheWVkLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTQ1LDYgKzQ2LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOworY2xhc3MgQ29u
dGVudEZpbHRlcjsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNzIsNiArNzQsOSBAQCBjbGFzcyBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIgZmluYWwKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAg
ICAsIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAsIHB1
YmxpYyBXZWJDb3JlOjpDb250ZW50RmlsdGVyQ2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNv
bm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmIHJlcGx5ID0gbnVsbHB0cikKQEAgLTkyLDcg
Kzk3LDcgQEAgcHVibGljOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKIAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFscyk7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7
CiAKICAgICB2b2lkIHNldFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSkgeyBtX3Jlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2U7IH0KQEAgLTE1NSw2ICsxNjAsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FwcEluaXRp
YXRlZCgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+OjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJl
ZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPjo6ZGVyZWYoKTsgfQorI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJl
cGx5JiYpOwogCkBAIC0xNjIsNiArMTcyLDE0IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKTsgfQogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAvLyBDb250ZW50RmlsdGVy
Q2xpZW50CisgICAgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBzaXplX3QpIGZpbmFsOworICAgIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwor
ICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdl
YkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuVXNl
Q2FjaGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAgICAgYm9vbCBj
YW5Vc2VDYWNoZWRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25z
dDsKIApAQCAtMjIwLDYgKzIzOCwxMCBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VMb2FkSW5m
byByZXNvdXJjZUxvYWRJbmZvKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgc3RhcnRDb250ZW50RmlsdGVyaW5nKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOworI2VuZGlmCisKICAgICBjb25zdCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAKICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlvbjsKQEAgLTI2NCw2ICsyODYsMTEgQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKICAg
ICBVUkwgbV9maXJzdFJlc3BvbnNlVVJMOyAvLyBGaXJzdCBVUkwgaW4gcmVzcG9uc2UncyBVUkwg
bGlzdCAoaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVzcG9uc2UtdXJs
LWxpc3QpLgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3lFbmZvcmNlbWVudFJlc3VsdD4gbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0OworCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOwor
I2VuZGlmCisKICAgICBQcml2YXRlUmVsYXllZCBtX3ByaXZhdGVSZWxheWVkIHsgUHJpdmF0ZVJl
bGF5ZWQ6Ok5vIH07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI4OTk3MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUNvbnRl
bnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5o
IgorI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgpAQCAtNjA2LDYgKzYwNywxNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpCiAgICAgcGFnZS0+cmVzb3VyY2VMb2FkRGlk
Q29tcGxldGVXaXRoRXJyb3IoV1RGTW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVzcG9uc2UpLCBX
VEZNb3ZlKGVycm9yKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWxvYWRBZnRlclVu
YmxvY2tlZENvbnRlbnRGaWx0ZXIoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCit7Cisg
ICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOworICAgIGlm
ICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+cmVsb2FkKHsgfSk7Cit9Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvdXJj
ZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VM
b2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgcmVzb3Vy
Y2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3Vy
Y2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImJik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIHZvaWQgcmVsb2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIpOworI2VuZGlmCisKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RP
TUFJTlMpCiAgICAgdm9pZCBoYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Np
b24oUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDEwIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzUHJveHkgTGVnYWN5UmUKICAgICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxlbmdlKFdl
YktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktp
dDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UpCiAgICAgUmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0
IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIFJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVy
cm9yKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0
IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAg
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgUmVsb2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikKKyNlbmRpZgogCiAgICAgVHJpZ2dlckJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzcG9u
c2VEb21haW4sIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSAtPiAoYm9vbCBzdWNjZXNzKSBB
c3luYwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dWJyZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3Vic3RpdHV0ZURhdGEuaD4K
ICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIAogI2RlZmluZSBXRUJSRVNPVVJD
RUxPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0g
W3dlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0l
IiBQUkl1NjQgIl0gV2ViUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50
b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELnRvVUludDY0KCksICMj
X19WQV9BUkdTX18pCkBAIC0zNDksNiArMzUwLDI5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNvdXIKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRl
bnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpCit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3Zl
KHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwor
fQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQoreworICAgIGlmICghbV9jb3JlTG9h
ZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRh
LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoYmxvY2tl
ZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI3VuZGVmIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDExICs0MywxMyBAQCBjbGFzcyBT
aGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBlbnVt
IGNsYXNzIE1haW5GcmFtZU1haW5SZXNvdXJjZSA6IGJvb2w7CiB9CiAKQEAgLTk5LDYgKzEwMSwx
MiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9j
a0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIHZvaWQgY2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwor
ICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7
CisjZW5kaWYKKyAgICAKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fY29y
ZUxvYWRlcjsKICAgICBUcmFja2luZ1BhcmFtZXRlcnMgbV90cmFja2luZ1BhcmFtZXRlcnM7CiAg
ICAgV2ViUmVzb3VyY2VJbnRlcmNlcHRDb250cm9sbGVyIG1faW50ZXJjZXB0Q29udHJvbGxlcjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODk5NzEpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzcsNCArMzcsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUmVz
b3VyY2VMb2FkZXIgTGVnYWN5UmVjZQogICAgIC8vIERpZFJlY2VpdmVSZXNvdXJjZSBpcyBmb3Ig
d2hlbiB3ZSBoYXZlIHRoZSBlbnRpcmUgcmVzb3VyY2UgZGF0YSBhdmFpbGFibGUgYXQgb25jZSwg
c3VjaCBhcyB3aGVuIHRoZSByZXNvdXJjZSBpcyBjYWNoZWQgaW4gbWVtb3J5CiAgICAgRGlkUmVj
ZWl2ZVJlc291cmNlKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSByZXNvdXJjZSkK
ICNlbmRpZgorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KQorICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisgICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZUZyb21Db250ZW50RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEpCisjZW5kaWYKKwogfQo=
</data>
<flag name="review"
          id="479659"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452606</attachid>
            <date>2022-02-18 16:39:35 -0800</date>
            <delta_ts>2022-02-18 16:39:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20220218163932.patch</filename>
            <type>text/plain</type>
            <size>54334</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAyLTE4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmls
dGVyaW5nIHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1
MDcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFJl
bW92ZSBjb250ZW50IGZpbHRlcmluZyBmcm9tIERvY3VtZW50TG9hZGVyIHdoZW4gdGhlIGZlYXR1
cmUgaXMgZW5hYmxlZCwgc2luY2UgdGhpcyB0YWtlcyBwbGFjZSBpbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzLgorICAgICAgICBNb2RpZnkgdGhlIENvbnRlbnRGaWx0ZXIgY2xhc3MgYnkgcmVtb3Zp
bmcgdXNlIG9mIHRoZSB0eXBlcyBDYWNoZWRSZXNvdXJlIGFuZCBDYWNoZWRSYXdSZXNvdXJjZSwg
c2luY2Ugb2JqZWN0cyBvZiB0aGVzZQorICAgICAgICB0eXBlcyBhcmUgbm90IGF2YWlsYWJsZSBp
biB0aGUgTmV0d29ya2luZyBwcm9jZXNzLiBQYXJhbWV0ZXJzIHdpdGggdGhlc2UgdHlwZXMgYXJl
IHJlcGxhY2VkIHdpdGggVVJMIHBhcmFtZXRlcnMuCisgICAgICAgIFRoZSBuZXcgYmVoYXZpb3Ig
aXMgYmVoaW5kIGEgZmVhdHVyZSBmbGFnLCB3aGljaCBpcyBub3QgZW5hYmxlZCBpbiB0aGlzIHBh
dGNoLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5Rmlu
aXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXI6OmRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpibG9j
a2VkRXJyb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6aXNBbGxv
d2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVj
ZWl2ZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFj
aEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjbGVh
ck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21l
TWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpj
b250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5
KToKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3QgY29uc3QpOgorCiAyMDIyLTAyLTE4ICBC
cmFuZG9uIFN0ZXdhcnQgIDxicmFuZG9uc3Rld2FydEBhcHBsZS5jb20+CiAKICAgICAgICAgR2Vu
ZXJhdGUgY29tcGlsZV9jb21tYW5kcy5qc29uIG9uIG1hY09TIEJ1aWxkcwpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzY3LDcgKzMzNjcsNyBAQAogCQlBMTQ4MzJDQzE4
N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOUUxODdGNTA4NzAwREE2M0E2IC8qIFdl
YkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3Rl
bUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZh
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
MTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDkxREEyMUY4NTlEODcwMDk1RjVE
NCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9OwotCQlBMTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQg
LyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsg
fTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgw
MENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzExQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3Jt
Q29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNEJC
MEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QkIwOUUxRjk4MTNCODAwNjA1QTM1IC8qIE1v
Y2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2MUU2OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCAqLzsgfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEzLDIyICsxMTMsMzkgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyV2ls
bFNlbgogICAgIHJldHVybiAhcmVxdWVzdC5pc051bGwoKTsKIH0KIAorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6
OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICht
X3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coQ29u
dGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFpbiBy
ZXNvdXJjZSBhdCA8JXtzZW5zaXRpdmV9cz4uXG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCkpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmlsdGVyaW5nOworICAgIEFTU0VSVChtX21haW5S
ZXNvdXJjZVVSTC5pc0VtcHR5KCkpOworICAgIG1fbWFpblJlc291cmNlVVJMID0gdXJsOworfQor
I2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2Fj
aGVkUmF3UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpT
dG9wcGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+Llxu
IiwgcmVzb3VyY2UudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIExPRyhDb250
ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJl
c291cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHJlc291cmNlLnVybCgpLnN0cmluZygpLmFz
Y2lpKCkuZGF0YSgpKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkZpbHRlcmluZzsKICAgICBBU1NF
UlQoIW1fbWFpblJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0K
KyNlbmRpZgogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
KQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OlN0b3BwZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBtX21haW5SZXNvdXJjZVVSTCA9IFVSTCgpOworI2Vsc2UKICAg
ICBtX21haW5SZXNvdXJjZSA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogYm9vbCBDb250ZW50Rmls
dGVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKQEAgLTE0Miw0NCArMTU5LDc1IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29u
dGludWVBZnRlclJlc3BvbnMKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgbV9yZXNwb25zZVJl
Y2VpdmVkID0gdHJ1ZTsKKwogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwog
fQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
K2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyNlbHNlCiBib29sIENv
bnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQorI2VuZGlmCiB7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3Rl
ZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVy
aW5nKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNl
aXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBkYXRhLnNpemUoKSwgbV9tYWlu
UmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRh
IGZyb20gPCV7c2Vuc2l0aXZlfXM+LlxuIiwgZGF0YS5zaXplKCksIHVybCgpLnN0cmluZygpLmFz
Y2lpKCkuZGF0YSgpKTsKKwogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tl
ZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29udGVudEZpbHRlcikgewogICAgICAgICAg
ICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOwogICAgICAgICB9KTsKLQotICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkKLSAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJj
ZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dl
ZCkgeworICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworICAgICAgICAg
ICAgZGVsaXZlclJlc291cmNlRGF0YShkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbV9idWZmZXJzLmFwcGVuZChSZXNvdXJjZURhdGFJdGVtIHsg
UmVmUHRyIHsgJmRhdGEgfSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisjZWxzZQorICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgeworICAgICAgICAgICAgQVNTRVJUKG1fbWFp
blJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
QnVmZmVyRGF0YSk7CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9tYWluUmVzb3Vy
Y2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0
YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9j
a2VkOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNv
bnN0IFVSTCYgcmVzb3VyY2VVUkwpCisjZWxzZQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51
ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQorI2VuZGlmCiB7
Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNl
KTsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGll
bnQgfTsKLQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWlu
UmVzb3VyY2VVUkwpOworI2Vsc2UKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3Vy
Y2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGlmIChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1
cnJlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogCiAgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkZpbHRlcmluZykgewotICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5c
biIsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAg
ICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0
ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXtzZW5zaXRpdmV9cz4uXG4iLCB1cmwoKS5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9j
a2VkKFtdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAg
ICAgY29udGVudEZpbHRlci5maW5pc2hlZEFkZGluZ0RhdGEoKTsKICAgICAgICAgfSk7CiAKICAg
ICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpIHsKICAgICAgICAgICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6QWxsb3dlZDsKLSAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1f
bWFpblJlc291cmNlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworI2Vs
c2UKKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX21haW5SZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX21haW5SZXNvdXJjZS0+ZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwor
ICAgICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpKTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQpCkBAIC0yMTksNyArMjY3LDkgQEAgdm9pZCBDb250ZW50
RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdAogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRl
OjpBbGxvd2VkKTsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCk7CiAgICAg
QVNTRVJUKHN0YXRlID09IFN0YXRlOjpBbGxvd2VkIHx8IHN0YXRlID09IFN0YXRlOjpCbG9ja2Vk
KTsKLSAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2Fk
IHNob3VsZCBiZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIG1fbWFpblJlc291cmNlID8gbV9t
YWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpIDogIiIpOworI2lmICFM
T0dfRElTQUJMRUQKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgZGVj
aWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXtzZW5zaXRpdmV9
cz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwg
dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworI2VuZGlmIC8vICFMT0dfRElTQUJMRUQK
ICAgICBtX3N0YXRlID0gc3RhdGU7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQp
CiAgICAgICAgIHJldHVybjsKQEAgLTIyOCwxMiArMjc4LDI2IEBAIHZvaWQgQ29udGVudEZpbHRl
cjo6ZGlkRGVjaWRlKFN0YXRlIHN0YXQKICAgICBtX2NsaWVudC5jYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlcihtX2Jsb2NrZWRFcnJvcik7CiB9CiAKLXZvaWQgQ29udGVudEZp
bHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lk
IENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6QWxsb3dlZCk7Ci0gICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBpZiAoYXV0byog
cmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2Ns
aWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVu
Y29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihidWZmZXIpOworI2VuZGlmCit9CisKK1VSTCBDb250ZW50RmlsdGVyOjp1cmwoKQor
eworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgcmV0dXJuIG1fbWFpblJlc291cmNlVVJMOworI2Vsc2UKKyAgICBpZiAobV9tYWluUmVzb3Vy
Y2UpCisgICAgICAgIHJldHVybiBtX21haW5SZXNvdXJjZS0+dXJsKCk7CisgICAgcmV0dXJuIFVS
TCgpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAg
LTI0NSw2ICszMDksNyBAQCBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCiAgICAg
cmV0dXJuIGJsb2NrZWRQYWdlVVJMOwogfQogCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRl
ciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGlmIChhdXRv
IGNvbnRlbnRGaWx0ZXIgPSBhY3RpdmVMb2FkZXIuY29udGVudEZpbHRlcigpKSB7CkBAIC0yNTks
NiArMzI0LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdAogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CisjZW5kaWYKIAogYm9vbCBDb250ZW50RmlsdGVyOjp3aWxsSGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgY29u
c3QKIHsKQEAgLTI4Myw2ICszNDksMTUgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92
aXNpb25hbExvYQogICAgIG1fY2xpZW50LmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9t
Q29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCgpLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBD
b250ZW50RmlsdGVyOjpkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCkKK3sKKyAgICBmb3IgKGF1
dG8mIGJ1ZmZlciBpbiBtX2J1ZmZlcnMpCisgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKmJ1
ZmZlci5idWZmZXIsIG1fYnVmZmVyc1tpXS5lbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgbV9idWZm
ZXJzLmNsZWFyKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwyMyArNTAsMzYgQEAgY2xh
c3MgQ29udGVudEZpbHRlciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
YXRpYyB2b2lkIGFkZFR5cGUoKSB7IHR5cGVzKCkuYXBwZW5kKHR5cGU8VD4oKSk7IH0KIAotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0
ZXJDbGllbnQmKTsKLSAgICB+Q29udGVudEZpbHRlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJD
bGllbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+Q29udGVudEZpbHRlcigpOwogCiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHVybFNjaGVtZSgpIHsgcmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmls
dGVyIjsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNl
KGNvbnN0IFVSTCYpOworI2Vsc2UKICAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNl
KENhY2hlZFJhd1Jlc291cmNlJik7Ci0gICAgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNl
KCk7CisjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoKTsKIAotICAgIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBjb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRC
dWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpOwor
I2Vsc2UKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAgICAgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmKTsKKyNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVE
YXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpOwogICAgIGJvb2wgd2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0OwotICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAor
ICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGJsb2NrZWRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1f
YmxvY2tlZEVycm9yOyB9CisgICAgYm9vbCBpc0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlID09IFN0YXRlOjpBbGxvd2VkOyB9CisgICAgYm9vbCByZXNwb25zZVJlY2VpdmVkKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZVJlY2VpdmVkOyB9CisgICAgCiBwcml2YXRlOgogICAgIHVz
aW5nIFN0YXRlID0gUGxhdGZvcm1Db250ZW50RmlsdGVyOjpTdGF0ZTsKIApAQCAtODIsMTUgKzk1
LDMxIEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQg
Zm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoRnVuY3Rpb24mJik7CiAgICAgdm9pZCBk
aWREZWNpZGUoU3RhdGUpOwotICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNv
dXJjZSYpOwotCisgICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IDApOworI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBkZWxpdmVyU3RvcmVkUmVz
b3VyY2VEYXRhKCk7CisjZW5kaWYKKyAgICAKKyAgICBVUkwgdXJsKCk7CisgICAgCiAgICAgQ29u
dGFpbmVyIG1fY29udGVudEZpbHRlcnM7CiAgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9jbGll
bnQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBVUkwgbV9tYWluUmVzb3VyY2VVUkw7CisgICAgc3RydWN0IFJlc291cmNlRGF0YUl0ZW0g
eworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIHNp
emVfdCBlbmNvZGVkRGF0YUxlbmd0aDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxSZXNvdXJj
ZURhdGFJdGVtPiBtX2J1ZmZlcnM7CisjZWxzZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJjZTsKKyNlbmRpZgogICAgIGNvbnN0IFBsYXRm
b3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3VyY2VFcnJvciBt
X2Jsb2NrZWRFcnJvcjsKICAgICBib29sIG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9yZXNwb25zZVJlY2VpdmVkIHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ckNsaWVudC5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0MiwxMSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWYoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsKKyNlbHNlCiAgICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50
RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4
OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxOSw3ICs0MTksNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRp
bmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAg
ICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEwLDcgKzcxMCw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoV1RG
TW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5l
d1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJ
bmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5k
bGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRl
bnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2
ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjIsNyArMTMyMiw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAogdm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewot
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
ICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRl
ckRhdGFSZWNlaXZlZChidWZmZXIpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTE0NTUs
NyArMTQ1NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAg
c3RvcExvYWRpbmcoKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2Ut
Pmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRl
ci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMDE3LDcgKzIwMTcs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKICAgICBtX2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkgPyBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKICNlbmRp
ZgogCkBAIC0yMjIwLDcgKzIyMjAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5S
ZXNvdXJjZSgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9tYWluUmVz
b3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFp
blJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIp
CiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwog
I2VuZGlmCkBAIC0yMzUwLDcgKzIzNTAsNyBAQCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IERvY3VtZW50TG9hCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNs
aWVudCgpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2UpOwogI2VuZGlm
CkBAIC0yNDA3LDcgKzI0MDcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJp
dHlQb2xpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVNlY3VyaXR5UG9saWN5Vmlv
bGF0aW9uRXZlbnQoV1RGTW92ZShldmVudEluaXQpKTsKIH0KIAotI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogdm9pZCBEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CkBAIC0yNDE4LDEyICsyNDE4LDE5
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUwKICAgICBjYW5jZWxN
YWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRl
cjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJs
b2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAg
cmV0dXJuIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92
ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAg
IGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBh
Z2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKIAotUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2Nr
KENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
UmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2Nr
KENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFj
aGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewpAQCAtMjQzMyw4ICsyNDQwLDQwIEBAIFJlc291
cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWwKICAgICAgICAgfSk7CiAgICAgfQog
ICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RG
TW92ZSh1bmJsb2NrSGFuZGxlcikpOwotICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5ibG9ja2Vk
QnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCgpKTsKKyAgICBhdXRvIGVycm9yID0gZnJhbWVM
b2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CisKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIG1fYmxv
Y2tlZEJ5Q29udGVudEZpbHRlciA9IHRydWU7CisgICAgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsK
KyNlbmRpZgorCisgICAgcmV0dXJuIGVycm9yOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpo
YW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2Nr
ZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAg
ZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFn
ZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KKworYm9vbCBEb2N1bWVudExvYWRlcjo6Y29udGVu
dEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2Nr
ZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJv
ci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fY29udGVu
dEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGVycm9yKTsKKyNlbmRpZgorfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50Rmls
dGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShlcnJvcik7CisjZW5kaWYKK30KKwogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QWN0aXZlQ29udGVudFJ1bGVMaXN0QWN0aW9u
UGF0dGVybnMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PiYgcGF0dGVybnMp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjg5
OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDogcHVi
bGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ci0j
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAg
ICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVudAogI2VuZGlmCiAgICAgLCBwcml2YXRlIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTQwMiwxMCArNDAyLDE0IEBAIHB1YmxpYzoKICAg
ICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
I2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
IENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRG
aWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxE
b2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsg
UmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgorICAgIFdFQkNP
UkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lv
bmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0
ZURhdGEmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24s
IHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqKT4mJik7CkBAIC00NTEsNiArNDU1LDExIEBAIHB1YmxpYzoKICAgICBi
b29sIGlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7IH0K
ICAgICB2b2lkIHNldElzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQo
Ym9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKSB7IG1faXND
b250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCA9IGlzQ29udGludWluZ0xv
YWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKKyAgICBib29sIGNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBjb250ZW50RmlsdGVySGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CisjZW5kaWYK
KwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTUwMyw3ICs1MTIs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgLy8gQ29udGVu
dEZpbHRlckNsaWVudAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3Vn
aENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7
CkBAIC02NTUsNyArNjY0LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29u
dGVudEZpbHRlcjsKKyNlbHNlCisgICAgYm9vbCBtX2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIgeyBm
YWxzZSB9OworICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CisjZW5kaWYKICNlbmRp
ZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTMsNyArMjQ1Myw2IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2kKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVy
cm9yQmVpbmdIYW5kbGVkVVJMID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci51cmwoKTsKIAog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBw
cm92aXNpb25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXIoKTsKICAgICBhdXRvIGNvbnRl
bnRGaWx0ZXJXaWxsQ29udGludWVMb2FkaW5nID0gZmFsc2U7CiAjZW5kaWYKIApAQCAtMjQ2MSw3
ICsyNDYwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAg
IGlmIChoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAgIHdpbGxDb250aW51ZUxv
YWRpbmcgPSBXaWxsQ29udGludWVMb2FkaW5nOjpZZXM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQotICAgIGlmIChjb250ZW50RmlsdGVyICYmIGNvbnRlbnRGaWx0ZXItPndpbGxIYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSkgeworICAgIGlmIChwcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShlcnJvcikpIHsKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9IFdpbGxDb250aW51ZUxv
YWRpbmc6OlllczsKICAgICAgICAgY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcgPSB0
cnVlOwogICAgIH0KQEAgLTI0NzEsNyArMjQ3MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkRmFpbFByb3Zpc2kKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBp
ZiAoY29udGVudEZpbHRlcldpbGxDb250aW51ZUxvYWRpbmcpCi0gICAgICAgIGNvbnRlbnRGaWx0
ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAgICBwcm92aXNp
b25hbERvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGVycm9yKTsKICNlbmRpZgogCiAgICAgbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFu
ZGxlZFVSTCA9IHsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IGxv
YWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
ICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJv
b2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBpZiAoYXV0byBsb2FkZXIgPSBtX2Zy
YW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBzaG91bGRD
b250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVl
c3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsgfQogICAg
ICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7
IH0KICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgICAgIAorCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Vic3RpdHV0ZURhdGE+IGRlY29kZShE
ZWNvZGVyJik7CisKICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwpAQCAtNjcsNCAr
NzAsMzYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHkgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5OjpIaWRkZW4gfTsKICAgICB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBTdWJzdGl0dXRlRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBtX2NvbnRlbnQgPDwgbV9mYWlsaW5nVVJMIDw8IG1fcmVzcG9uc2UgPDwgbV9z
aG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
Pgorc3RkOjpvcHRpb25hbDxTdWJzdGl0dXRlRGF0YT4gU3Vic3RpdHV0ZURhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBjb250ZW50OworICAgIGRlY29kZXIgPj4gY29udGVudDsKKyAgICBpZiAo
IWNvbnRlbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFVSTD4gZmFpbGluZ1VSTDsKKyAgICBkZWNvZGVyID4+IGZhaWxpbmdVUkw7CisgICAgaWYg
KCFmYWlsaW5nVVJMKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpv
cHRpb25hbDxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZTsKKyAgICBkZWNvZGVyID4+IHJlc3Bv
bnNlOworICAgIGlmICghcmVzcG9uc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eT4gc2hvdWxkUmV2ZWFs
VG9TZXNzaW9uSGlzdG9yeTsKKyAgICBkZWNvZGVyID4+IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhp
c3Rvcnk7CisgICAgaWYgKCFzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpjb250ZW50KSwg
KmZhaWxpbmdVUkwsICpyZXNwb25zZSwgKnNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgfSB9
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkw
MTQ5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw0NSBAQAorMjAyMi0wMi0xOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBjb250ZW50IGZpbHRlcmluZyB0byBOZXR3b3JraW5nIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc2MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxNTA3MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIGZyb20gdGhl
IERvY3VtZW50TG9hZGVyIGNsYXNzIGluIHRoZSBXZWJQcm9jZXNzIHRvIHRoZSBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIgY2xhc3MgaW4gdGhlCisgICAgICAgIE5ldHdvcmtpbmcgcHJvY2Vzcy4gVGhl
IE5ldHdvcmtSZXNvdXJjZUxvYWRlciBpcyBub3cgYSBjbGllbnQgb2YgdGhlIGNvbnRlbnQgZmls
dGVyLCBhbmQgd2lsbCBzZW5kIG1lc3NhZ2VzCisgICAgICAgIHRvIHRoZSBEb2N1bWVudExvYWRl
ciBpbiB0aGUgV2ViUHJvY2VzcyB0byBjYW5jZWwgdGhlIGxvYWQgd2hlbiB0aGUgY29udGVudCBm
aWx0ZXIgZGVjaWRlZCB0byBibG9jayB0aGUgbG9hZC4KKyAgICAgICAgSWYgdGhlIGNvbnRlbnQg
ZmlsdGVyIGlzIHByb3ZpZGluZyByZXBsYWNlbWVudCBkYXRhLCB0aGlzIHdpbGwgYWxzbyBiZSBz
ZW50IG92ZXIgSVBDIHRvIHRoZSBXZWJQcm9jZXNzLgorICAgICAgICBEYXRhIGlzIG5vdCBiZWlu
ZyBzZW50IHRvIHRoZSBXZWJQcm9jZXNzIHVudGlsIHRoZSBjb250ZW50IGZpbHRlciBoYXMgZGVj
aWRlZCB0byBhbGxvdyB0aGUgbG9hZCwgaWYgY29udGVudAorICAgICAgICBmaWx0ZXJpbmcgaXMg
ZW5hYmxlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRl
cmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVu
dEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZy
b21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVsb2FkQWZ0
ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRl
cjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRl
cjo6cmVsb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW46CisKIDIwMjItMDItMTggIEJyYW5kb24gU3Rld2FydCAgPGJyYW5kb25zdGV3YXJ0
QGFwcGxlLmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBjb21waWxlX2NvbW1hbmRzLmpzb24gb24g
bWFjT1MgQnVpbGRzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3Q29u
dmVydGVyLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4KKyNlbmRpZgorCiAj
ZGVmaW5lIExPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywg
IiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZy
YW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNl
PSVkLCBkZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWlu
UmVzb3VyY2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRl
c3RpbmF0aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0FE
RVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBm
cmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZT0lZCwgZGVzdGluYXRpb249JXUsIGlzU3luY2hyb25vdXM9JWRdIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6IiBmbXQsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCksIGlzTWFp
blJlc291cmNlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BhcmFtZXRlcnMub3B0aW9ucy5k
ZXN0aW5hdGlvbiksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTg3LDgg
KzE5MiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIEFTU0VS
VCghbV93YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwogCisgICAgYXV0byBu
ZXdSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHN0YXJ0
Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KTsKKyNlbmRpZgorCiAgICAgaWYgKG1fbmV0d29y
a0xvYWRDaGVja2VyKSB7Ci0gICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNv
dXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgbV9uZXR3b3Jr
TG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgdGhpcywg
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChhdXRvJiYgcmVzdWx0KSB7CiAg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
MjE3LDE0ICsyMjcsMjYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoYXQgY29kZSBwYXRo
IG9uY2UgbV9uZXR3b3JrTG9hZENoZWNrZXIgaXMgdXNlZCBmb3IgYWxsIG5ldHdvcmsgbG9hZHMu
Ci0gICAgaWYgKGNhblVzZUNhY2hlKG9yaWdpbmFsUmVxdWVzdCgpKSkgeworICAgIGlmIChjYW5V
c2VDYWNoZShuZXdSZXF1ZXN0KSkgewogICAgICAgICByZXRyaWV2ZUNhY2hlRW50cnkob3JpZ2lu
YWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RhcnROZXR3b3Jr
TG9hZChSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCBGaXJzdExvYWQ6Olll
cyk7CisgICAgc3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0s
IEZpcnN0TG9hZDo6WWVzKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250
ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIWlzTWFp
blJlc291cmNlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250
ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOworICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250
aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSkpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJl
c291cmNlKHJlcXVlc3QudXJsKCkpOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogewogICAgIExPQURFUl9SRUxFQVNFX0xPRygicmV0cmlldmVDYWNoZUVudHJ5OiBpc01haW5G
cmFtZUxvYWQ9JWQiLCBpc01haW5GcmFtZUxvYWQoKSk7CkBAIC02OTIsNiArNzE0LDExIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmUKIHsKICAgICBMT0FERVJfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBNSU1FVHlw
ZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRlbnRMZW5ndGg9JSIgUFJJZDY0
ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFzTmV0d29ya0xvYWRDaGVja2Vy
PSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25z
ZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgISFtX25ldHdvcmtMb2Fk
Q2hlY2tlcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29u
dGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVjZWl2ZWRSZXNwb25zZSkpCisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisjZW5kaWYKKwog
ICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBkaWRSZWNlaXZlTWFpblJlc291cmNl
UmVzcG9uc2UocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTkwNCw2ICs5MzEsMTMgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAgICAgICAgLy8gRklYTUU6
IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVy
ZS4KICAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLmdldCgpLCAtMSk7CiAg
ICAgICAgIH0KKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVz
dC51cmwoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWlu
UmVzb3VyY2UoKTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJp
Y3MpKTsKICAgICB9CiAKQEAgLTk5Myw2ICsxMDI3LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlZGkKICAgICBpZiAoIW1fZmlyc3RSZXNwb25zZVVSTC5pc1ZhbGlk
KCkpCiAgICAgICAgIG1fZmlyc3RSZXNwb25zZVVSTCA9IHJlZGlyZWN0UmVzcG9uc2UudXJsKCk7
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRl
cldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCisKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJh
bCgpKSB7CiAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QudXJsKCkp
KSB7CkBAIC0xMjUxLDggKzEyOTAsMTQgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1
ZmZlcmluZ1RpbQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBtX2J1ZmZlcmVkRGF0YS50YWtlQXNDb250aWd1
b3VzKCk7CisgICAgYm9vbCBzaG91bGRGaWx0ZXIgPSBtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChzaGFyZWRCdWZmZXIsIG1fYnVm
ZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpOworICAgIGlmICghc2hvdWxkRmlsdGVyKQorICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KHNoYXJlZEJ1ZmZlci5nZXQoKSksIG1fYnVmZmVyZWREYXRhRW5j
b2RlZERhdGFMZW5ndGgpKTsKKyNlbHNlCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSgqbV9idWZmZXJlZERh
dGEuZ2V0KCkpLCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7Ci0KKyNlbmRpZgog
ICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0
YUxlbmd0aCA9IDA7CiB9CkBAIC0xMjYxLDYgKzEzMDYsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNlbmRCdWZmZXIoYwogewogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsK
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVy
RGF0YVJlY2VpdmVkKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLCBlbmNvZGVkRGF0YUxlbmd0aCkp
CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBl
bmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCkBAIC0xMzA3LDYgKzEzNTcsMTEgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQwogICAgIExPQURFUl9SRUxFQVNFX0xPRygi
ZGlkUmV0cmlldmVDYWNoZUVudHJ5OiIpOwogICAgIGF1dG8gcmVzcG9uc2UgPSBlbnRyeS0+cmVz
cG9uc2UoKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5yZXNw
b25zZVJlY2VpdmVkKCkgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNl
UmVjZWl2ZWQocmVzcG9uc2UpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGlmIChp
c01haW5SZXNvdXJjZSgpKQogICAgICAgICBkaWRSZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2Uo
cmVzcG9uc2UpOwogCkBAIC0xMzU4LDYgKzE0MTMsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnNlbmRSZXN1bHRGbwogICAgIExPQURFUl9SRUxFQVNFX0xPRygic2VuZFJlc3VsdEZv
ckNhY2hlRW50cnk6Iik7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBpZiAo
IWVudHJ5LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpLmlzTnVsbCgpKSB7CisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgaWYgKG1f
Y29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2Vp
dmVkKGVudHJ5LT5idWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKSwgZW50cnktPmJ1ZmZlcigpLT5z
aXplKCkpKSB7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3Rp
ZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICBtX2Nv
bnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzb3VyY2UoZW50cnktPnNoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzODEsNiArMTQ0MywxMiBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvCiAgICAgbmV0d29ya0xvYWRN
ZXRyaWNzLnJlc3BvbnNlQm9keURlY29kZWRTaXplID0gMDsKIAogICAgIHNlbmRCdWZmZXIoKmVu
dHJ5LT5idWZmZXIoKSwgZW50cnktPmJ1ZmZlcigpLT5zaXplKCkpOworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKG1fY29udGVudEZp
bHRlcikgeworICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5p
c2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSk7CisgICAgICAgIG1fY29udGVudEZpbHRl
ci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOworICAgIH0KKyNlbmRpZgogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29y
a0xvYWRNZXRyaWNzKSk7CiB9CiAKQEAgLTE2OTcsNiArMTc2NSw0MyBAQCBib29sIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6aXNBcHBJbml0aWF0CiAgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1
ZXN0LmlzQXBwSW5pdGlhdGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFS
ZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBl
bmNvZGVkRGF0YUxlbmd0aCkpOworfQorCitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNv
bnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KSk7CisgICAgaWYgKCF1bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2VzcygpKSB7
CisgICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgeworICAgICAgICAgICAg
aWYgKCF1bmJsb2NrZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9j
b25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlbG9hZEFmdGVyVW5ibG9ja2VkQ29u
dGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQpLCAwKTsKKyAgICAgICAgfSk7
CisgICAgfQorICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvciht
X3BhcmFtZXRlcnMucmVxdWVzdCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
YW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIp
OworICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJv
cik7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQoreworICAgIGlmIChzdWJzdGl0
dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tl
ZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CisgICAgZWxzZSB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fY29udGVudEZpbHRlcik7CisgICAgICAgIGF1dG8mIGVycm9yID0gbV9jb250ZW50
RmlsdGVyLT5ibG9ja2VkRXJyb3IoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGVycm9yKSk7
CisgICAgfQorfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTE9BREVSX1JF
TEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiUHJpdmF0ZVJlbGF5ZWQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgpAQCAtNDUsNiArNDYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CitjbGFzcyBD
b250ZW50RmlsdGVyOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Np
b247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC03Miw2ICs3NCw5IEBAIGNsYXNzIE5ldHdv
cmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgog
ICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAogICAgICwg
cHVibGljIFdlYkNvcmU6OkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICwg
cHVibGljIFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJDbGllbnQKKyNlbmRpZgogICAgICwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVhdGUoTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJm
b3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYgcmVwbHkgPSBudWxscHRyKQpAQCAtOTIs
NyArOTcsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRp
ZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpOwogCi0gICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZv
ckNyZWRlbnRpYWxzKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxz
KTsKIAogICAgIHZvaWQgc2V0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlKSB7IG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsgfQogICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZTsgfQpAQCAtMTU1LDYgKzE2MCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQXBwSW5p
dGlhdGVkKCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj46OnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsg
UmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+OjpkZXJlZigpOyB9CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxheWVk
UmVwbHkmJik7CiAKQEAgLTE2Miw2ICsxNzIsMTQgQEAgcHJpdmF0ZToKICAgICBJUEM6OkNvbm5l
Y3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdWlu
dDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpOyB9CiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIC8vIENvbnRlbnRGaWx0
ZXJDbGllbnQKKyAgICB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgZmluYWw7CisgICAgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7
CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgdm9pZCBoYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwg
V2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBmaW5hbDsKKyNlbmRpZgorCiAgICAgYm9vbCBjYW5V
c2VDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICBib29s
IGNhblVzZUNhY2hlZFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNv
bnN0OwogCkBAIC0yMjAsNiArMjM4LDEwIEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZUxvYWRJ
bmZvIHJlc291cmNlTG9hZEluZm8oKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKKwogICAgIGNvbnN0IE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAgIFJlZjxOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwpAQCAtMjY0LDYgKzI4NiwxMSBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwog
ICAgIFVSTCBtX2ZpcnN0UmVzcG9uc2VVUkw7IC8vIEZpcnN0IFVSTCBpbiByZXNwb25zZSdzIFVS
TCBsaXN0IChodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXNwb25zZS11
cmwtbGlzdCkuCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBv
bGljeUVuZm9yY2VtZW50UmVzdWx0PiBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQ7CisK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7
CisjZW5kaWYKKwogICAgIFByaXZhdGVSZWxheWVkIG1fcHJpdmF0ZVJlbGF5ZWQgeyBQcml2YXRl
UmVsYXllZDo6Tm8gfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjg5OTcx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJQ29u
dGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgiCisjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNp
bmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgiCkBAIC02MDYsNiArNjA3LDE0IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVzb3VyY2VMb2FkRGkKICAgICBwYWdlLT5yZXNvdXJjZUxvYWRE
aWRDb21wbGV0ZVdpdGhFcnJvcihXVEZNb3ZlKGxvYWRJbmZvKSwgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUoZXJyb3IpKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbG9hZEFmdGVy
VW5ibG9ja2VkQ29udGVudEZpbHRlcihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKK3sK
KyAgICBpZiAoYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpKQor
ICAgICAgICBwYWdlLT5yZWxvYWQoeyB9KTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKElOVEVM
TElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmR1
bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsNiArMjU0
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc291cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCByZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJv
cihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCByZWxv
YWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0ZXIoV2ViUGFnZVByb3h5SWRlbnRpZmllcik7Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICB2b2lkIGhhc0FwcEJv
dW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBjbGVhckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNzYsNiAr
NzYsMTAgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZQogICAgIFJl
c291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291
cmNlTG9hZEluZm8sIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSkK
ICAgICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZv
IHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAg
ICAgUmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZv
IHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisgICAgCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBSZWxvYWRBZnRlclVuYmxvY2tlZENv
bnRlbnRGaWx0ZXIoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVy
KQorI2VuZGlmCiAKICAgICBUcmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZp
Z2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiwgV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllciBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyVG9SZXN1bWUpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9hZGVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TdWJzdGl0dXRlRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogCiAjZGVmaW5lIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwg
Li4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBm
cmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiXSBXZWJSZXNvdXJjZUxv
YWRlcjo6IiBmbXQsIHRoaXMsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKQEAgLTM0OSw2ICsz
NTAsMjkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cgogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25z
dCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICBpZiAoIW1fY29yZUxv
YWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47
CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVy
RGlkQmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9h
ZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7
CisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+
Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3Rp
dHV0ZURhdGEpCit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50Rmls
dGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEp
OworfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgV0VCUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTEgKzQzLDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNs
YXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CitjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGVudW0gY2xhc3MgTWFpbkZyYW1lTWFpblJlc291
cmNlIDogYm9vbDsKIH0KIApAQCAtOTksNiArMTAxLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCk7CisgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBoYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwg
Y29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyNlbmRpZgorICAgIAogICAgIFJlZlB0
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9hZGVyOwogICAgIFRyYWNraW5nUGFy
YW1ldGVycyBtX3RyYWNraW5nUGFyYW1ldGVyczsKICAgICBXZWJSZXNvdXJjZUludGVyY2VwdENv
bnRyb2xsZXIgbV9pbnRlcmNlcHRDb250cm9sbGVyOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw0ICszNywxMSBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAg
ICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlzIGZvciB3aGVuIHdlIGhhdmUgdGhlIGVudGlyZSBy
ZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBvbmNlLCBzdWNoIGFzIHdoZW4gdGhlIHJlc291cmNl
IGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBEaWRSZWNlaXZlUmVzb3VyY2UoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIENvbnRlbnRGaWx0ZXJE
aWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisgICAgQ2FuY2VsTWFp
blJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
cikKKyAgICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoVVJM
IGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSkK
KyNlbmRpZgorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452610</attachid>
            <date>2022-02-18 16:57:48 -0800</date>
            <delta_ts>2022-02-18 16:57:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233760-20220218165747.patch</filename>
            <type>text/plain</type>
            <size>54327</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAyLTE4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbnRlbnQgZmls
dGVyaW5nIHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjE1
MDcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFJl
bW92ZSBjb250ZW50IGZpbHRlcmluZyBmcm9tIERvY3VtZW50TG9hZGVyIHdoZW4gdGhlIGZlYXR1
cmUgaXMgZW5hYmxlZCwgc2luY2UgdGhpcyB0YWtlcyBwbGFjZSBpbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzLgorICAgICAgICBNb2RpZnkgdGhlIENvbnRlbnRGaWx0ZXIgY2xhc3MgYnkgcmVtb3Zp
bmcgdXNlIG9mIHRoZSB0eXBlcyBDYWNoZWRSZXNvdXJlIGFuZCBDYWNoZWRSYXdSZXNvdXJjZSwg
c2luY2Ugb2JqZWN0cyBvZiB0aGVzZQorICAgICAgICB0eXBlcyBhcmUgbm90IGF2YWlsYWJsZSBp
biB0aGUgTmV0d29ya2luZyBwcm9jZXNzLiBQYXJhbWV0ZXJzIHdpdGggdGhlc2UgdHlwZXMgYXJl
IHJlcGxhY2VkIHdpdGggVVJMIHBhcmFtZXRlcnMuCisgICAgICAgIFRoZSBuZXcgYmVoYXZpb3Ig
aXMgYmVoaW5kIGEgZmVhdHVyZSBmbGFnLCB3aGljaCBpcyBub3QgZW5hYmxlZCBpbiB0aGlzIHBh
dGNoLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5Rmlu
aXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXI6OmRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpibG9j
a2VkRXJyb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6aXNBbGxv
d2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVj
ZWl2ZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFj
aEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjbGVh
ck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21l
TWFpblJlc291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpj
b250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5
KToKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3QgY29uc3QpOgorCiAyMDIyLTAyLTE4ICBC
cmFuZG9uIFN0ZXdhcnQgIDxicmFuZG9uc3Rld2FydEBhcHBsZS5jb20+CiAKICAgICAgICAgR2Vu
ZXJhdGUgY29tcGlsZV9jb21tYW5kcy5qc29uIG9uIG1hY09TIEJ1aWxkcwpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzY3LDcgKzMzNjcsNyBAQAogCQlBMTQ4MzJDQzE4
N0Y2N0M0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOUUxODdGNTA4NzAwREE2M0E2IC8qIFdl
YkNvcmVUaHJlYWRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBMTQ4MzJDRjE4N0Y2ODQ3MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3Rl
bUludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE0ODMyQTExODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZh
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
MTQ5MURBMzFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDkxREEyMUY4NTlEODcwMDk1RjVE
NCAvKiBQYXltZW50U2Vzc2lvbi5oICovOyB9OwotCQlBMTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQg
LyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCAqLzsg
fTsKKwkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgw
MENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0OTc4NzExQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3Jt
Q29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNEJC
MEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QkIwOUUxRjk4MTNCODAwNjA1QTM1IC8qIE1v
Y2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE2MUU2OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCAqLzsgfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEzLDIyICsxMTMsMzkgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyV2ls
bFNlbgogICAgIHJldHVybiAhcmVxdWVzdC5pc051bGwoKTsKIH0KIAorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXI6
OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICht
X3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coQ29u
dGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFpbiBy
ZXNvdXJjZSBhdCA8JXtzZW5zaXRpdmV9cz4uXG4iLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCkpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmlsdGVyaW5nOworICAgIEFTU0VSVChtX21haW5S
ZXNvdXJjZVVSTC5pc0VtcHR5KCkpOworICAgIG1fbWFpblJlc291cmNlVVJMID0gdXJsOworfQor
I2Vsc2UKIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2Fj
aGVkUmF3UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpT
dG9wcGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgd2lsbCBzdGFydCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+Llxu
IiwgcmVzb3VyY2UudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIExPRyhDb250
ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIHN0YXJ0IGZpbHRlcmluZyBtYWluIHJl
c291cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHJlc291cmNlLnVybCgpLnN0cmluZygpLmFz
Y2lpKCkuZGF0YSgpKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkZpbHRlcmluZzsKICAgICBBU1NF
UlQoIW1fbWFpblJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0K
KyNlbmRpZgogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
KQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQogICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OlN0b3BwZWQ7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBtX21haW5SZXNvdXJjZVVSTCA9IFVSTCgpOworI2Vsc2UKICAg
ICBtX21haW5SZXNvdXJjZSA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogYm9vbCBDb250ZW50Rmls
dGVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKQEAgLTE0Miw0NCArMTU5LDc1IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29u
dGludWVBZnRlclJlc3BvbnMKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgbV9yZXNwb25zZVJl
Y2VpdmVkID0gdHJ1ZTsKKwogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwog
fQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
K2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyNlbHNlCiBib29sIENv
bnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQorI2VuZGlmCiB7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3Rl
ZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVy
aW5nKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNl
aXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBkYXRhLnNpemUoKSwgbV9tYWlu
UmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRh
IGZyb20gPCV7c2Vuc2l0aXZlfXM+LlxuIiwgZGF0YS5zaXplKCksIHVybCgpLnN0cmluZygpLmFz
Y2lpKCkuZGF0YSgpKTsKKwogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tl
ZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29udGVudEZpbHRlcikgewogICAgICAgICAg
ICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOwogICAgICAgICB9KTsKLQotICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkKLSAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJj
ZURhdGEoKm1fbWFpblJlc291cmNlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dl
ZCkgeworICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworICAgICAgICAg
ICAgZGVsaXZlclJlc291cmNlRGF0YShkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbV9idWZmZXJzLmFwcGVuZChSZXNvdXJjZURhdGFJdGVtIHsg
UmVmUHRyIHsgJmRhdGEgfSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisjZWxzZQorICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgeworICAgICAgICAgICAgQVNTRVJUKG1fbWFp
blJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
QnVmZmVyRGF0YSk7CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9tYWluUmVzb3Vy
Y2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0
YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9j
a2VkOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNv
bnN0IFVSTCYgcmVzb3VyY2VVUkwpCisjZWxzZQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51
ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQorI2VuZGlmCiB7
Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNl
KTsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGll
bnQgfTsKLQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWlu
UmVzb3VyY2VVUkwpOworI2Vsc2UKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3Vy
Y2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGlmIChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1
cnJlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogCiAgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkZpbHRlcmluZykgewotICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5c
biIsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAg
ICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0
ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXtzZW5zaXRpdmV9cz4uXG4iLCB1cmwoKS5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9j
a2VkKFtdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewogICAgICAgICAg
ICAgY29udGVudEZpbHRlci5maW5pc2hlZEFkZGluZ0RhdGEoKTsKICAgICAgICAgfSk7CiAKICAg
ICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpIHsKICAgICAgICAgICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6QWxsb3dlZDsKLSAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1f
bWFpblJlc291cmNlKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworI2Vs
c2UKKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX21haW5SZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX21haW5SZXNvdXJjZS0+ZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwor
ICAgICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpKTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQpCkBAIC0yMTksNyArMjY3LDkgQEAgdm9pZCBDb250ZW50
RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdAogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRl
OjpBbGxvd2VkKTsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCk7CiAgICAg
QVNTRVJUKHN0YXRlID09IFN0YXRlOjpBbGxvd2VkIHx8IHN0YXRlID09IFN0YXRlOjpCbG9ja2Vk
KTsKLSAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2Fk
IHNob3VsZCBiZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIG1fbWFpblJlc291cmNlID8gbV9t
YWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpIDogIiIpOworI2lmICFM
T0dfRElTQUJMRUQKKyAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgZGVj
aWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXtzZW5zaXRpdmV9
cz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJibG9ja2VkIiwg
dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworI2VuZGlmIC8vICFMT0dfRElTQUJMRUQK
ICAgICBtX3N0YXRlID0gc3RhdGU7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQp
CiAgICAgICAgIHJldHVybjsKQEAgLTIyOCwxMiArMjc4LDI2IEBAIHZvaWQgQ29udGVudEZpbHRl
cjo6ZGlkRGVjaWRlKFN0YXRlIHN0YXQKICAgICBtX2NsaWVudC5jYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlcihtX2Jsb2NrZWRFcnJvcik7CiB9CiAKLXZvaWQgQ29udGVudEZp
bHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lk
IENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6QWxsb3dlZCk7Ci0gICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBpZiAoYXV0byog
cmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2Ns
aWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVu
Y29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihidWZmZXIpOworI2VuZGlmCit9CisKK1VSTCBDb250ZW50RmlsdGVyOjp1cmwoKQor
eworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgcmV0dXJuIG1fbWFpblJlc291cmNlVVJMOworI2Vsc2UKKyAgICBpZiAobV9tYWluUmVzb3Vy
Y2UpCisgICAgICAgIHJldHVybiBtX21haW5SZXNvdXJjZS0+dXJsKCk7CisgICAgcmV0dXJuIFVS
TCgpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAg
LTI0NSw2ICszMDksNyBAQCBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCiAgICAg
cmV0dXJuIGJsb2NrZWRQYWdlVVJMOwogfQogCisjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRl
ciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGlmIChhdXRv
IGNvbnRlbnRGaWx0ZXIgPSBhY3RpdmVMb2FkZXIuY29udGVudEZpbHRlcigpKSB7CkBAIC0yNTks
NiArMzI0LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdAogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CisjZW5kaWYKIAogYm9vbCBDb250ZW50RmlsdGVyOjp3aWxsSGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgY29u
c3QKIHsKQEAgLTI4Myw2ICszNDksMTUgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92
aXNpb25hbExvYQogICAgIG1fY2xpZW50LmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9t
Q29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCgpLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBD
b250ZW50RmlsdGVyOjpkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCkKK3sKKyAgICBmb3IgKGF1
dG8mIGJ1ZmZlciA6IG1fYnVmZmVycykKKyAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqYnVm
ZmVyLmJ1ZmZlciwgYnVmZmVyLmVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2J1ZmZlcnMuY2xl
YXIoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmgJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDIzICs1MCwzNiBAQCBjbGFzcyBDb250
ZW50RmlsdGVyIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZv
aWQgYWRkVHlwZSgpIHsgdHlwZXMoKS5hcHBlbmQodHlwZTxUPigpKTsgfQogCi0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVu
dCYpOwotICAgIH5Db250ZW50RmlsdGVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYp
OworICAgIFdFQkNPUkVfRVhQT1JUIH5Db250ZW50RmlsdGVyKCk7CiAKICAgICBzdGF0aWMgY29u
c3QgY2hhciogdXJsU2NoZW1lKCkgeyByZXR1cm4gIngtYXBwbGUtY29udGVudC1maWx0ZXIiOyB9
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29uc3Qg
VVJMJik7CisjZWxzZQogICAgIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVk
UmF3UmVzb3VyY2UmKTsKLSAgICB2b2lkIHN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKKyNl
bmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgp
OwogCi0gICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVB
ZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYs
IHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250
aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVSTCk7CisjZWxzZQog
ICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsK
ICAgICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpOwor
I2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1
ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVE
YXRhJik7CiAgICAgYm9vbCB3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBS
ZXNvdXJjZUVycm9yJikgY29uc3Q7Ci0gICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCisgICAgY29u
c3QgUmVzb3VyY2VFcnJvciYgYmxvY2tlZEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2Vk
RXJyb3I7IH0KKyAgICBib29sIGlzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
U3RhdGU6OkFsbG93ZWQ7IH0KKyAgICBib29sIHJlc3BvbnNlUmVjZWl2ZWQoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlUmVjZWl2ZWQ7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgdXNpbmcgU3Rh
dGUgPSBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI6OlN0YXRlOwogCkBAIC04MiwxNSArOTUsMzEgQEAg
cHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCBmb3JFYWNo
Q29udGVudEZpbHRlclVudGlsQmxvY2tlZChGdW5jdGlvbiYmKTsKICAgICB2b2lkIGRpZERlY2lk
ZShTdGF0ZSk7Ci0gICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJik7
Ci0KKyAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gMCk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURh
dGEoKTsKKyNlbmRpZgorICAgIAorICAgIFVSTCB1cmwoKTsKKyAgICAKICAgICBDb250YWluZXIg
bV9jb250ZW50RmlsdGVyczsKICAgICBDb250ZW50RmlsdGVyQ2xpZW50JiBtX2NsaWVudDsKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFVS
TCBtX21haW5SZXNvdXJjZVVSTDsKKyAgICBzdHJ1Y3QgUmVzb3VyY2VEYXRhSXRlbSB7CisgICAg
ICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgc2l6ZV90IGVu
Y29kZWREYXRhTGVuZ3RoOworICAgIH07CisgICAgCisgICAgVmVjdG9yPFJlc291cmNlRGF0YUl0
ZW0+IG1fYnVmZmVyczsKKyNlbHNlCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3
UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOworI2VuZGlmCiAgICAgY29uc3QgUGxhdGZvcm1Db250
ZW50RmlsdGVyKiBtX2Jsb2NraW5nQ29udGVudEZpbHRlciB7IG51bGxwdHIgfTsKICAgICBTdGF0
ZSBtX3N0YXRlIHsgU3RhdGU6OlN0b3BwZWQgfTsKICAgICBSZXNvdXJjZUVycm9yIG1fYmxvY2tl
ZEVycm9yOwogICAgIGJvb2wgbV9pc0xvYWRpbmdCbG9ja2VkUGFnZSB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3Jlc3BvbnNlUmVjZWl2ZWQgeyBmYWxzZSB9OwogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50
LmgJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDExIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigp
IGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgPSAwOworI2Vsc2UKICAgICB2aXJ0dWFs
IHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVy
JikgPSAwOworI2VuZGlmCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJE
aWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJj
ZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihj
b25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjg5OTcxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE5LDcgKzQxOSw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZygpIGNv
bnN0CiB2b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVu
dEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKHJlc291cmNlKSkKICAgICAgICAg
cmV0dXJuOwogI2VuZGlmCkBAIC03MTAsNyArNzEwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICBuZXdSZXF1ZXN0LnNldFVSTChXVEZNb3ZlKHVy
bCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3Bv
bnNlKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVz
dCkpOwogI2VuZGlmCkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVz
cG9uc2VSZWNlaXZlZChjbwogICAgIEFTU0VSVChyZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSk7
CiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJDYWxs
ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRl
ciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChyZXNw
b25zZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTMyMiw3ICsxMzIyLDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZAogCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0jaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYg
KG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJl
Y2VpdmVkKGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTQ1NSw3ICsxNDU1
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKICAgICBzdG9wTG9h
ZGluZygpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xp
ZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7
Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9w
RmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIwMTcsNyArMjAxNyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQo
KSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOwogI2VuZGlmCiAKQEAg
LTIyMjAsNyArMjIyMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNl
KCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAm
JiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3Vy
Y2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAg
ICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYK
QEAgLTIzNTAsNyArMjM1MCw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1l
bnRMb2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkK
IHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0
YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5kaWYKQEAgLTI0
MDcsNyArMjQwNyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkK
ICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25F
dmVudChXVEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKQEAgLTI0MTgsMTIgKzI0MTgsMTkgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTAogICAgIGNhbmNlbE1haW5SZXNv
dXJjZUxvYWQoZXJyb3IpOwogfQogCitSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250
ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5k
bGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICByZXR1cm4g
aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cit9CisKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2Nr
ZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgZnJhbWVM
b2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwg
c3Vic3RpdHV0ZURhdGEpKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogCi1S
ZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCitSZXNvdXJj
ZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkKIHsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVS
TChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlz
RW1wdHkoKSAmJiBmcmFtZSgpKSB7CkBAIC0yNDMzLDggKzI0NDAsNDAgQEAgUmVzb3VyY2VFcnJv
ciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbAogICAgICAgICB9KTsKICAgICB9CiAgICAgZnJh
bWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVu
YmxvY2tIYW5kbGVyKSk7Ci0gICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmJsb2NrZWRCeUNvbnRl
bnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOworICAgIGF1dG8gZXJyb3IgPSBmcmFtZUxvYWRlcigp
LT5ibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCgpKTsKKworI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgbV9ibG9ja2VkQnlD
b250ZW50RmlsdGVyID0gdHJ1ZTsKKyAgICBtX2Jsb2NrZWRFcnJvciA9IGVycm9yOworI2VuZGlm
CisKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNv
bnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAgICBmcmFtZUxv
YWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lKCksIGJsb2NrZWRQYWdlVVJMLCBz
dWJzdGl0dXRlRGF0YSkpOwogfQorCitib29sIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVy
V2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICByZXR1cm4gbV9ibG9ja2VkQnlDb250ZW50RmlsdGVyICYmIG1fYmxvY2tlZEVycm9y
LmVycm9yQ29kZSgpID09IGVycm9yLmVycm9yQ29kZSgpICYmIG1fYmxvY2tlZEVycm9yLmRvbWFp
bigpID09IGVycm9yLmRvbWFpbigpOworI2Vsc2UKKyAgICByZXR1cm4gbV9jb250ZW50RmlsdGVy
ICYmIG1fY29udGVudEZpbHRlci0+d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJy
b3IpOworI2VuZGlmCit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJIYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQorewor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
VU5VU0VEX1BBUkFNKGVycm9yKTsKKyNlbHNlCisgICAgaWYgKG1fY29udGVudEZpbHRlcikKKyAg
ICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KTsKKyNlbmRpZgorfQorCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiB2
b2lkIERvY3VtZW50TG9hZGVyOjpzZXRBY3RpdmVDb250ZW50UnVsZUxpc3RBY3Rpb25QYXR0ZXJu
cyhjb25zdCBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4+JiBwYXR0ZXJucykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyODk5NzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTU5LDcgKzE1OSw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMgUmVm
Q291bnRlZDxEb2N1bWVudExvYWRlcj4KICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIKICAgICAsIHB1YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAsIHB1
YmxpYyBDb250ZW50RmlsdGVyQ2xpZW50CiAjZW5kaWYKICAgICAsIHByaXZhdGUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgewpAQCAtNDAyLDEwICs0MDIsMTQgQEAgcHVibGljOgogICAgIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJv
cGFnYXRlKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaWYgIUVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQ29udGVu
dEZpbHRlciogY29udGVudEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZpbHRlci5n
ZXQoKTsgfQogICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50
TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3Vu
dGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlmCisgICAgV0VCQ09SRV9FWFBP
UlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYp
OworI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0
X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciopPiYmKTsKQEAgLTQ1MSw2ICs0NTUsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXND
b250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZDsgfQogICAgIHZv
aWQgc2V0SXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZChib29sIGlz
Q29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpIHsgbV9pc0NvbnRpbnVp
bmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkID0gaXNDb250aW51aW5nTG9hZEFmdGVy
UHJvdmlzaW9uYWxMb2FkU3RhcnRlZDsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorICAgIGJvb2wgY29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyNlbmRpZgorCiBwcm90
ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKIApAQCAtNTAzLDcgKzUxMiw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAvLyBDb250ZW50RmlsdGVy
Q2xpZW50CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBS
ZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKQEAgLTY1
NSw3ICs2NjQsMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3Vy
aXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKIAogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKKyNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9jb250ZW50Rmls
dGVyOworI2Vsc2UKKyAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciB7IGZhbHNlIH07
CisgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKKyNlbmRpZgogI2VuZGlmCiAKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1Myw3ICsyNDUzLDYgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaQogICAgIG1fcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWlu
Z0hhbmRsZWRVUkwgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLnVybCgpOwogCiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGF1dG8gY29udGVudEZpbHRlciA9IHByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIuY29udGVudEZpbHRlcigpOwogICAgIGF1dG8gY29udGVudEZpbHRl
cldpbGxDb250aW51ZUxvYWRpbmcgPSBmYWxzZTsKICNlbmRpZgogCkBAIC0yNDYxLDcgKzI0NjAs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpCiAgICAgaWYgKGhp
c3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSkKICAgICAgICAgd2lsbENvbnRpbnVlTG9hZGluZyA9
IFdpbGxDb250aW51ZUxvYWRpbmc6OlllczsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
Ci0gICAgaWYgKGNvbnRlbnRGaWx0ZXIgJiYgY29udGVudEZpbHRlci0+d2lsbEhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKSB7CisgICAgaWYgKHByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIuY29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KSkgewogICAgICAgICB3aWxsQ29udGludWVMb2FkaW5nID0gV2lsbENvbnRpbnVlTG9hZGluZzo6
WWVzOwogICAgICAgICBjb250ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZyA9IHRydWU7CiAg
ICAgfQpAQCAtMjQ3MSw3ICsyNDcwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChjb250
ZW50RmlsdGVyV2lsbENvbnRpbnVlTG9hZGluZykKLSAgICAgICAgY29udGVudEZpbHRlci0+aGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgIHByb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIuY29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJy
b3IpOwogI2VuZGlmCiAKICAgICBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJM
ID0geyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2
aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbG9hZGVyLT5z
dWJzdGl0dXRlRGF0YSgpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgIXN1
YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgYm9vbCBzaG91
bGRDb250aW51ZSA9IHRydWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChhdXRvIGxvYWRlciA9IG1fZnJhbWUubG9h
ZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVl
ID0gQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdCgqbG9h
ZGVyLCBzdWJzdGl0dXRlRGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlRGF0YS5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNv
bnN0IFVSTCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAg
ICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzcG9uc2U7IH0KLSAgICAgICAgCisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdWJzdGl0dXRlRGF0YT4gZGVjb2RlKERlY29kZXIm
KTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CkBAIC02Nyw0ICs3MCwzNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBt
X3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6
OkhpZGRlbiB9OwogICAgIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFN1YnN0
aXR1dGVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IG1fY29udGVudCA8PCBtX2ZhaWxpbmdVUkwgPDwgbV9yZXNwb25zZSA8PCBtX3Nob3VsZFJl
dmVhbFRvU2Vzc2lvbkhpc3Rvcnk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6
Om9wdGlvbmFsPFN1YnN0aXR1dGVEYXRhPiBTdWJzdGl0dXRlRGF0YTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IGNvbnRlbnQ7CisgICAgZGVjb2RlciA+PiBjb250ZW50OworICAgIGlmICghY29udGVu
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VVJM
PiBmYWlsaW5nVVJMOworICAgIGRlY29kZXIgPj4gZmFpbGluZ1VSTDsKKyAgICBpZiAoIWZhaWxp
bmdVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlOworICAgIGRlY29kZXIgPj4gcmVzcG9uc2U7Cisg
ICAgaWYgKCFyZXNwb25zZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0
ZDo6b3B0aW9uYWw8U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5PiBzaG91bGRSZXZlYWxUb1Nlc3Np
b25IaXN0b3J5OworICAgIGRlY29kZXIgPj4gc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeTsK
KyAgICBpZiAoIXNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmNvbnRlbnQpLCAqZmFpbGlu
Z1VSTCwgKnJlc3BvbnNlLCAqc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB9IH07Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTAxNDkpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDIyLTAyLTE4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBNb3ZlIGNvbnRlbnQgZmlsdGVyaW5nIHRvIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzYwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84NjE1MDcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBG
dWxnaGFtLgorCisgICAgICAgIE1vdmUgY29udGVudCBmaWx0ZXJpbmcgZnJvbSB0aGUgRG9jdW1l
bnRMb2FkZXIgY2xhc3MgaW4gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIE5ldHdvcmtSZXNvdXJjZUxv
YWRlciBjbGFzcyBpbiB0aGUKKyAgICAgICAgTmV0d29ya2luZyBwcm9jZXNzLiBUaGUgTmV0d29y
a1Jlc291cmNlTG9hZGVyIGlzIG5vdyBhIGNsaWVudCBvZiB0aGUgY29udGVudCBmaWx0ZXIsIGFu
ZCB3aWxsIHNlbmQgbWVzc2FnZXMKKyAgICAgICAgdG8gdGhlIERvY3VtZW50TG9hZGVyIGluIHRo
ZSBXZWJQcm9jZXNzIHRvIGNhbmNlbCB0aGUgbG9hZCB3aGVuIHRoZSBjb250ZW50IGZpbHRlciBk
ZWNpZGVkIHRvIGJsb2NrIHRoZSBsb2FkLgorICAgICAgICBJZiB0aGUgY29udGVudCBmaWx0ZXIg
aXMgcHJvdmlkaW5nIHJlcGxhY2VtZW50IGRhdGEsIHRoaXMgd2lsbCBhbHNvIGJlIHNlbnQgb3Zl
ciBJUEMgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgICAgIERhdGEgaXMgbm90IGJlaW5nIHNlbnQg
dG8gdGhlIFdlYlByb2Nlc3MgdW50aWwgdGhlIGNvbnRlbnQgZmlsdGVyIGhhcyBkZWNpZGVkIHRv
IGFsbG93IHRoZSBsb2FkLCBpZiBjb250ZW50CisgICAgICAgIGZpbHRlcmluZyBpcyBlbmFibGVk
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVy
RGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWxvYWRBZnRlclVuYmxv
Y2tlZENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9t
Q29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpyZWxv
YWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bjoKKwogMjAyMi0wMi0xOCAgQnJhbmRvbiBTdGV3YXJ0ICA8YnJhbmRvbnN0ZXdhcnRAYXBwbGUu
Y29tPgogCiAgICAgICAgIEdlbmVyYXRlIGNvbXBpbGVfY29tbWFuZHMuanNvbiBvbiBtYWNPUyBC
dWlsZHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4OTk3MSkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjcsNiArNjcsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXZpZXdDb252ZXJ0ZXIu
aD4KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oPgorI2VuZGlmCisKICNkZWZpbmUg
TE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBb
cGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0l
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2U9JWQsIGRl
c3RpbmF0aW9uPSV1LCBpc1N5bmNocm9ub3VzPSVkXSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIg
Zm10LCB0aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJ
bnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc01haW5SZXNvdXJj
ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRp
b24pLCBpc1N5bmNocm9ub3VzKCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIExPQURFUl9SRUxF
QVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0g
W3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlPSVkLCBk
ZXN0aW5hdGlvbj0ldSwgaXNTeW5jaHJvbm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoi
IGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgaXNNYWluUmVzb3Vy
Y2UoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcGFyYW1ldGVycy5vcHRpb25zLmRlc3RpbmF0
aW9uKSwgaXNTeW5jaHJvbm91cygpLCAjI19fVkFfQVJHU19fKQogCkBAIC0xODcsOCArMTkyLDEz
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgQVNTRVJUKCFtX3dh
c1N0YXJ0ZWQpOwogICAgIG1fd2FzU3RhcnRlZCA9IHRydWU7CiAKKyAgICBhdXRvIG5ld1JlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9OworI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgc3RhcnRDb250ZW50
RmlsdGVyaW5nKG5ld1JlcXVlc3QpOworI2VuZGlmCisKICAgICBpZiAobV9uZXR3b3JrTG9hZENo
ZWNrZXIpIHsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVx
dWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSAoYXV0byYmIHJlc3VsdCkgeworICAgICAgICBtX25ldHdvcmtMb2FkQ2hl
Y2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgbmV3UmVxdWVzdCB9LCB0aGlzLCBbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTcsMTQg
KzIyNywyNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhhdCBjb2RlIHBhdGggb25jZSBt
X25ldHdvcmtMb2FkQ2hlY2tlciBpcyB1c2VkIGZvciBhbGwgbmV0d29yayBsb2Fkcy4KLSAgICBp
ZiAoY2FuVXNlQ2FjaGUob3JpZ2luYWxSZXF1ZXN0KCkpKSB7CisgICAgaWYgKGNhblVzZUNhY2hl
KG5ld1JlcXVlc3QpKSB7CiAgICAgICAgIHJldHJpZXZlQ2FjaGVFbnRyeShvcmlnaW5hbFJlcXVl
c3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdGFydE5ldHdvcmtMb2FkKFJl
c291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH0sIEZpcnN0TG9hZDo6WWVzKTsKKyAg
ICBzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgRmlyc3RM
b2FkOjpZZXMpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0
ZXJpbmcoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghaXNNYWluUmVzb3Vy
Y2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRGaWx0
ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
cmVxdWVzdC51cmwoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAg
ICAgTE9BREVSX1JFTEVBU0VfTE9HKCJyZXRyaWV2ZUNhY2hlRW50cnk6IGlzTWFpbkZyYW1lTG9h
ZD0lZCIsIGlzTWFpbkZyYW1lTG9hZCgpKTsKQEAgLTY5Miw2ICs3MTQsMTEgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogewogICAgIExPQURFUl9SRUxFQVNFX0xP
RygiZGlkUmVjZWl2ZVJlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIE1JTUVUeXBlPSUiIFBV
QkxJQ19MT0dfU1RSSU5HICIsIGV4cGVjdGVkQ29udGVudExlbmd0aD0lIiBQUklkNjQgIiwgaGFz
Q2FjaGVkRW50cnlGb3JWYWxpZGF0aW9uPSVkLCBoYXNOZXR3b3JrTG9hZENoZWNrZXI9JWQpIiwg
cmVjZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLm1pbWVU
eXBlKCkudXRmOCgpLmRhdGEoKSwgcmVjZWl2ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKSwgISFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uLCAhIW1fbmV0d29ya0xvYWRDaGVja2Vy
KTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChyZWNlaXZlZFJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyNlbmRpZgorCiAgICAgaWYg
KGlzTWFpblJlc291cmNlKCkpCiAgICAgICAgIGRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25z
ZShyZWNlaXZlZFJlc3BvbnNlKTsKIApAQCAtOTA0LDYgKzkzMSwxMyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hCiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBh
IHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgogICAg
ICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEuZ2V0KCksIC0xKTsKICAgICAgICAg
fQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgp
KTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJj
ZSgpOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwog
ICAgIH0KIApAQCAtOTkzLDYgKzEwMjcsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVkaQogICAgIGlmICghbV9maXJzdFJlc3BvbnNlVVJMLmlzVmFsaWQoKSkKICAg
ICAgICAgbV9maXJzdFJlc3BvbnNlVVJMID0gcmVkaXJlY3RSZXNwb25zZS51cmwoKTsKIAorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYg
KG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNl
bmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQorICAgICAgICByZXR1cm47Cisj
ZW5kaWYKKwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UcmlnZ2VyRGF0YTsKICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsK
ICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdC51cmwoKSkpIHsKQEAg
LTEyNTEsOCArMTI5MCwxNCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5n
VGltCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBhdXRvIHNoYXJlZEJ1ZmZlciA9IG1fYnVmZmVyZWREYXRhLnRha2VBc0NvbnRpZ3VvdXMoKTsK
KyAgICBib29sIHNob3VsZEZpbHRlciA9IG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50Rmls
dGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKHNoYXJlZEJ1ZmZlciwgbV9idWZmZXJlZERh
dGFFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgaWYgKCFzaG91bGRGaWx0ZXIpCisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkoc2hhcmVkQnVmZmVyLmdldCgpKSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0
YUxlbmd0aCkpOworI2Vsc2UKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KCptX2J1ZmZlcmVkRGF0YS5nZXQo
KSksIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKLQorI2VuZGlmCiAgICAgbV9i
dWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3Ro
ID0gMDsKIH0KQEAgLTEyNjEsNiArMTMwNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2VuZEJ1ZmZlcihjCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAo
bV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVj
ZWl2ZWQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCksIGVuY29kZWREYXRhTGVuZ3RoKSkKKyAgICAg
ICAgcmV0dXJuOworI2VuZGlmCisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlciksIGVuY29kZWRE
YXRhTGVuZ3RoKSk7CiB9CiAKQEAgLTEzMDcsNiArMTM1NywxMSBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDCiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZXRy
aWV2ZUNhY2hlRW50cnk6Iik7CiAgICAgYXV0byByZXNwb25zZSA9IGVudHJ5LT5yZXNwb25zZSgp
OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPnJlc3BvbnNlUmVj
ZWl2ZWQoKSAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZl
ZChyZXNwb25zZSkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgaWYgKGlzTWFpblJl
c291cmNlKCkpCiAgICAgICAgIGRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZShyZXNwb25z
ZSk7CiAKQEAgLTEzNTgsNiArMTQxMywxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VuZFJlc3VsdEZvCiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJzZW5kUmVzdWx0Rm9yQ2FjaGVF
bnRyeToiKTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIGlmICghZW50cnkt
PnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKCkuaXNOdWxsKCkpIHsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAobV9jb250ZW50
RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZW50
cnktPmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLCBlbnRyeS0+YnVmZmVyKCktPnNpemUoKSkp
IHsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlz
aGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisjZW5kaWYKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVSZXNvdXJjZShlbnRyeS0+c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTM4MSw2ICsxNDQzLDEyIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm8KICAgICBuZXR3b3JrTG9hZE1ldHJpY3Mu
cmVzcG9uc2VCb2R5RGVjb2RlZFNpemUgPSAwOwogCiAgICAgc2VuZEJ1ZmZlcigqZW50cnktPmJ1
ZmZlcigpLCBlbnRyeS0+YnVmZmVyKCktPnNpemUoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7
CisgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1f
cGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9w
RmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgfQorI2VuZGlmCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1l
dHJpY3MpKTsKIH0KIApAQCAtMTY5Nyw2ICsxNzY1LDQzIEBAIGJvb2wgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjppc0FwcEluaXRpYXQKICAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaXNB
cHBJbml0aWF0ZWQoKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlciksIGVuY29kZWRE
YXRhTGVuZ3RoKSk7Cit9CisKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZp
bHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpKTsKKyAgICBpZiAoIXVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKKyAgICAg
ICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgdW5ibG9ja2VkKSB7CisgICAgICAgICAgICBpZiAoIXVu
YmxvY2tlZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVsb2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50Rmls
dGVyKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCksIDApOworICAgICAgICB9KTsKKyAgICB9
CisgICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1l
dGVycy5yZXF1ZXN0KTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1h
aW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7CisgICAg
bV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKK30K
Kwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgaWYgKHN1YnN0aXR1dGVEYXRh
LmlzVmFsaWQoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6Okhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihibG9ja2VkUGFnZVVS
TCwgc3Vic3RpdHV0ZURhdGEpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9jb250ZW50RmlsdGVyKTsKKyAgICAgICAgYXV0byYgZXJyb3IgPSBtX2NvbnRlbnRGaWx0ZXIt
PmJsb2NrZWRFcnJvcigpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6Q2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoZXJyb3IpKTsKKyAgICB9
Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBMT0FERVJfUkVMRUFTRV9M
T0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcml2
YXRlUmVsYXllZC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CkBAIC00NSw2ICs0Niw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKK2NsYXNzIENvbnRlbnRG
aWx0ZXI7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTcyLDYgKzc0LDkgQEAgY2xhc3MgTmV0d29ya1Jlc291
cmNlTG9hZGVyIGZpbmFsCiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBw
dWJsaWMgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgLCBwdWJsaWMg
V2ViQ29yZTo6Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcgorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLCBwdWJsaWMg
V2ViQ29yZTo6Q29udGVudEZpbHRlckNsaWVudAorI2VuZGlmCiAgICAgLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5j
aHJvbm91c0xvYWREZWxheWVkUmVwbHkmJiByZXBseSA9IG51bGxwdHIpCkBAIC05Miw3ICs5Nyw3
IEBAIHB1YmxpYzoKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2
ZU5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOwogCiAg
ICAgdm9pZCBzZXRSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Up
IHsgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9
CkBAIC0xNTUsNiArMTYwLDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBcHBJbml0aWF0ZWQo
KTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgdm9pZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNl
TG9hZGVyPjo6cmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3Vu
dGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj46OmRlcmVmKCk7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYm
KTsKIApAQCAtMTYyLDYgKzE3MiwxNCBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCk7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLy8gQ29udGVudEZpbHRlckNsaWVu
dAorICAgIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJiwgc2l6ZV90KSBmaW5hbDsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKKyAgICB2
b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOworI2VuZGlmCisKICAgICBib29sIGNhblVzZUNhY2hl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIGJvb2wgY2FuVXNl
Q2FjaGVkUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAK
QEAgLTIyMCw2ICsyMzgsMTAgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlTG9hZEluZm8gcmVz
b3VyY2VMb2FkSW5mbygpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIHN0YXJ0Q29udGVudEZpbHRlcmluZyhXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgorCiAgICAgY29uc3QgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CkBAIC0yNjQsNiArMjg2LDExIEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3JlZGlyZWN0UmVzcG9uc2U7CiAgICAgVVJM
IG1fZmlyc3RSZXNwb25zZVVSTDsgLy8gRmlyc3QgVVJMIGluIHJlc3BvbnNlJ3MgVVJMIGxpc3Qg
KGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXJlc3BvbnNlLXVybC1saXN0
KS4KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5m
b3JjZW1lbnRSZXN1bHQ+IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdDsKKworI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyNlbmRp
ZgorCiAgICAgUHJpdmF0ZVJlbGF5ZWQgbV9wcml2YXRlUmVsYXllZCB7IFByaXZhdGVSZWxheWVk
OjpObyB9OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyODk5NzEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElDb250ZW50UnVs
ZUxpc3QuaCIKICNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUg
IkRvd25sb2FkUHJveHlNYXAuaCIKQEAgLTYwNiw2ICs2MDcsMTQgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaQogICAgIHBhZ2UtPnJlc291cmNlTG9hZERpZENvbXBs
ZXRlV2l0aEVycm9yKFdURk1vdmUobG9hZEluZm8pLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92
ZShlcnJvcikpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVsb2FkQWZ0ZXJVbmJsb2Nr
ZWRDb250ZW50RmlsdGVyKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQoreworICAgIGlm
IChhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCkpCisgICAgICAg
IHBhZ2UtPnJlbG9hZCh7IH0pOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRf
VFJBQ0tJTkdfUFJFVkVOVElPTikKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZHVtcFJlc291
cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NCw2ICsyNTQsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmKTsKICAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVycm9yKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIHJlbG9hZEFmdGVy
VW5ibG9ja2VkQ29udGVudEZpbHRlcihXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZvaWQgaGFzQXBwQm91bmRTZXNz
aW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIGNsZWFyQXBwQm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3NiwxMCBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlCiAgICAgUmVzb3VyY2VM
b2FkRGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2Fk
SW5mbywgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKQogICAgIFJl
c291cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3Vy
Y2VMb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBSZXNv
dXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3Vy
Y2VMb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFJlbG9hZEFmdGVyVW5ibG9ja2VkQ29udGVudEZp
bHRlcihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIpCisjZW5k
aWYKIAogICAgIFRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24o
V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaERlY2lzaW9uIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHJlc3BvbnNlRG9tYWluLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZSkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNp
b24gMjg5OTcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VicmVzb3VyY2VMb2FkZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1N1YnN0aXR1dGVEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAKICNkZWZpbmUgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJF
TEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFt3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICJdIFdlYlJlc291cmNlTG9hZGVyOjoi
IGZtdCwgdGhpcywgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cmVzb3VyY2VJRC50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQpAQCAtMzQ5LDYgKzM1MCwyOSBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYm
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIGlmICghbV9jb3JlTG9hZGVyIHx8
ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBt
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9j
ayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwor
fQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29u
dGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBp
ZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAg
ICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxN
YWluUmVzb3VyY2VMb2FkKGVycm9yKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0
YSkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92
aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBXRUJSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODk5NzEpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MywxMSArNDMsMTMgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgTmV0
d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9h
ZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2Ns
YXNzIFN1YnN0aXR1dGVEYXRhOwogZW51bSBjbGFzcyBNYWluRnJhbWVNYWluUmVzb3VyY2UgOiBi
b29sOwogfQogCkBAIC05OSw2ICsxMDEsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJik7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
dm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsK
KyAgICB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOworI2VuZGlmCisgICAgCiAgICAgUmVmUHRyPFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7CiAgICAgVHJhY2tpbmdQYXJhbWV0ZXJz
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIFdlYlJlc291cmNlSW50ZXJjZXB0Q29udHJvbGxl
ciBtX2ludGVyY2VwdENvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjg5OTcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM3LDQgKzM3
LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2UKICAgICAvLyBE
aWRSZWNlaXZlUmVzb3VyY2UgaXMgZm9yIHdoZW4gd2UgaGF2ZSB0aGUgZW50aXJlIHJlc291cmNl
IGRhdGEgYXZhaWxhYmxlIGF0IG9uY2UsIHN1Y2ggYXMgd2hlbiB0aGUgcmVzb3VyY2UgaXMgY2Fj
aGVkIGluIG1lbW9yeQogICAgIERpZFJlY2VpdmVSZXNvdXJjZShXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjpIYW5kbGUgcmVzb3VyY2UpCiAjZW5kaWYKKworI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgQ29udGVudEZpbHRlckRpZEJsb2Nr
TG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIs
IFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkRm9yQ29udGVudEZpbHRlcihXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAg
IEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihVUkwgYmxvY2tl
ZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKQorI2VuZGlm
CisKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>