<?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>189760</bug_id>
          
          <creation_ts>2018-09-19 12:17:28 -0700</creation_ts>
          <short_desc>Resource Load Statistics: Relax cap on partitioned cache max age if reloads result in the same bytes</short_desc>
          <delta_ts>2018-11-06 15:10:48 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=189711</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1461070</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-19 12:17:28 -0700</bug_when>
    <thetext>We should add logic to achieve the following:
1. Set cache max age cap for prevalent resources to N days.
2. Start every new cache entry with a max age cap multiplier M = 1.
3. When a cache entry for a prevalent resource reaches the age of N*M days, discard it, but hold on to its checksum and M.
4. If the reload results in the same checksum, increase M according to some scheme such as linear or doubling, until it reaches a year.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461071</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-19 12:18:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/44612242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471431</commentid>
    <comment_count>2</comment_count>
      <attachid>352933</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-10-22 17:31:52 -0700</bug_when>
    <thetext>Created attachment 352933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471432</commentid>
    <comment_count>3</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-10-22 17:33:16 -0700</bug_when>
    <thetext>Antti and Youenn, I wanted to get some feedback from you on this. The Changelog has an explanation of what&apos;s in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471434</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-10-22 17:36:59 -0700</bug_when>
    <thetext>It may very well be that we need to persist what&apos;s in the m_forcedReloadEntries HashMap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471436</commentid>
    <comment_count>5</comment_count>
      <attachid>352935</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-10-22 17:38:52 -0700</bug_when>
    <thetext>Created attachment 352935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471437</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-10-22 17:39:18 -0700</bug_when>
    <thetext>Fixed a non-Cocoa build issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471441</commentid>
    <comment_count>7</comment_count>
      <attachid>352938</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-10-22 17:43:49 -0700</bug_when>
    <thetext>Created attachment 352938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471449</commentid>
    <comment_count>8</comment_count>
      <attachid>352939</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-10-22 17:54:17 -0700</bug_when>
    <thetext>Created attachment 352939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471637</commentid>
    <comment_count>9</comment_count>
      <attachid>352987</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-10-23 12:22:08 -0700</bug_when>
    <thetext>Created attachment 352987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471638</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-10-23 12:23:35 -0700</bug_when>
    <thetext>Corrected to the code to use ResourceResponseBase::isRedirection() instead of ResourceResponseBase::isRedirected(). Fleshed out test case to cover this functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472016</commentid>
    <comment_count>11</comment_count>
      <attachid>352987</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-25 00:47:22 -0700</bug_when>
    <thetext>Comment on attachment 352987
Patch

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

&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:281
&gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)

Why is this feature called RESOURCE_LOAD_STATISTICS? It is confusing since it is not about collecting statistics.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:284
&gt; +        auto verificationEntry = m_forcedReloadEntries.take(identifier);

This mechanism only works if the network process stays alive so that m_forcedReloadEntries is around when the cache entry is rewritten. Why is this a good assumption? Especially on iOS the browser may get closed a lot. Should we persist the data in m_forcedReloadEntries, maybe to the cache entry itself?

The size of the m_forcedReloadEntries is a potential concern. Wouldn&apos;t it eventually contain entries for pretty much every resource stored in a session, which could be a very large number.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp:103
&gt;      encoder.encodeChecksum();
&gt;  
&gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)
&gt; +    if (m_maxAgeCap)
&gt; +        encoder &lt;&lt; m_maxAgeCap;
&gt; +#endif

This needs to be encoded before the checksum.

Since you are encoding an optional, this should be done unconditionally (no if branch).

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp:113
&gt; +    return { m_key, m_timeStamp, header, body, { }, std::nullopt };

std::nullopt -&gt; { } for consistency.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp:153
&gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)
&gt; +    // Optional max age cap.
&gt; +    decoder.decode(entry-&gt;m_maxAgeCap);
&gt; +#endif

Similarly decoding should happen before the checksum check. 

You&apos;ll should check the return value and return nullptr if decoding fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472535</commentid>
    <comment_count>12</comment_count>
      <attachid>352987</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-10-26 12:14:45 -0700</bug_when>
    <thetext>Comment on attachment 352987
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:284
&gt;&gt; +        auto verificationEntry = m_forcedReloadEntries.take(identifier);
&gt; 
&gt; This mechanism only works if the network process stays alive so that m_forcedReloadEntries is around when the cache entry is rewritten. Why is this a good assumption? Especially on iOS the browser may get closed a lot. Should we persist the data in m_forcedReloadEntries, maybe to the cache entry itself?
&gt; 
&gt; The size of the m_forcedReloadEntries is a potential concern. Wouldn&apos;t it eventually contain entries for pretty much every resource stored in a session, which could be a very large number.

NetworkCache is a long living object so it might be better to move the state handling to NetworkResourceLoader (the instance or some of its completion handlers).
That way, there will be no risk of leaking memory by having forever stored entries in m_forcedReloadEntries (say a load is cancelled).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472551</commentid>
    <comment_count>13</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-10-26 12:50:42 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #12)
&gt; Comment on attachment 352987 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=352987&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:284
&gt; &gt;&gt; +        auto verificationEntry = m_forcedReloadEntries.take(identifier);
&gt; &gt; 
&gt; &gt; This mechanism only works if the network process stays alive so that m_forcedReloadEntries is around when the cache entry is rewritten. Why is this a good assumption? Especially on iOS the browser may get closed a lot. Should we persist the data in m_forcedReloadEntries, maybe to the cache entry itself?
&gt; &gt; 
&gt; &gt; The size of the m_forcedReloadEntries is a potential concern. Wouldn&apos;t it eventually contain entries for pretty much every resource stored in a session, which could be a very large number.
&gt; 
&gt; NetworkCache is a long living object so it might be better to move the state
&gt; handling to NetworkResourceLoader (the instance or some of its completion
&gt; handlers).
&gt; That way, there will be no risk of leaking memory by having forever stored
&gt; entries in m_forcedReloadEntries (say a load is cancelled).

That is a good suggestion. I&apos;ll look into it.

Anything else on this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474685</commentid>
    <comment_count>14</comment_count>
      <attachid>353747</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-02 17:07:44 -0700</bug_when>
    <thetext>Created attachment 353747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474686</commentid>
    <comment_count>15</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-02 17:09:33 -0700</bug_when>
    <thetext>I&apos;ve moved the logic out to the NetworkResourceLoader as suggested. I&apos;ve also removed the global state.

I could not rely on the existing validation infrastructure since redirects are not handled by there. Instead I tie into the special functions for redirects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474689</commentid>
    <comment_count>16</comment_count>
      <attachid>353749</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-02 17:23:26 -0700</bug_when>
    <thetext>Created attachment 353749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474692</commentid>
    <comment_count>17</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-02 17:24:07 -0700</bug_when>
    <thetext>Non-Cocoa build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474927</commentid>
    <comment_count>18</comment_count>
      <attachid>353749</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-11-04 18:34:55 -0800</bug_when>
    <thetext>Comment on attachment 353749
Patch

I think the patch is going in the right direction.
Some improvement comments and questions below.

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

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:236
&gt; +            m_cacheEntryForValidation = WTFMove(entry);

I am not sure we should directly reuse m_cacheEntryForValidation.
When m_cacheEntryForValidation is not empty, we expect to send a conditional request and receive a 304.

It might be clearer if we introduce m_cacheEntryForMaxAgeCapValidation.
If not null, we do not have to do conditional request, check for 304 but instead to check whether the response is the same as the cached entry response.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:347
&gt;          case UseDecision::NoDueToPrevalentResourceAgeCap:

Do we still need UseDecision::NoDueToPrevalentResourceAgeCap?
It seems the loader will do the check and cache is just the place that stores this information.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:423
&gt; +std::unique_ptr&lt;Entry&gt; Cache::storeRedirect(const WebCore::ResourceRequest&amp; request, const WebCore::ResourceResponse&amp; response, const WebCore::ResourceRequest&amp; redirectRequest, PAL::SessionID sessionID, CheckForMaxAgeCap shouldCheckForMaxAgeCap)

Instead of sessionID and shouldCheckForMaxAgeCap, we might want to directly pass an optional&lt;Second&gt;.
That will allow decoupling NetworkCache from NetworkStorageSession.

It seems NetworkStorageSession is more a loader/data task concept.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:476
&gt; +std::unique_ptr&lt;Entry&gt; Cache::replaceRedirect(const WebCore::ResourceRequest&amp; request, const Entry&amp; existingEntry, const WebCore::ResourceResponse&amp; response, const WebCore::ResourceRequest&amp; redirectRequest, PAL::SessionID sessionID, CheckForMaxAgeCap shouldCheckForMaxAgeCap)

Ditto here.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp:145
&gt; +    // Optional max age cap.

Not sure we need this comment.

Should we also encode/decode this no matter whether RESOURCE_LOAD_STATISTICS is defined or not.
The reason is that, depending on whether RESOURCE_LOAD_STATISTICS is defined, we should bump or not the network cache version.
It might be simpler to just always encode it.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:504
&gt; +        { }

Antti will know more but I would have thought we either would handle maxAgeCap as bodyHash or put it in the header or body data.

&gt; LayoutTests/http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource.html:34
&gt; +        // This should not trigger a successful cache hit and create another capped cache entry.

Do we have a test that ensures that the request doing the max age cap revalidation is not a conditional request?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475094</commentid>
    <comment_count>19</comment_count>
      <attachid>353749</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-11-05 08:19:13 -0800</bug_when>
    <thetext>Comment on attachment 353749
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:504
&gt;&gt; +        { }
&gt; 
&gt; Antti will know more but I would have thought we either would handle maxAgeCap as bodyHash or put it in the header or body data.

Right, the Storage layer is only concerned about storing bytes to the disk and includes no semantics. Like other similar things, maxAgeCap should be encoded as header data (in NetworkCache::Entry::encodeAsStorageRecord). Is there some good reason this patch moves it here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475156</commentid>
    <comment_count>20</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-05 10:14:33 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #18)
&gt; Comment on attachment 353749 [details]
&gt; Patch
&gt; 
&gt; I think the patch is going in the right direction.
&gt; Some improvement comments and questions below.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353749&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:236
&gt; &gt; +            m_cacheEntryForValidation = WTFMove(entry);
&gt; 
&gt; I am not sure we should directly reuse m_cacheEntryForValidation.

You are right. This is a leftover from when I tried to build this strictly on top of revalidation which turned out not to be a thing for redirects.

&gt; When m_cacheEntryForValidation is not empty, we expect to send a conditional
&gt; request and receive a 304.

Absolutely true.

&gt; It might be clearer if we introduce m_cacheEntryForMaxAgeCapValidation.

Yes, I will do that.

&gt; If not null, we do not have to do conditional request, check for 304 but
&gt; instead to check whether the response is the same as the cached entry
&gt; response.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:347
&gt; &gt;          case UseDecision::NoDueToPrevalentResourceAgeCap:
&gt; 
&gt; Do we still need UseDecision::NoDueToPrevalentResourceAgeCap?
&gt; It seems the loader will do the check and cache is just the place that
&gt; stores this information.

Yeah, you might be right. I have to think it through.

&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:423
&gt; &gt; +std::unique_ptr&lt;Entry&gt; Cache::storeRedirect(const WebCore::ResourceRequest&amp; request, const WebCore::ResourceResponse&amp; response, const WebCore::ResourceRequest&amp; redirectRequest, PAL::SessionID sessionID, CheckForMaxAgeCap shouldCheckForMaxAgeCap)
&gt; 
&gt; Instead of sessionID and shouldCheckForMaxAgeCap, we might want to directly
&gt; pass an optional&lt;Second&gt;.
&gt; That will allow decoupling NetworkCache from NetworkStorageSession.
&gt; 
&gt; It seems NetworkStorageSession is more a loader/data task concept.

Sounds like a good idea.

&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:476
&gt; &gt; +std::unique_ptr&lt;Entry&gt; Cache::replaceRedirect(const WebCore::ResourceRequest&amp; request, const Entry&amp; existingEntry, const WebCore::ResourceResponse&amp; response, const WebCore::ResourceRequest&amp; redirectRequest, PAL::SessionID sessionID, CheckForMaxAgeCap shouldCheckForMaxAgeCap)
&gt; 
&gt; Ditto here.

Mhm.

&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp:145
&gt; &gt; +    // Optional max age cap.
&gt; 
&gt; Not sure we need this comment.
&gt; 
&gt; Should we also encode/decode this no matter whether RESOURCE_LOAD_STATISTICS
&gt; is defined or not.
&gt; The reason is that, depending on whether RESOURCE_LOAD_STATISTICS is
&gt; defined, we should bump or not the network cache version.
&gt; It might be simpler to just always encode it.

OK.

&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:504
&gt; &gt; +        { }
&gt; 
&gt; Antti will know more but I would have thought we either would handle
&gt; maxAgeCap as bodyHash or put it in the header or body data.
&gt; 
&gt; &gt; LayoutTests/http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource.html:34
&gt; &gt; +        // This should not trigger a successful cache hit and create another capped cache entry.
&gt; 
&gt; Do we have a test that ensures that the request doing the max age cap
&gt; revalidation is not a conditional request?

How would we test that? You mean if the server responds with a 304?

Thanks for all these comments!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475157</commentid>
    <comment_count>21</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-05 10:15:12 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #19)
&gt; Comment on attachment 353749 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353749&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:504
&gt; &gt;&gt; +        { }
&gt; &gt; 
&gt; &gt; Antti will know more but I would have thought we either would handle maxAgeCap as bodyHash or put it in the header or body data.
&gt; 
&gt; Right, the Storage layer is only concerned about storing bytes to the disk
&gt; and includes no semantics. Like other similar things, maxAgeCap should be
&gt; encoded as header data (in NetworkCache::Entry::encodeAsStorageRecord). Is
&gt; there some good reason this patch moves it here?

Probably not. I will try to move it. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475219</commentid>
    <comment_count>22</comment_count>
      <attachid>353895</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-05 11:54:23 -0800</bug_when>
    <thetext>Created attachment 353895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475220</commentid>
    <comment_count>23</comment_count>
      <attachid>353896</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-05 11:58:06 -0800</bug_when>
    <thetext>Created attachment 353896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475512</commentid>
    <comment_count>24</comment_count>
      <attachid>353896</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-11-06 06:10:08 -0800</bug_when>
    <thetext>Comment on attachment 353896
Patch

LGTM with comments (I am not sure we should introduce replaceRedirect in particular).

We should probably bump the network cache revision number.
Since it was done one week ago, maybe this is not needed.
If we do not bump it, please add a comment in the ChangeLog for why we are not doing it.

As of the check of the conditional request, the server php script could check whether any of the request contains some If-Modified-Since/If-None-Match.. header. In such a case, it could generate a response that would make the test fail.

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

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:601
&gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)

Maybe we could put this new code in a new method called validateCacheEntryForMaxAgeCapValidation.
It would return a std::optional&lt;Seconds&gt;
If RESOURCE_LOAD_STATISTICS is not defined, it would return nullopt.
If m_cacheEntryForMaxAgeCapValidation is null, it would return networkStorageSession-&gt;maxAgeCacheCap(request) .
In case of replacing the entry, it would not use replaceRedirect, but would just call remove().
The readding of the redirect would happen later on, in the regular code path.

That would remove the need for replaceRedirect, which I am not sure is correct, since the new redirectResponse might not be cacheable.

Some comments below if you do not like the idea of the utility function/removal of replaceRedirect.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:609
&gt; +            m_cacheEntryForMaxAgeCapValidation = m_cache-&gt;replaceRedirect(request, *m_cacheEntryForMaxAgeCapValidation, redirectResponse, redirectRequest, std::nullopt);

No need to set m_cacheEntryForMaxAgeCapValidation since we nullify it shortly after without using it.
So maybe replaceRedirect should return void.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:611
&gt; +            m_cache-&gt;remove(m_cacheEntryForMaxAgeCapValidation-&gt;key());

If we remove the previous entry from the cache, do we still want to store the new one?
The patch does so which might be safer.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:617
&gt; +    if (!existingCacheEntryIsValid &amp;&amp; redirectResponse.source() == ResourceResponse::Source::Network &amp;&amp; canUseCachedRedirect(request)) {

I would rename existingCacheEntryIsValid to shouldTryCachingEntry.
That way we would write:
if (shouldTryCachingEntry &amp;&amp; ...)
That seems to read better to me.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:82
&gt; +#endif

I would reduce the code difference by doing:
std::optional&lt;Seconds&gt; maxAgeCap;
#if ENABLE(RESOURCE_LOAD_STATISTICS)
if (auto networkStorageSession = WebCore::NetworkStorageSession::storageSession(PAL::SessionID::defaultSessionID()))
    maxAgeCap = networkStorageSession-&gt;maxAgeCacheCap(request);
 #endif
m_cacheEntry = m_cache-&gt;storeRedirect(request, redirectResponse, redirectRequest, maxAgeCap);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475703</commentid>
    <comment_count>25</comment_count>
      <attachid>354007</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-06 14:28:42 -0800</bug_when>
    <thetext>Created attachment 354007
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475706</commentid>
    <comment_count>26</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-06 14:30:59 -0800</bug_when>
    <thetext>Thanks Youenn and Antti! I broke out the functionality into NetworkResourceLoader::validateCacheEntryForMaxAgeCapValidation(), removed Cache::replaceRedirect(), and made sure the test case will fail if validation headers are sent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475707</commentid>
    <comment_count>27</comment_count>
      <attachid>354009</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-06 14:33:19 -0800</bug_when>
    <thetext>Created attachment 354009
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475708</commentid>
    <comment_count>28</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-11-06 14:34:04 -0800</bug_when>
    <thetext>The previous patch was missing the explainer in the change log. Now fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475722</commentid>
    <comment_count>29</comment_count>
      <attachid>354009</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-06 15:10:46 -0800</bug_when>
    <thetext>Comment on attachment 354009
Patch for landing

Clearing flags on attachment: 354009

Committed r237895: &lt;https://trac.webkit.org/changeset/237895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475723</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-06 15:10:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352933</attachid>
            <date>2018-10-22 17:31:52 -0700</date>
            <delta_ts>2018-10-22 17:38:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189760-20181022173151.patch</filename>
            <type>text/plain</type>
            <size>28128</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjMmY2ZDg2NmNjYmFlNThk
YWI0ZDUzNDg1YzMwNDEyNTBhZTczY2EuLjE4ZmQ3NDFlZjYyYTllZTgxYjI4NjYzYWViMGZjYTU5
MzYzNDhjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTgtMTAtMjIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBSZW1vdmUgY2FwIG9uIHBhcnRpdGlvbmVkIGNhY2hlIG1heCBhZ2UgaWYgcmVsb2Fk
cyByZXN1bHQgaW4gdGhlIHNhbWUgYnl0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQ2MTIy
NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbnRyb2R1Y2VzIGEgSGFzaE1hcCBtZW1iZXIgaW4gTmV0d29ya0NhY2hlLmggY2Fs
bGVkCisgICAgICAgIG1fZm9yY2VkUmVsb2FkRW50cmllcy4gV2hlbiBhIGNhY2hlIGVudHJ5IGZv
ciBhIHByZXZhbGVudCByZXNvdXJjZQorICAgICAgICByZWFjaGVzIGl0cyBtYXggYWdlIGNhcCBh
bmQgaXMgZGlzY2FyZGVkLCBhbiBlbnRyeSBpcyBjcmVhdGVkIGluCisgICAgICAgIG1fZm9yY2Vk
UmVsb2FkRW50cmllcyB3aXRoIHRoZSBlbnRyeS0+a2V5KCkuaWRlbnRpZmllcigpIGFzIGtleSBh
bmQgYQorICAgICAgICBOZXR3b3JrQ2FjaGU6OlZlcmlmaWNhdGlvbkVudHJ5IGFzIHZhbHVlLiBX
aGVuIHRoZSBjYWNoZSBpcyBhYm91dCB0bworICAgICAgICBzdG9yZSBhIG5ldyBjYWNoZSBlbnRy
eSwgdGhlIG1fZm9yY2VkUmVsb2FkRW50cmllcyBtYXAgaXMgY29uc3VsdGVkCisgICAgICAgIGFu
ZCBpZiBhIG1hdGNoaW5nIE5ldHdvcmtDYWNoZTo6VmVyaWZpY2F0aW9uRW50cnkgaXMgZm91bmQs
IGl0IGlzCisgICAgICAgIGNoZWNrZWQgYWdhaW5zdCB0aGUgbmV3IFJlc291cmNlUmVzcG9uc2Ug
dGhyb3VnaCB0aGUgCisgICAgICAgIGVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEoKSBmdW5jdGlv
bi4KKworICAgICAgICBDdXJyZW50bHksIGVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEoKSBvbmx5
IHN1cHBvcnRzIGNoZWNraW5nIHJlZGlyZWN0CisgICAgICAgIExvY2F0aW9uIGhlYWRlcnMuIFRo
ZSBpbnRlbnRpb24gaXMgdG8gZXhwYW5kIGl0IHRvIG90aGVyIGNsaWVudC1leHBvc2VkCisgICAg
ICAgIHJlc3BvbnNlIGRhdGEgdGhhdCB3ZSBjYXJlIGFib3V0LgorCisgICAgICAgIFRoaXMgZmVh
dHVyZSBpcyBzdGlsbCBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6bWFrZVVzZURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpDYWNoZTo6bWF4QWdlQ2FwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpDYWNoZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hl
OjpzdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlUmVk
aXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6Omhhc1JlYWNoZWRQcmV2YWxlbnRSZXNv
dXJjZUFnZUNhcCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVB
c1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVu
dHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6cHJldmlvdXNFbnRyeUFscmVhZHlDYXBw
ZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpjYXBNYXhBZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlZlcmlmaWNhdGlvbkVudHJ5OjpWZXJpZmlj
YXRpb25FbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6VmVyaWZpY2F0aW9u
RW50cnk6OmVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICAgICBtX21heEFn
ZUNhcCBpcyBvcHRpb25hbCB0byBzdXBwb3J0IGEgc2V0dGluZyBvZiAwIHNlY29uZHMgY2FwIGZv
ciB0ZXN0aW5nLgorICAgICAgICAgICAgc3RkOjpudWxsb3B0IG1lYW5zIG5vIGNhcCBhbmQgMCBt
ZWFucyBpbW1lZGlhdGUgZW50cnkgcmVtb3ZhbC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFk
UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJz
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKwogMjAxOC0xMC0xOSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBXZWJDb250ZW50
IHByb2Nlc3MgdG8gY2hlY2sgc29tZSBmaWxlIHN5c3RlbSBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGVjYzA0N2ZmNTJhOTg5ZThkYjM2OWIxZjExZjBjZGEyZTY5Njg2NGQuLjhlYmQxMjk4ZmJk
NDhiZDhlOWE4YzhiYmIyMzUxMjlmNzRlYmEwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIxNiw3ICsy
MTYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICBBU1NFUlQoY2FuVXNlQ2FjaGUocmVx
dWVzdCkpOwogCiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyKHRoaXMp
OwotICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVlc3QsIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwgc2Vzc2lvbklEKCksIFt0aGlzLCBsb2FkZXIg
PSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1d
KGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+cmV0cmlldmUo
cmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCB9LCBbdGhpcywgbG9hZGVyID0gV1RGTW92ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgewogICAg
ICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkgewogICAgICAgICAgICAgLy8gVGhlIGxvYWRl
ciBoYXMgYmVlbiBhYm9ydGVkIGFuZCBpcyBvbmx5IGhlbGQgYWxpdmUgYnkgdGhpcyBsYW1iZGEu
CiAgICAgICAgICAgICByZXR1cm47CkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwKICAgICArK21fcmVkaXJlY3RDb3VudDsKIAogICAgIGlmIChyZWRpcmVjdFJlc3Bv
bnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayAmJiBjYW5V
c2VDYWNoZWRSZWRpcmVjdChyZXF1ZXN0KSkKLSAgICAgICAgbV9jYWNoZS0+c3RvcmVSZWRpcmVj
dChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOworICAgICAgICBt
X2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHNlc3Npb25J
RCgpLCByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7
CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zdG9yZVJlZGlyZWN0aW9uSWZOZWVkZWQo
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoIW1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2FjaGUtPnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9i
dWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYgbWFw
cGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3Vy
cmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgc2Vzc2lvbklEKCksIFdURk1vdmUobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYgbWFwcGVkQm9k
eSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYg
KG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDYxYTRkZTVmNjM2Zjc2
YTM1NGZkZDg5ZWI4ODFmZWUwM2YyMDg1ZDEuLjBhODRjZmU5MGM0ZTg2MTUwMDU1NjZhNjBjYjQ2
NTgxNDBkMDhhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01NTIsNyArNTUy
LDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRp
b24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgewogICAgIH0pOwogCi0gICAgcmV0dXJuIHsgcmVjb3JkSW5mb3JtYXRpb24ua2V5LCB7
IH0sIGhlYWRlciwgYm9keSwgeyB9IH07CisgICAgcmV0dXJuIHsgcmVjb3JkSW5mb3JtYXRpb24u
a2V5LCB7IH0sIGhlYWRlciwgYm9keSwgeyB9LCB7IH0gfTsKIH0KIAogc3RkOjpvcHRpb25hbDxD
YWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRlY29kZVJlY29yZEhlYWRlcihjb25zdCBTdG9y
YWdlOjpSZWNvcmQmIHN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggYWM1ZWRmN2ZhNmM5ODJjZTljNGJhOThk
N2U2NjUwYjMwYWU1N2M1MC4uNjljODIwZjhkNWIxMDlhZTgxNGE3MWQ4ZTJkZTYxMzk0MWI5YmM3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcApAQCAtMTUyLDExICsxNTIsNiBAQCBzdGF0aWMgYm9vbCBjYWNoZVBvbGljeUFs
bG93c0V4cGlyZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5KQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgaGFzUmVhY2hlZFByZXZhbGVudFJl
c291cmNlQWdlQ2FwKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBX
YWxsVGltZSB0aW1lc3RhbXAsIGNvbnN0IFNlY29uZHMgbWF4QWdlKQotewotICAgIHJldHVybiBX
ZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgdGltZXN0YW1wKSA+IG1heEFnZTsK
LX0KLQogc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3RhbXAsIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gbWF4U3RhbGUpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRh
aW5zTm9DYWNoZSgpKQpAQCAtMTg4LDExICsxODMsMTMgQEAgc3RhdGljIGJvb2wgcmVzcG9uc2VO
ZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwKICAgICByZXR1cm4gcmVzcG9uc2VIYXNFeHBpcmVkKHJlc3BvbnNlLCB0aW1lc3RhbXAsIHJl
cXVlc3REaXJlY3RpdmVzLm1heFN0YWxlKTsKIH0KIAotc3RhdGljIFVzZURlY2lzaW9uIG1ha2VV
c2VEZWNpc2lvbihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2UpCitzdGF0aWMgVXNl
RGVjaXNpb24gbWFrZVVzZURlY2lzaW9uKGNvbnN0IEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChtYXhBZ2UgJiYgaGFzUmVh
Y2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKGVudHJ5LnJlc3BvbnNlKCksIGVudHJ5LnRpbWVT
dGFtcCgpLCBtYXhBZ2UudmFsdWUoKSkpCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKKyAgICBpZiAoZW50cnkuaGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkp
CiAgICAgICAgIHJldHVybiBVc2VEZWNpc2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdl
Q2FwOwotICAgIAorI2VuZGlmCisKICAgICAvLyBUaGUgcmVxdWVzdCBpcyBjb25kaXRpb25hbCBz
byB3ZSBmb3JjZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0d29yay4gV2UgbWVyZWx5IGNoZWNr
IHRoZSBkaXNrIGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVwZGF0ZSB0aGUgY2FjaGUgZW50cnku
CiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYmICFlbnRyeS5yZWRpcmVjdFJlcXVl
c3QoKSkKQEAgLTI3OSw3ICsyNzYsMjUgQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3Jl
RGVjaXNpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFIKICAgICBy
ZXR1cm4gU3RvcmVEZWNpc2lvbjo6WWVzOwogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGZyYW1lSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBDYWNoZTo6
bWF4QWdlQ2FwKEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBlbnRyeS5rZXkoKS5pZGVu
dGlmaWVyKCk7CisgICAgaWYgKG1fZm9yY2VkUmVsb2FkRW50cmllcy5jb250YWlucyhpZGVudGlm
aWVyKSkgeworICAgICAgICBhdXRvIHZlcmlmaWNhdGlvbkVudHJ5ID0gbV9mb3JjZWRSZWxvYWRF
bnRyaWVzLnRha2UoaWRlbnRpZmllcik7CisgICAgICAgIGlmICh2ZXJpZmljYXRpb25FbnRyeS5l
cXVhbHNJbkNsaWVudEV4cG9zZWREYXRhKGVudHJ5KSkgeworICAgICAgICAgICAgZW50cnkucHJl
dmlvdXNFbnRyeUFscmVhZHlDYXBwZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIHJldHVybiBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPm1heEFnZUNhY2hl
Q2FwKHJlcXVlc3QpOworI2VuZGlmCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9p
ZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKTsKIApAQCAtMzIzLDcgKzMzOCw3IEBAIHZvaWQgQ2FjaGU6OnJl
dHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xv
YmFsRnJhbWVJCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3Jh
Z2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBp
bmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRCwgc2Vzc2lvbklEXShhdXRv
IHJlY29yZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJldHJpZXZl
KHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRF0oYXV0byByZWNv
cmQsIGF1dG8gdGltaW5ncykgbXV0YWJsZSB7CiAgICAgICAgIGluZm8uc3RvcmFnZVRpbWluZ3Mg
PSB0aW1pbmdzOwogCiAgICAgICAgIGlmICghcmVjb3JkKSB7CkBAIC0zNDAsMTIgKzM1NSw3IEBA
IHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5Ojpk
ZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbWF4QWdlQ2FwOwotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgICAgIGlmIChhdXRvIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIG1h
eEFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4QWdlQ2FjaGVDYXAocmVxdWVzdCk7
Ci0jZW5kaWYKLSAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gbWFrZVVzZURlY2lz
aW9uKCplbnRyeSwgcmVxdWVzdCwgbWF4QWdlQ2FwKSA6IFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVj
b2RlRmFpbHVyZTsKKyAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gbWFrZVVzZURl
Y2lzaW9uKCplbnRyeSwgcmVxdWVzdCkgOiBVc2VEZWNpc2lvbjo6Tm9EdWVUb0RlY29kZUZhaWx1
cmU7CiAgICAgICAgIHN3aXRjaCAodXNlRGVjaXNpb24pIHsKICAgICAgICAgY2FzZSBVc2VEZWNp
c2lvbjo6VXNlOgogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTMsOCArMzYzLDEzIEBAIHZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgR2xvYmFsRnJhbWVJCiAgICAgICAgICAgICBlbnRyeS0+c2V0TmVlZHNWYWxpZGF0aW9u
KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVXNlRGVjaXNpb246Ok5v
RHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDoKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorICAgICAgICAgICAgbV9mb3JjZWRSZWxvYWRFbnRyaWVzLmFkZChlbnRyeS0+
a2V5KCkuaWRlbnRpZmllcigpLCBWZXJpZmljYXRpb25FbnRyeSgqZW50cnkpKTsKICAgICAgICAg
ICAgIGVudHJ5ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fc3RvcmFnZS0+cmVtb3ZlKHN0b3Jh
Z2VLZXkpOworI2Vsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGVudHJ5
ID0gbnVsbHB0cjsKQEAgLTM4OCw3ICs0MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwg
cmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0
SGVhZGVycyhyZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3Rv
cmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9p
ZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlc3Bv
bnNlRGF0YSk7CiAKQEAgLTQxMiw2ICs0MjcsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBD
YWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb24K
ICAgICB9CiAKICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlRW50cnkocmVxdWVzdCwgcmVzcG9u
c2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKKyAgICBpZiAoYXV0byBhZ2VDYXAgPSBtYXhBZ2VDYXAoKmNhY2hlRW50cnksIHJl
cXVlc3QsIHNlc3Npb25JRCkpCisgICAgICAgIGNhY2hlRW50cnktPmNhcE1heEFnZShhZ2VDYXAu
dmFsdWUoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSUQpOworI2VuZGlmCiAg
ICAgYXV0byByZWNvcmQgPSBjYWNoZUVudHJ5LT5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKIAog
ICAgIG1fc3RvcmFnZS0+c3RvcmUocmVjb3JkLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25z
dCBEYXRhJiBib2R5RGF0YSkgewpAQCAtNDMwLDcgKzQ1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uCiAgICAgcmV0dXJuIGNhY2hlRW50cnk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCitzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QpCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJv
Y2Vzcykgc3RvcmluZyByZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKIApAQCAtNDQ1LDYgKzQ2NiwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdQog
ICAgIH0KIAogICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VSZWRpcmVjdEVudHJ5KHJlcXVlc3Qs
IHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgaWYgKGF1dG8gYWdlQ2FwID0gbWF4QWdlQ2FwKCpjYWNoZUVudHJ5LCBy
ZXF1ZXN0LCBzZXNzaW9uSUQpKQorICAgICAgICBjYWNoZUVudHJ5LT5jYXBNYXhBZ2UoYWdlQ2Fw
LnZhbHVlKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKKyNlbmRpZgog
ICAgIGF1dG8gcmVjb3JkID0gY2FjaGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAK
ICAgICBtX3N0b3JhZ2UtPnN0b3JlKHJlY29yZCwgbnVsbHB0cik7CkBAIC02MjEsNyArNjQ4LDcg
QEAgdm9pZCBDYWNoZTo6cmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmIGRhdGFLZXksIEZ1bmN0
aW9uPHZvaWQgKGNvbnN0IHVpbnQ4X3QqIGQKIHZvaWQgQ2FjaGU6OnN0b3JlRGF0YShjb25zdCBE
YXRhS2V5JiBkYXRhS2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBLZXkga2V5IHsgZGF0YUtleSwgbV9zdG9yYWdlLT5zYWx0KCkgfTsKLSAgICBTdG9yYWdlOjpS
ZWNvcmQgcmVjb3JkIHsga2V5LCBXYWxsVGltZTo6bm93KCksIHsgfSwgRGF0YSB7IGRhdGEsIHNp
emUgfSwgeyB9IH07CisgICAgU3RvcmFnZTo6UmVjb3JkIHJlY29yZCB7IGtleSwgV2FsbFRpbWU6
Om5vdygpLCB7IH0sIERhdGEgeyBkYXRhLCBzaXplIH0sIHsgfSwgeyB9IH07CiAgICAgbV9zdG9y
YWdlLT5zdG9yZShyZWNvcmQsIHsgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGYxNWFkNmJkMGFkYzhjNzM1OGMx
YTk0OTk4MGQ4NDA5ZTYyODMzYTQuLjYyZjNkYzdhNDk1MDcxNTZhYTY2NDA3OTFiM2U1MWI1NmU5
ZWZhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTMsOSArMTE0LDkgQEAgcHVi
bGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5n
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCByZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUEFMOjpT
ZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKKyAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBSZXRyaWV2ZUNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlv
bjx2b2lkKE1hcHBlZEJvZHkmKT4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9y
ZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
dXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1l
SUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlk
YXRpbmdSZXNwb25zZSk7CiAKICAgICBzdHJ1Y3QgVHJhdmVyc2FsRW50cnkgewpAQCAtMTU2LDYg
KzE1Nyw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGR1bXBGaWxlUGF0aCgpIGNvbnN0OwogICAg
IHZvaWQgZGVsZXRlRHVtcEZpbGUoKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4
QWdlQ2FwKEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNz
aW9uSUQpOworCiAgICAgUmVmPFN0b3JhZ2U+IG1fc3RvcmFnZTsKIAogI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKQEAgLTE2NSw2ICsxNjgsOCBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0aWNzPiBtX3N0YXRpc3RpY3M7CiAK
ICAgICB1bnNpZ25lZCBtX3RyYXZlcnNlQ291bnQgeyAwIH07CisgICAgCisgICAgSGFzaE1hcDxT
dHJpbmcsIFZlcmlmaWNhdGlvbkVudHJ5PiBtX2ZvcmNlZFJlbG9hZEVudHJpZXM7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwCmluZGV4IGFlMTE4OGFlM2FhZDhmODJkNWZjMDYyZjVlNGZmNDRlZDEx
ZGU2ZDEuLjIxMmM5Nzc3OGRjYmVhOWZkMGQxYjJlMTFiM2IyODY5MmRjODNmNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCkBAIC05NywxMiArOTcsMTUgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNv
ZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgZW5jb2Rlci5lbmNvZGVDaGVja3N1bSgp
OwogCisgICAgaWYgKG1fbWF4QWdlQ2FwKQorICAgICAgICBlbmNvZGVyIDw8IG1fbWF4QWdlQ2Fw
OworCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXpl
KCkpOwogICAgIERhdGEgYm9keTsKICAgICBpZiAobV9idWZmZXIpCiAgICAgICAgIGJvZHkgPSB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1
ZmZlci0+c2l6ZSgpIH07CiAKLSAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRl
ciwgYm9keSwgeyB9IH07CisgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIs
IGJvZHksIHsgfSwgbV9tYXhBZ2VDYXAgfTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBF
bnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VF
bnRyeSkKQEAgLTEzOCw5ICsxNDEsMjkgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6
ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgLy8gT3B0aW9uYWwgbWF4IGFnZSBjYXAu
CisgICAgZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fbWF4QWdlQ2FwKTsKKwogICAgIHJldHVybiBl
bnRyeTsKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitib29sIEVu
dHJ5OjpoYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoKSBjb25zdAoreworICAgIHJl
dHVybiBtX21heEFnZUNhcCAmJiBXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSgp
LCB0aW1lU3RhbXAoKSkgPiBtX21heEFnZUNhcDsKK30KKwordm9pZCBFbnRyeTo6cHJldmlvdXNF
bnRyeUFscmVhZHlDYXBwZWQoKQoreworICAgIG1fbWF4QWdlQ2FwID0gc3RkOjpudWxsb3B0Owor
fQorCit2b2lkIEVudHJ5OjpjYXBNYXhBZ2UoY29uc3QgU2Vjb25kcyBzZWNvbmRzKQoreworICAg
IG1fbWF4QWdlQ2FwID0gc2Vjb25kczsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKIHZvaWQgRW50cnk6OmluaXRpYWxpemVTaGFyZWFibGVSZXNvdXJjZUhhbmRs
ZUZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QKIHsKQEAgLTIzOSw1ICsyNjIsMjIgQEAgdm9pZCBF
bnRyeTo6YXNKU09OKFN0cmluZ0J1aWxkZXImIGpzb24sIGNvbnN0IFN0b3JhZ2U6OlJlY29yZElu
Zm8mIGluZm8pIGNvbnN0CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJ9Iik7CiB9CiAKKyNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorVmVyaWZpY2F0aW9uRW50cnk6OlZlcmlm
aWNhdGlvbkVudHJ5KGNvbnN0IEVudHJ5JiBlbnRyeSkKKyAgICA6IG1faXNSZWRpcmVjdGVkKGVu
dHJ5LnJlc3BvbnNlKCkuaXNSZWRpcmVjdGVkKCkpCit7CisgICAgaWYgKG1faXNSZWRpcmVjdGVk
KQorICAgICAgICBtX2h0dHBSZXNwb25zZUhlYWRlckxvY2F0aW9uID0gZW50cnkucmVzcG9uc2Uo
KS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKTsKK30K
KworYm9vbCBWZXJpZmljYXRpb25FbnRyeTo6ZXF1YWxzSW5DbGllbnRFeHBvc2VkRGF0YShjb25z
dCBFbnRyeSYgZW50cnkpIGNvbnN0Cit7CisgICAgaWYgKG1faXNSZWRpcmVjdGVkKQorICAgICAg
ICByZXR1cm4gZW50cnkucmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhl
YWRlck5hbWU6OkxvY2F0aW9uKSA9PSBtX2h0dHBSZXNwb25zZUhlYWRlckxvY2F0aW9uOworICAg
IAorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAppbmRleCA1
M2VkZWY3MGNjMTc0ZmU2Y2YwODY1ZDZlZDk1NjNkNjVmZDc2ZmNlLi4yN2M5ZTM0YmNiM2Q0MDEy
YmYxMWY4ZWM5ZDU3ODVhZjY2NjNiZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MCw2ICs3MSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFzSlNPTihTdHJpbmdCdWlsZGVyJiwgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYpIGNvbnN0
OwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBib29sIGhhc1Jl
YWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCgpIGNvbnN0OworICAgIHZvaWQgcHJldmlvdXNF
bnRyeUFscmVhZHlDYXBwZWQoKTsKKyAgICB2b2lkIGNhcE1heEFnZShjb25zdCBTZWNvbmRzKTsK
KyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdl
UmVjb3JkKCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDgg
Kzk1LDI1IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0b3JhZ2U6OlJlY29yZCBtX3NvdXJj
ZVN0b3JhZ2VSZWNvcmQgeyB9OworICAgIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtX21heEFnZUNhcDsKKyNlbmRpZgog
fTsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitjbGFzcyBWZXJpZmlj
YXRpb25FbnRyeSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVmVyaWZpY2F0aW9uRW50cnkoY29u
c3QgRW50cnkmKTsKKyAgICBWZXJpZmljYXRpb25FbnRyeSgpID0gZGVmYXVsdDsKKyAgICBib29s
IGVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEoY29uc3QgRW50cnkmKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBib29sIG1faXNSZWRpcmVjdGVkOworICAgIFN0cmluZyBtX2h0dHBSZXNwb25zZUhl
YWRlckxvY2F0aW9uOworfTsKKyNlbmRpZgorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcAppbmRleCA3YjQwYWIxMmQ5NzMwNmEwZTY5YzE4ZWE1MWZmYjE4YTA0ZTZh
OWZiLi5iNjZhN2Y3ZGVmZWZiM2Q4YmIwZTlkN2Q5MzFiZDMyNzc1NWQwY2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlc291CiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGlu
ZywgIlNwZWN1bGF0aXZlIHJlZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7CisgICAgbV9jYWNoZUVudHJ5
ID0gbV9jYWNoZS0+c3RvcmVSZWRpcmVjdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCByZWRpcmVjdFJlcXVlc3QpOwogICAgIC8v
IENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICBp
ZiAoIW1fY2FjaGVFbnRyeSkKICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZVJl
ZGlyZWN0RW50cnkocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0KTsK
QEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBs
ZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZSht
X29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5
UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9
IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYo
KSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhl
dGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVF
bnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpKSkKICAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRy
eShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBjODEwZDEzNWMxYTk3M2U3YTA5YTY5
MDU3OWI3YjhjMDA2MTk4MTdlLi40M2QzNjhiNDNjZmYzOTNlNmU2NGE1ZmUxYTg4OWIxNGRiOTg2
Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTUwMCw3ICs1MDAsOCBAQCB2b2lkIFN0b3Jh
Z2U6OnJlYWRSZWNvcmQoUmVhZE9wZXJhdGlvbiYgcmVhZE9wZXJhdGlvbiwgY29uc3QgRGF0YSYg
cmVjb3JkRGF0YSkKICAgICAgICAgbWV0YURhdGEudGltZVN0YW1wLAogICAgICAgICBoZWFkZXJE
YXRhLAogICAgICAgICBib2R5RGF0YSwKLSAgICAgICAgbWV0YURhdGEuYm9keUhhc2gKKyAgICAg
ICAgbWV0YURhdGEuYm9keUhhc2gsCisgICAgICAgIHsgfQogICAgIH0pOwogfQogCkBAIC05Mzgs
NyArOTM5LDggQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9w
dGlvblNldDxUcmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1ldGFEYXRhLnRpbWVTdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckRh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICB7IH0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtZXRhRGF0YS5ib2R5SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgbWV0YURhdGEuYm9k
eUhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICB7IH0KICAgICAgICAgICAgICAgICAgICAg
fTsKICAgICAgICAgICAgICAgICAgICAgUmVjb3JkSW5mbyBpbmZvIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4obWV0YURhdGEuYm9keVNpemUpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuaAppbmRleCAwOWM4NzNiYzhiOTE5ZmIzZTRiMTkwYzM3OTUwYWIzOTExZWRlNWJlLi4y
NmFhZjYzMDQ5ZGFlZmM4M2EzYjc0ZGRkOWYzYjFmZTIzYWJlYTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIERhdGEgaGVhZGVyOwogICAgICAg
ICBEYXRhIGJvZHk7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U0hBMTo6RGlnZXN0PiBib2R5SGFz
aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXA7CiAKICAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNv
dXJjZXNFbnRyeS5jcHAKaW5kZXggN2I4ODkyMjk5NTM5ZGIzNGM1YjM5MTRkM2IyMTRjZThiODE0
M2I5OC4uYmZkM2RlNGY4ZjllOTc1ZGVhMGY0YmU4MjQwYmI0ZTk4Mjg1ZGFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNv
dXJjZXNFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU3RvcmFn
ZTo6UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25z
dAogCiAgICAgZW5jb2Rlci5lbmNvZGVDaGVja3N1bSgpOwogCi0gICAgcmV0dXJuIHsgbV9rZXks
IG1fdGltZVN0YW1wLCB7IGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpIH0s
IHsgfSwgeyB9fTsKKyAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIHsgZW5jb2Rlci5i
dWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfSwgeyB9LCB7IH0sIHsgfSB9OwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IFN1YnJlc291cmNlc0VudHJ5OjpkZWNv
ZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDdiYmRlM2E3ODFhZTI0MDViNTA4Yjg5NTdlMzM5MmMyZTY1N2Y2NzYuLjdlMzYxY2E3Mjc2
NjU5Yzc1NWZiN2MxMzBhZWExMGMyN2RjOTliMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAx
OC0xMC0yMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IFJlbW92ZSBjYXAgb24gcGFydGl0aW9uZWQgY2FjaGUg
bWF4IGFnZSBpZiByZWxvYWRzIHJlc3VsdCBpbiB0aGUgc2FtZSBieXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzYwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80NDYxMjI0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2Fj
aGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9y
LXByZXZhbGVudC1yZXNvdXJjZS5odG1sOgorICAgICAgICAgICAgVGhlIHRlc3Qgbm93IHBlcmZv
cm1zIGEgdGhpcmQgRmV0Y2ggcmVxdWVzdCB0byB2ZXJpZnkgdGhhdCB0aGUgY2FjaGUgZW50cnkg
aXMgYWNjZXB0ZWQKKyAgICAgICAgICAgIHRoZSBzZWNvbmQgdGltZS4KKwogMjAxOC0xMC0yMiAg
VHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjT1MgV0sx
IF0gTGF5b3V0IFRlc3QgcGxhdGZvcm0vbWFjL21lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnkt
dmlkZW8tcGF1c2VkLmh0bWwgaXMgZmxha3kgVGltZW91dCAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1m
b3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50
LXJlc291cmNlLWV4cGVjdGVkLnR4dAppbmRleCA2M2M2MDY5ZjY0MzY3NWQyMDFkZDYxMTg2ODcz
Y2FkNTEwMDZlN2NiLi43NDI4ZGQwMTg2MGNlZWQwYTIwNDAwYjIwY2I5ZGUwMDgzMWU0NmZhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNo
ZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUs
NyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVl
cnkucGhwP3ZhbHVlPTEyMzQiCiBQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVl
PSIKK1BBU1MgbG9hZGVkVXJsIGlzICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9IgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2Ut
Zm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3Vy
Y2UuaHRtbAppbmRleCAwOGI4MmJiZmI1NDc1MDA1NzIxZGY4M2RhZjdkZDgzMmFmZGM4OTU1Li40
MGQ0MTg3MGFlNDZmMjgzOWNjMjZjZDM3MmUwNDFlODJiYmVhMGZlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1h
Z2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50
LXJlc291cmNlLmh0bWwKQEAgLTM2LDYgKzM2LDI0IEBACiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgY2FjaGU6ICJmb3JjZS1jYWNoZSIsCiAgICAgICAgICAgICB9CisgICAgICAgICku
dGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVzcG9u
c2UudXJsOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwiLCAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Vj
aG8tcXVlcnkucGhwP3ZhbHVlPSIpOworICAgICAgICAgICAgdGhpcmRGZXRjaCgpOworICAgICAg
ICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJv
ci5tZXNzYWdlKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpT
VGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRoaXJkRmV0Y2goKSB7
CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIHRyaWdnZXIgYSBzdWNjZXNzZnVsIGNhY2hlIGhpdC4K
KyAgICAgICAgZmV0Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICAgICAiWC1X
ZWJLaXQiOiAiNDMyMSIsCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAg
ICApLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgIGxvYWRlZFVybCA9IHJl
c3BvbnNlLnVybDsKICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibG9hZGVkVXJs
IiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNl
cy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352935</attachid>
            <date>2018-10-22 17:38:52 -0700</date>
            <delta_ts>2018-10-22 17:43:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189760-20181022173851.patch</filename>
            <type>text/plain</type>
            <size>28175</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjMmY2ZDg2NmNjYmFlNThk
YWI0ZDUzNDg1YzMwNDEyNTBhZTczY2EuLjE4ZmQ3NDFlZjYyYTllZTgxYjI4NjYzYWViMGZjYTU5
MzYzNDhjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTgtMTAtMjIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBSZW1vdmUgY2FwIG9uIHBhcnRpdGlvbmVkIGNhY2hlIG1heCBhZ2UgaWYgcmVsb2Fk
cyByZXN1bHQgaW4gdGhlIHNhbWUgYnl0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQ2MTIy
NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbnRyb2R1Y2VzIGEgSGFzaE1hcCBtZW1iZXIgaW4gTmV0d29ya0NhY2hlLmggY2Fs
bGVkCisgICAgICAgIG1fZm9yY2VkUmVsb2FkRW50cmllcy4gV2hlbiBhIGNhY2hlIGVudHJ5IGZv
ciBhIHByZXZhbGVudCByZXNvdXJjZQorICAgICAgICByZWFjaGVzIGl0cyBtYXggYWdlIGNhcCBh
bmQgaXMgZGlzY2FyZGVkLCBhbiBlbnRyeSBpcyBjcmVhdGVkIGluCisgICAgICAgIG1fZm9yY2Vk
UmVsb2FkRW50cmllcyB3aXRoIHRoZSBlbnRyeS0+a2V5KCkuaWRlbnRpZmllcigpIGFzIGtleSBh
bmQgYQorICAgICAgICBOZXR3b3JrQ2FjaGU6OlZlcmlmaWNhdGlvbkVudHJ5IGFzIHZhbHVlLiBX
aGVuIHRoZSBjYWNoZSBpcyBhYm91dCB0bworICAgICAgICBzdG9yZSBhIG5ldyBjYWNoZSBlbnRy
eSwgdGhlIG1fZm9yY2VkUmVsb2FkRW50cmllcyBtYXAgaXMgY29uc3VsdGVkCisgICAgICAgIGFu
ZCBpZiBhIG1hdGNoaW5nIE5ldHdvcmtDYWNoZTo6VmVyaWZpY2F0aW9uRW50cnkgaXMgZm91bmQs
IGl0IGlzCisgICAgICAgIGNoZWNrZWQgYWdhaW5zdCB0aGUgbmV3IFJlc291cmNlUmVzcG9uc2Ug
dGhyb3VnaCB0aGUgCisgICAgICAgIGVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEoKSBmdW5jdGlv
bi4KKworICAgICAgICBDdXJyZW50bHksIGVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEoKSBvbmx5
IHN1cHBvcnRzIGNoZWNraW5nIHJlZGlyZWN0CisgICAgICAgIExvY2F0aW9uIGhlYWRlcnMuIFRo
ZSBpbnRlbnRpb24gaXMgdG8gZXhwYW5kIGl0IHRvIG90aGVyIGNsaWVudC1leHBvc2VkCisgICAg
ICAgIHJlc3BvbnNlIGRhdGEgdGhhdCB3ZSBjYXJlIGFib3V0LgorCisgICAgICAgIFRoaXMgZmVh
dHVyZSBpcyBzdGlsbCBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6bWFrZVVzZURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpDYWNoZTo6bWF4QWdlQ2FwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpDYWNoZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hl
OjpzdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlUmVk
aXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6Omhhc1JlYWNoZWRQcmV2YWxlbnRSZXNv
dXJjZUFnZUNhcCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVB
c1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVu
dHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6cHJldmlvdXNFbnRyeUFscmVhZHlDYXBw
ZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpjYXBNYXhBZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlZlcmlmaWNhdGlvbkVudHJ5OjpWZXJpZmlj
YXRpb25FbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6VmVyaWZpY2F0aW9u
RW50cnk6OmVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICAgICBtX21heEFn
ZUNhcCBpcyBvcHRpb25hbCB0byBzdXBwb3J0IGEgc2V0dGluZyBvZiAwIHNlY29uZHMgY2FwIGZv
ciB0ZXN0aW5nLgorICAgICAgICAgICAgc3RkOjpudWxsb3B0IG1lYW5zIG5vIGNhcCBhbmQgMCBt
ZWFucyBpbW1lZGlhdGUgZW50cnkgcmVtb3ZhbC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFk
UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJz
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKwogMjAxOC0xMC0xOSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBXZWJDb250ZW50
IHByb2Nlc3MgdG8gY2hlY2sgc29tZSBmaWxlIHN5c3RlbSBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGVjYzA0N2ZmNTJhOTg5ZThkYjM2OWIxZjExZjBjZGEyZTY5Njg2NGQuLjhlYmQxMjk4ZmJk
NDhiZDhlOWE4YzhiYmIyMzUxMjlmNzRlYmEwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIxNiw3ICsy
MTYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICBBU1NFUlQoY2FuVXNlQ2FjaGUocmVx
dWVzdCkpOwogCiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyKHRoaXMp
OwotICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVlc3QsIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwgc2Vzc2lvbklEKCksIFt0aGlzLCBsb2FkZXIg
PSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1d
KGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+cmV0cmlldmUo
cmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCB9LCBbdGhpcywgbG9hZGVyID0gV1RGTW92ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgewogICAg
ICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkgewogICAgICAgICAgICAgLy8gVGhlIGxvYWRl
ciBoYXMgYmVlbiBhYm9ydGVkIGFuZCBpcyBvbmx5IGhlbGQgYWxpdmUgYnkgdGhpcyBsYW1iZGEu
CiAgICAgICAgICAgICByZXR1cm47CkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwKICAgICArK21fcmVkaXJlY3RDb3VudDsKIAogICAgIGlmIChyZWRpcmVjdFJlc3Bv
bnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayAmJiBjYW5V
c2VDYWNoZWRSZWRpcmVjdChyZXF1ZXN0KSkKLSAgICAgICAgbV9jYWNoZS0+c3RvcmVSZWRpcmVj
dChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOworICAgICAgICBt
X2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHNlc3Npb25J
RCgpLCByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7
CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zdG9yZVJlZGlyZWN0aW9uSWZOZWVkZWQo
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoIW1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2FjaGUtPnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9i
dWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYgbWFw
cGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3Vy
cmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgc2Vzc2lvbklEKCksIFdURk1vdmUobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYgbWFwcGVkQm9k
eSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYg
KG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDYxYTRkZTVmNjM2Zjc2
YTM1NGZkZDg5ZWI4ODFmZWUwM2YyMDg1ZDEuLjBhODRjZmU5MGM0ZTg2MTUwMDU1NjZhNjBjYjQ2
NTgxNDBkMDhhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01NTIsNyArNTUy
LDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRp
b24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgewogICAgIH0pOwogCi0gICAgcmV0dXJuIHsgcmVjb3JkSW5mb3JtYXRpb24ua2V5LCB7
IH0sIGhlYWRlciwgYm9keSwgeyB9IH07CisgICAgcmV0dXJuIHsgcmVjb3JkSW5mb3JtYXRpb24u
a2V5LCB7IH0sIGhlYWRlciwgYm9keSwgeyB9LCB7IH0gfTsKIH0KIAogc3RkOjpvcHRpb25hbDxD
YWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRlY29kZVJlY29yZEhlYWRlcihjb25zdCBTdG9y
YWdlOjpSZWNvcmQmIHN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggYWM1ZWRmN2ZhNmM5ODJjZTljNGJhOThk
N2U2NjUwYjMwYWU1N2M1MC4uNjljODIwZjhkNWIxMDlhZTgxNGE3MWQ4ZTJkZTYxMzk0MWI5YmM3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcApAQCAtMTUyLDExICsxNTIsNiBAQCBzdGF0aWMgYm9vbCBjYWNoZVBvbGljeUFs
bG93c0V4cGlyZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5KQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgaGFzUmVhY2hlZFByZXZhbGVudFJl
c291cmNlQWdlQ2FwKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBX
YWxsVGltZSB0aW1lc3RhbXAsIGNvbnN0IFNlY29uZHMgbWF4QWdlKQotewotICAgIHJldHVybiBX
ZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgdGltZXN0YW1wKSA+IG1heEFnZTsK
LX0KLQogc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3RhbXAsIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gbWF4U3RhbGUpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRh
aW5zTm9DYWNoZSgpKQpAQCAtMTg4LDExICsxODMsMTMgQEAgc3RhdGljIGJvb2wgcmVzcG9uc2VO
ZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwKICAgICByZXR1cm4gcmVzcG9uc2VIYXNFeHBpcmVkKHJlc3BvbnNlLCB0aW1lc3RhbXAsIHJl
cXVlc3REaXJlY3RpdmVzLm1heFN0YWxlKTsKIH0KIAotc3RhdGljIFVzZURlY2lzaW9uIG1ha2VV
c2VEZWNpc2lvbihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2UpCitzdGF0aWMgVXNl
RGVjaXNpb24gbWFrZVVzZURlY2lzaW9uKGNvbnN0IEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChtYXhBZ2UgJiYgaGFzUmVh
Y2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKGVudHJ5LnJlc3BvbnNlKCksIGVudHJ5LnRpbWVT
dGFtcCgpLCBtYXhBZ2UudmFsdWUoKSkpCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKKyAgICBpZiAoZW50cnkuaGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkp
CiAgICAgICAgIHJldHVybiBVc2VEZWNpc2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdl
Q2FwOwotICAgIAorI2VuZGlmCisKICAgICAvLyBUaGUgcmVxdWVzdCBpcyBjb25kaXRpb25hbCBz
byB3ZSBmb3JjZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0d29yay4gV2UgbWVyZWx5IGNoZWNr
IHRoZSBkaXNrIGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVwZGF0ZSB0aGUgY2FjaGUgZW50cnku
CiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYmICFlbnRyeS5yZWRpcmVjdFJlcXVl
c3QoKSkKQEAgLTI3OSw3ICsyNzYsMjUgQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3Jl
RGVjaXNpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFIKICAgICBy
ZXR1cm4gU3RvcmVEZWNpc2lvbjo6WWVzOwogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGZyYW1lSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBDYWNoZTo6
bWF4QWdlQ2FwKEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBlbnRyeS5rZXkoKS5pZGVu
dGlmaWVyKCk7CisgICAgaWYgKG1fZm9yY2VkUmVsb2FkRW50cmllcy5jb250YWlucyhpZGVudGlm
aWVyKSkgeworICAgICAgICBhdXRvIHZlcmlmaWNhdGlvbkVudHJ5ID0gbV9mb3JjZWRSZWxvYWRF
bnRyaWVzLnRha2UoaWRlbnRpZmllcik7CisgICAgICAgIGlmICh2ZXJpZmljYXRpb25FbnRyeS5l
cXVhbHNJbkNsaWVudEV4cG9zZWREYXRhKGVudHJ5KSkgeworICAgICAgICAgICAgZW50cnkucHJl
dmlvdXNFbnRyeUFscmVhZHlDYXBwZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIHJldHVybiBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPm1heEFnZUNhY2hl
Q2FwKHJlcXVlc3QpOworI2VuZGlmCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9p
ZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKTsKIApAQCAtMzIzLDcgKzMzOCw3IEBAIHZvaWQgQ2FjaGU6OnJl
dHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xv
YmFsRnJhbWVJCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3Jh
Z2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBp
bmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRCwgc2Vzc2lvbklEXShhdXRv
IHJlY29yZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJldHJpZXZl
KHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRF0oYXV0byByZWNv
cmQsIGF1dG8gdGltaW5ncykgbXV0YWJsZSB7CiAgICAgICAgIGluZm8uc3RvcmFnZVRpbWluZ3Mg
PSB0aW1pbmdzOwogCiAgICAgICAgIGlmICghcmVjb3JkKSB7CkBAIC0zNDAsMTIgKzM1NSw3IEBA
IHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5Ojpk
ZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbWF4QWdlQ2FwOwotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgICAgIGlmIChhdXRvIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIG1h
eEFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4QWdlQ2FjaGVDYXAocmVxdWVzdCk7
Ci0jZW5kaWYKLSAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gbWFrZVVzZURlY2lz
aW9uKCplbnRyeSwgcmVxdWVzdCwgbWF4QWdlQ2FwKSA6IFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVj
b2RlRmFpbHVyZTsKKyAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gbWFrZVVzZURl
Y2lzaW9uKCplbnRyeSwgcmVxdWVzdCkgOiBVc2VEZWNpc2lvbjo6Tm9EdWVUb0RlY29kZUZhaWx1
cmU7CiAgICAgICAgIHN3aXRjaCAodXNlRGVjaXNpb24pIHsKICAgICAgICAgY2FzZSBVc2VEZWNp
c2lvbjo6VXNlOgogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTMsOCArMzYzLDEzIEBAIHZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgR2xvYmFsRnJhbWVJCiAgICAgICAgICAgICBlbnRyeS0+c2V0TmVlZHNWYWxpZGF0aW9u
KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVXNlRGVjaXNpb246Ok5v
RHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDoKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorICAgICAgICAgICAgbV9mb3JjZWRSZWxvYWRFbnRyaWVzLmFkZChlbnRyeS0+
a2V5KCkuaWRlbnRpZmllcigpLCBWZXJpZmljYXRpb25FbnRyeSgqZW50cnkpKTsKICAgICAgICAg
ICAgIGVudHJ5ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fc3RvcmFnZS0+cmVtb3ZlKHN0b3Jh
Z2VLZXkpOworI2Vsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGVudHJ5
ID0gbnVsbHB0cjsKQEAgLTM4OCw3ICs0MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwg
cmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0
SGVhZGVycyhyZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3Rv
cmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9p
ZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlc3Bv
bnNlRGF0YSk7CiAKQEAgLTQxMiw2ICs0MjcsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBD
YWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb24K
ICAgICB9CiAKICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlRW50cnkocmVxdWVzdCwgcmVzcG9u
c2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKKyAgICBpZiAoYXV0byBhZ2VDYXAgPSBtYXhBZ2VDYXAoKmNhY2hlRW50cnksIHJl
cXVlc3QsIHNlc3Npb25JRCkpCisgICAgICAgIGNhY2hlRW50cnktPmNhcE1heEFnZShhZ2VDYXAu
dmFsdWUoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSUQpOworI2VuZGlmCiAg
ICAgYXV0byByZWNvcmQgPSBjYWNoZUVudHJ5LT5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKIAog
ICAgIG1fc3RvcmFnZS0+c3RvcmUocmVjb3JkLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25z
dCBEYXRhJiBib2R5RGF0YSkgewpAQCAtNDMwLDcgKzQ1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uCiAgICAgcmV0dXJuIGNhY2hlRW50cnk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCitzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QpCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJv
Y2Vzcykgc3RvcmluZyByZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKIApAQCAtNDQ1LDYgKzQ2NiwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdQog
ICAgIH0KIAogICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VSZWRpcmVjdEVudHJ5KHJlcXVlc3Qs
IHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgaWYgKGF1dG8gYWdlQ2FwID0gbWF4QWdlQ2FwKCpjYWNoZUVudHJ5LCBy
ZXF1ZXN0LCBzZXNzaW9uSUQpKQorICAgICAgICBjYWNoZUVudHJ5LT5jYXBNYXhBZ2UoYWdlQ2Fw
LnZhbHVlKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKKyNlbmRpZgog
ICAgIGF1dG8gcmVjb3JkID0gY2FjaGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAK
ICAgICBtX3N0b3JhZ2UtPnN0b3JlKHJlY29yZCwgbnVsbHB0cik7CkBAIC02MjEsNyArNjQ4LDcg
QEAgdm9pZCBDYWNoZTo6cmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmIGRhdGFLZXksIEZ1bmN0
aW9uPHZvaWQgKGNvbnN0IHVpbnQ4X3QqIGQKIHZvaWQgQ2FjaGU6OnN0b3JlRGF0YShjb25zdCBE
YXRhS2V5JiBkYXRhS2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBLZXkga2V5IHsgZGF0YUtleSwgbV9zdG9yYWdlLT5zYWx0KCkgfTsKLSAgICBTdG9yYWdlOjpS
ZWNvcmQgcmVjb3JkIHsga2V5LCBXYWxsVGltZTo6bm93KCksIHsgfSwgRGF0YSB7IGRhdGEsIHNp
emUgfSwgeyB9IH07CisgICAgU3RvcmFnZTo6UmVjb3JkIHJlY29yZCB7IGtleSwgV2FsbFRpbWU6
Om5vdygpLCB7IH0sIERhdGEgeyBkYXRhLCBzaXplIH0sIHsgfSwgeyB9IH07CiAgICAgbV9zdG9y
YWdlLT5zdG9yZShyZWNvcmQsIHsgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGYxNWFkNmJkMGFkYzhjNzM1OGMx
YTk0OTk4MGQ4NDA5ZTYyODMzYTQuLmFiYzNmNGM4NDE4ZTNjOGEwYTM2ZWZiMGVjZTc4MTFjMzcy
Y2NiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTMsOSArMTE0LDkgQEAgcHVi
bGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5n
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCByZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUEFMOjpT
ZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKKyAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBSZXRyaWV2ZUNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlv
bjx2b2lkKE1hcHBlZEJvZHkmKT4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9y
ZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
dXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1l
SUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlk
YXRpbmdSZXNwb25zZSk7CiAKICAgICBzdHJ1Y3QgVHJhdmVyc2FsRW50cnkgewpAQCAtMTU2LDYg
KzE1Nyw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGR1bXBGaWxlUGF0aCgpIGNvbnN0OwogICAg
IHZvaWQgZGVsZXRlRHVtcEZpbGUoKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4
QWdlQ2FwKEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNz
aW9uSUQpOworCiAgICAgUmVmPFN0b3JhZ2U+IG1fc3RvcmFnZTsKIAogI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKQEAgLTE2NSw2ICsxNjgsMTAgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGlzdGljcz4gbV9zdGF0aXN0aWNzOwog
CiAgICAgdW5zaWduZWQgbV90cmF2ZXJzZUNvdW50IHsgMCB9OworICAgIAorI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgSGFzaE1hcDxTdHJpbmcsIFZlcmlmaWNhdGlv
bkVudHJ5PiBtX2ZvcmNlZFJlbG9hZEVudHJpZXM7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKaW5kZXggYWUxMTg4YWUzYWFkOGY4MmQ1ZmMwNjJmNWU0ZmY0NGVkMTFkZTZkMS4uMjEy
Yzk3Nzc4ZGNiZWE5ZmQwZDFiMmUxMWIzYjI4NjkyZGM4M2Y0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
QEAgLTk3LDEyICs5NywxNSBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFn
ZVJlY29yZCgpIGNvbnN0CiAKICAgICBlbmNvZGVyLmVuY29kZUNoZWNrc3VtKCk7CiAKKyAgICBp
ZiAobV9tYXhBZ2VDYXApCisgICAgICAgIGVuY29kZXIgPDwgbV9tYXhBZ2VDYXA7CisKICAgICBE
YXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAg
RGF0YSBib2R5OwogICAgIGlmIChtX2J1ZmZlcikKICAgICAgICAgYm9keSA9IHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXpl
KCkgfTsKIAotICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7
IH0gfTsKKyAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9
LCBtX21heEFnZUNhcCB9OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNv
ZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQpAQCAt
MTM4LDkgKzE0MSwyOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9y
YWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKKyAgICAvLyBPcHRpb25hbCBtYXggYWdlIGNhcC4KKyAgICBkZWNv
ZGVyLmRlY29kZShlbnRyeS0+bV9tYXhBZ2VDYXApOworCiAgICAgcmV0dXJuIGVudHJ5OwogfQog
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK2Jvb2wgRW50cnk6Omhhc1Jl
YWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWF4
QWdlQ2FwICYmIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlKCksIHRpbWVTdGFt
cCgpKSA+IG1fbWF4QWdlQ2FwOworfQorCit2b2lkIEVudHJ5OjpwcmV2aW91c0VudHJ5QWxyZWFk
eUNhcHBlZCgpCit7CisgICAgbV9tYXhBZ2VDYXAgPSBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQg
RW50cnk6OmNhcE1heEFnZShjb25zdCBTZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9tYXhBZ2VD
YXAgPSBzZWNvbmRzOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZVNoYXJlYWJsZVJlc291cmNlSGFuZGxlRnJvbVN0b3Jh
Z2VSZWNvcmQoKSBjb25zdAogewpAQCAtMjM5LDUgKzI2MiwyMiBAQCB2b2lkIEVudHJ5Ojphc0pT
T04oU3RyaW5nQnVpbGRlciYganNvbiwgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYgaW5mbykg
Y29uc3QKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIn0iKTsKIH0KIAorI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitWZXJpZmljYXRpb25FbnRyeTo6VmVyaWZpY2F0aW9uRW50
cnkoY29uc3QgRW50cnkmIGVudHJ5KQorICAgIDogbV9pc1JlZGlyZWN0ZWQoZW50cnkucmVzcG9u
c2UoKS5pc1JlZGlyZWN0ZWQoKSkKK3sKKyAgICBpZiAobV9pc1JlZGlyZWN0ZWQpCisgICAgICAg
IG1faHR0cFJlc3BvbnNlSGVhZGVyTG9jYXRpb24gPSBlbnRyeS5yZXNwb25zZSgpLmh0dHBIZWFk
ZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pOworfQorCitib29sIFZl
cmlmaWNhdGlvbkVudHJ5OjplcXVhbHNJbkNsaWVudEV4cG9zZWREYXRhKGNvbnN0IEVudHJ5JiBl
bnRyeSkgY29uc3QKK3sKKyAgICBpZiAobV9pc1JlZGlyZWN0ZWQpCisgICAgICAgIHJldHVybiBl
bnRyeS5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6
TG9jYXRpb24pID09IG1faHR0cFJlc3BvbnNlSGVhZGVyTG9jYXRpb247CisgICAgCisgICAgcmV0
dXJuIHRydWU7Cit9CisjZW5kaWYKKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDUzZWRlZjcwY2Mx
NzRmZTZjZjA4NjVkNmVkOTU2M2Q2NWZkNzZmY2UuLjI3YzllMzRiY2IzZDQwMTJiZjExZjhlYzlk
NTc4NWFmNjY2M2JkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9T
ZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTcwLDYgKzcxLDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXNKU09OKFN0
cmluZ0J1aWxkZXImLCBjb25zdCBTdG9yYWdlOjpSZWNvcmRJbmZvJikgY29uc3Q7CiAKKyNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGJvb2wgaGFzUmVhY2hlZFByZXZh
bGVudFJlc291cmNlQWdlQ2FwKCkgY29uc3Q7CisgICAgdm9pZCBwcmV2aW91c0VudHJ5QWxyZWFk
eUNhcHBlZCgpOworICAgIHZvaWQgY2FwTWF4QWdlKGNvbnN0IFNlY29uZHMpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKSBj
b25zdDsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpAQCAtODgsOCArOTUsMjUgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RvcmFnZTo6UmVjb3JkIG1fc291cmNlU3RvcmFnZVJl
Y29yZCB7IH07CisgICAgCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fbWF4QWdlQ2FwOworI2VuZGlmCiB9OwogCisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK2NsYXNzIFZlcmlmaWNhdGlvbkVudHJ5
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBWZXJpZmljYXRpb25FbnRyeShjb25zdCBFbnRyeSYp
OworICAgIFZlcmlmaWNhdGlvbkVudHJ5KCkgPSBkZWZhdWx0OworICAgIGJvb2wgZXF1YWxzSW5D
bGllbnRFeHBvc2VkRGF0YShjb25zdCBFbnRyeSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIGJv
b2wgbV9pc1JlZGlyZWN0ZWQ7CisgICAgU3RyaW5nIG1faHR0cFJlc3BvbnNlSGVhZGVyTG9jYXRp
b247Cit9OworI2VuZGlmCisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCmluZGV4IDdiNDBhYjEyZDk3MzA2YTBlNjljMThlYTUxZmZiMThhMDRlNmE5ZmIuLmI2NmE3
ZjdkZWZlZmIzZDhiYjBlOWQ3ZDkzMWJkMzI3NzU1ZDBjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVz
b3UKIHsKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiU3BlY3Vs
YXRpdmUgcmVkaXJlY3QgJXMgLT4gJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHJlZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAot
ICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlUmVkaXJlY3QocmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0KTsKKyAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hl
LT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCksIHJlZGlyZWN0UmVxdWVzdCk7CiAgICAgLy8gQ3JlYXRlIGEg
c3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgIGlmICghbV9jYWNo
ZUVudHJ5KQogICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlUmVkaXJlY3RFbnRy
eShyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOwpAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAg
ICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10o
YXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+
c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRv
JiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUg
ZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlz
U3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkp
KQogICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGM4MTBkMTM1YzFhOTczZTdhMDlhNjkwNTc5YjdiOGMw
MDYxOTgxN2UuLjQzZDM2OGI0M2NmZjM5M2U2ZTY0YTVmZTFhODg5YjE0ZGI5ODZmNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcApAQCAtNTAwLDcgKzUwMCw4IEBAIHZvaWQgU3RvcmFnZTo6cmVhZFJl
Y29yZChSZWFkT3BlcmF0aW9uJiByZWFkT3BlcmF0aW9uLCBjb25zdCBEYXRhJiByZWNvcmREYXRh
KQogICAgICAgICBtZXRhRGF0YS50aW1lU3RhbXAsCiAgICAgICAgIGhlYWRlckRhdGEsCiAgICAg
ICAgIGJvZHlEYXRhLAotICAgICAgICBtZXRhRGF0YS5ib2R5SGFzaAorICAgICAgICBtZXRhRGF0
YS5ib2R5SGFzaCwKKyAgICAgICAgeyB9CiAgICAgfSk7CiB9CiAKQEAgLTkzOCw3ICs5MzksOCBA
QCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRy
YXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgICAgICAgICAgICAgICAgICAgICAgbWV0YURh
dGEudGltZVN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyRGF0YSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHsgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFEYXRh
LmJvZHlIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRhRGF0YS5ib2R5SGFzaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsgfQogICAgICAgICAgICAgICAgICAgICB9OwogICAgICAg
ICAgICAgICAgICAgICBSZWNvcmRJbmZvIGluZm8gewogICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhRGF0YS5ib2R5U2l6ZSksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmlu
ZGV4IDA5Yzg3M2JjOGI5MTlmYjNlNGIxOTBjMzc5NTBhYjM5MTFlZGU1YmUuLjI2YWFmNjMwNDlk
YWVmYzgzYTNiNzRkZGQ5ZjNiMWZlMjNhYmVhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCkBAIC01Niw2
ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YSBoZWFkZXI7CiAgICAgICAgIERhdGEgYm9k
eTsKICAgICAgICAgc3RkOjpvcHRpb25hbDxTSEExOjpEaWdlc3Q+IGJvZHlIYXNoOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcDsKIAogICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmNwcAppbmRleCA3Yjg4OTIyOTk1MzlkYjM0YzViMzkxNGQzYjIxNGNlOGI4MTQzYjk4Li5iZmQz
ZGU0ZjhmOWU5NzVkZWEwZjRiZTgyNDBiYjRlOTgyODVkYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN1YnJlc291cmNlc0VudHJ5LmNwcApAQCAtODgsNyArODgsNyBAQCBTdG9yYWdlOjpSZWNvcmQg
U3VicmVzb3VyY2VzRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBl
bmNvZGVyLmVuY29kZUNoZWNrc3VtKCk7CiAKLSAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3Rh
bXAsIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfSwgeyB9LCB7IH19
OworICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgeyBlbmNvZGVyLmJ1ZmZlcigpLCBl
bmNvZGVyLmJ1ZmZlclNpemUoKSB9LCB7IH0sIHsgfSwgeyB9IH07CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gU3VicmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VS
ZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2JiZGUz
YTc4MWFlMjQwNWI1MDhiODk1N2UzMzkyYzJlNjU3ZjY3Ni4uN2UzNjFjYTcyNzY2NTljNzU1ZmI3
YzEzMGFlYTEwYzI3ZGM5OWIwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTEwLTIyICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExv
YWQgU3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlm
IHJlbG9hZHMgcmVzdWx0IGluIHRoZSBzYW1lIGJ5dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ0NjEyMjQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdl
LWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50
LXJlc291cmNlLmh0bWw6CisgICAgICAgICAgICBUaGUgdGVzdCBub3cgcGVyZm9ybXMgYSB0aGly
ZCBGZXRjaCByZXF1ZXN0IHRvIHZlcmlmeSB0aGF0IHRoZSBjYWNoZSBlbnRyeSBpcyBhY2NlcHRl
ZAorICAgICAgICAgICAgdGhlIHNlY29uZCB0aW1lLgorCiAyMDE4LTEwLTIyICBUcnVpdHQgU2F2
ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWNPUyBXSzEgXSBMYXlvdXQg
VGVzdCBwbGF0Zm9ybS9tYWMvbWVkaWEvYXVkaW8tc2Vzc2lvbi1jYXRlZ29yeS12aWRlby1wYXVz
ZWQuaHRtbCBpcyBmbGFreSBUaW1lb3V0IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxl
bnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2Ut
ZXhwZWN0ZWQudHh0CmluZGV4IDYzYzYwNjlmNjQzNjc1ZDIwMWRkNjExODY4NzNjYWQ1MTAwNmU3
Y2IuLjc0MjhkZDAxODYwY2VlZDBhMjA0MDBiMjBjYjlkZTAwODMxZTQ2ZmEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUt
bWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2Ut
Zm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTUsNiArNSw3IEBAIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1MgbG9hZGVkVXJsIGlzICJodHRwOi8vbG9jYWxob3N0
OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFs
dWU9MTIzNCIKIFBBU1MgbG9hZGVkVXJsIGlzICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9IgorUEFTUyBs
b2FkZWRVcmwgaXMgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFs
ZW50LXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCmlu
ZGV4IDA4YjgyYmJmYjU0NzUwMDU3MjFkZjgzZGFmN2RkODMyYWZkYzg5NTUuLjQwZDQxODcwYWU0
NmYyODM5Y2MyNmNkMzcyZTA0MWU4MmJiZWEwZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJl
dmFsZW50LXJlc291cmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2Uu
aHRtbApAQCAtMzYsNiArMzYsMjQgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBj
YWNoZTogImZvcmNlLWNhY2hlIiwKICAgICAgICAgICAgIH0KKyAgICAgICAgKS50aGVuKGZ1bmN0
aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBsb2FkZWRVcmwgPSByZXNwb25zZS51cmw7Cisg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxvYWRlZFVybCIsICJodHRwOi8vbG9j
YWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5w
aHA/dmFsdWU9Iik7CisgICAgICAgICAgICB0aGlyZEZldGNoKCk7CisgICAgICAgIH0pLmNhdGNo
KGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKGVycm9yLm1lc3NhZ2Up
OworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGhpcmRGZXRjaCgpIHsKKyAgICAgICAg
Ly8gVGhpcyBzaG91bGQgdHJpZ2dlciBhIHN1Y2Nlc3NmdWwgY2FjaGUgaGl0LgorICAgICAgICBm
ZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3Vy
Y2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwIiwKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAgICAgICAgICJYLVdlYktpdCI6ICI0
MzIxIiwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICkudGhlbihm
dW5jdGlvbihyZXNwb25zZSkgewogICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJs
OwogICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwiLCAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVl
cnkucGhwP3ZhbHVlPSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352938</attachid>
            <date>2018-10-22 17:43:49 -0700</date>
            <delta_ts>2018-10-22 17:54:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189760-20181022174348.patch</filename>
            <type>text/plain</type>
            <size>28221</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjMmY2ZDg2NmNjYmFlNThk
YWI0ZDUzNDg1YzMwNDEyNTBhZTczY2EuLjE4ZmQ3NDFlZjYyYTllZTgxYjI4NjYzYWViMGZjYTU5
MzYzNDhjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTgtMTAtMjIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBSZW1vdmUgY2FwIG9uIHBhcnRpdGlvbmVkIGNhY2hlIG1heCBhZ2UgaWYgcmVsb2Fk
cyByZXN1bHQgaW4gdGhlIHNhbWUgYnl0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQ2MTIy
NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbnRyb2R1Y2VzIGEgSGFzaE1hcCBtZW1iZXIgaW4gTmV0d29ya0NhY2hlLmggY2Fs
bGVkCisgICAgICAgIG1fZm9yY2VkUmVsb2FkRW50cmllcy4gV2hlbiBhIGNhY2hlIGVudHJ5IGZv
ciBhIHByZXZhbGVudCByZXNvdXJjZQorICAgICAgICByZWFjaGVzIGl0cyBtYXggYWdlIGNhcCBh
bmQgaXMgZGlzY2FyZGVkLCBhbiBlbnRyeSBpcyBjcmVhdGVkIGluCisgICAgICAgIG1fZm9yY2Vk
UmVsb2FkRW50cmllcyB3aXRoIHRoZSBlbnRyeS0+a2V5KCkuaWRlbnRpZmllcigpIGFzIGtleSBh
bmQgYQorICAgICAgICBOZXR3b3JrQ2FjaGU6OlZlcmlmaWNhdGlvbkVudHJ5IGFzIHZhbHVlLiBX
aGVuIHRoZSBjYWNoZSBpcyBhYm91dCB0bworICAgICAgICBzdG9yZSBhIG5ldyBjYWNoZSBlbnRy
eSwgdGhlIG1fZm9yY2VkUmVsb2FkRW50cmllcyBtYXAgaXMgY29uc3VsdGVkCisgICAgICAgIGFu
ZCBpZiBhIG1hdGNoaW5nIE5ldHdvcmtDYWNoZTo6VmVyaWZpY2F0aW9uRW50cnkgaXMgZm91bmQs
IGl0IGlzCisgICAgICAgIGNoZWNrZWQgYWdhaW5zdCB0aGUgbmV3IFJlc291cmNlUmVzcG9uc2Ug
dGhyb3VnaCB0aGUgCisgICAgICAgIGVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEoKSBmdW5jdGlv
bi4KKworICAgICAgICBDdXJyZW50bHksIGVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEoKSBvbmx5
IHN1cHBvcnRzIGNoZWNraW5nIHJlZGlyZWN0CisgICAgICAgIExvY2F0aW9uIGhlYWRlcnMuIFRo
ZSBpbnRlbnRpb24gaXMgdG8gZXhwYW5kIGl0IHRvIG90aGVyIGNsaWVudC1leHBvc2VkCisgICAg
ICAgIHJlc3BvbnNlIGRhdGEgdGhhdCB3ZSBjYXJlIGFib3V0LgorCisgICAgICAgIFRoaXMgZmVh
dHVyZSBpcyBzdGlsbCBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6bWFrZVVzZURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpDYWNoZTo6bWF4QWdlQ2FwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpDYWNoZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hl
OjpzdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlUmVk
aXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6Omhhc1JlYWNoZWRQcmV2YWxlbnRSZXNv
dXJjZUFnZUNhcCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVB
c1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVu
dHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6cHJldmlvdXNFbnRyeUFscmVhZHlDYXBw
ZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpjYXBNYXhBZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlZlcmlmaWNhdGlvbkVudHJ5OjpWZXJpZmlj
YXRpb25FbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6VmVyaWZpY2F0aW9u
RW50cnk6OmVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICAgICBtX21heEFn
ZUNhcCBpcyBvcHRpb25hbCB0byBzdXBwb3J0IGEgc2V0dGluZyBvZiAwIHNlY29uZHMgY2FwIGZv
ciB0ZXN0aW5nLgorICAgICAgICAgICAgc3RkOjpudWxsb3B0IG1lYW5zIG5vIGNhcCBhbmQgMCBt
ZWFucyBpbW1lZGlhdGUgZW50cnkgcmVtb3ZhbC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFk
UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJz
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKwogMjAxOC0xMC0xOSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBXZWJDb250ZW50
IHByb2Nlc3MgdG8gY2hlY2sgc29tZSBmaWxlIHN5c3RlbSBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGVjYzA0N2ZmNTJhOTg5ZThkYjM2OWIxZjExZjBjZGEyZTY5Njg2NGQuLjhlYmQxMjk4ZmJk
NDhiZDhlOWE4YzhiYmIyMzUxMjlmNzRlYmEwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIxNiw3ICsy
MTYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICBBU1NFUlQoY2FuVXNlQ2FjaGUocmVx
dWVzdCkpOwogCiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyKHRoaXMp
OwotICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVlc3QsIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwgc2Vzc2lvbklEKCksIFt0aGlzLCBsb2FkZXIg
PSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1d
KGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+cmV0cmlldmUo
cmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCB9LCBbdGhpcywgbG9hZGVyID0gV1RGTW92ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgewogICAg
ICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkgewogICAgICAgICAgICAgLy8gVGhlIGxvYWRl
ciBoYXMgYmVlbiBhYm9ydGVkIGFuZCBpcyBvbmx5IGhlbGQgYWxpdmUgYnkgdGhpcyBsYW1iZGEu
CiAgICAgICAgICAgICByZXR1cm47CkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwKICAgICArK21fcmVkaXJlY3RDb3VudDsKIAogICAgIGlmIChyZWRpcmVjdFJlc3Bv
bnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayAmJiBjYW5V
c2VDYWNoZWRSZWRpcmVjdChyZXF1ZXN0KSkKLSAgICAgICAgbV9jYWNoZS0+c3RvcmVSZWRpcmVj
dChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOworICAgICAgICBt
X2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHNlc3Npb25J
RCgpLCByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7
CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zdG9yZVJlZGlyZWN0aW9uSWZOZWVkZWQo
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoIW1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2FjaGUtPnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9i
dWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYgbWFw
cGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3Vy
cmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgc2Vzc2lvbklEKCksIFdURk1vdmUobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYgbWFwcGVkQm9k
eSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYg
KG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDYxYTRkZTVmNjM2Zjc2
YTM1NGZkZDg5ZWI4ODFmZWUwM2YyMDg1ZDEuLjBhODRjZmU5MGM0ZTg2MTUwMDU1NjZhNjBjYjQ2
NTgxNDBkMDhhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01NTIsNyArNTUy
LDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRp
b24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgewogICAgIH0pOwogCi0gICAgcmV0dXJuIHsgcmVjb3JkSW5mb3JtYXRpb24ua2V5LCB7
IH0sIGhlYWRlciwgYm9keSwgeyB9IH07CisgICAgcmV0dXJuIHsgcmVjb3JkSW5mb3JtYXRpb24u
a2V5LCB7IH0sIGhlYWRlciwgYm9keSwgeyB9LCB7IH0gfTsKIH0KIAogc3RkOjpvcHRpb25hbDxD
YWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRlY29kZVJlY29yZEhlYWRlcihjb25zdCBTdG9y
YWdlOjpSZWNvcmQmIHN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggYWM1ZWRmN2ZhNmM5ODJjZTljNGJhOThk
N2U2NjUwYjMwYWU1N2M1MC4uNjljODIwZjhkNWIxMDlhZTgxNGE3MWQ4ZTJkZTYxMzk0MWI5YmM3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcApAQCAtMTUyLDExICsxNTIsNiBAQCBzdGF0aWMgYm9vbCBjYWNoZVBvbGljeUFs
bG93c0V4cGlyZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5KQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgaGFzUmVhY2hlZFByZXZhbGVudFJl
c291cmNlQWdlQ2FwKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBX
YWxsVGltZSB0aW1lc3RhbXAsIGNvbnN0IFNlY29uZHMgbWF4QWdlKQotewotICAgIHJldHVybiBX
ZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgdGltZXN0YW1wKSA+IG1heEFnZTsK
LX0KLQogc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3RhbXAsIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gbWF4U3RhbGUpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRh
aW5zTm9DYWNoZSgpKQpAQCAtMTg4LDExICsxODMsMTMgQEAgc3RhdGljIGJvb2wgcmVzcG9uc2VO
ZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwKICAgICByZXR1cm4gcmVzcG9uc2VIYXNFeHBpcmVkKHJlc3BvbnNlLCB0aW1lc3RhbXAsIHJl
cXVlc3REaXJlY3RpdmVzLm1heFN0YWxlKTsKIH0KIAotc3RhdGljIFVzZURlY2lzaW9uIG1ha2VV
c2VEZWNpc2lvbihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2UpCitzdGF0aWMgVXNl
RGVjaXNpb24gbWFrZVVzZURlY2lzaW9uKGNvbnN0IEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChtYXhBZ2UgJiYgaGFzUmVh
Y2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKGVudHJ5LnJlc3BvbnNlKCksIGVudHJ5LnRpbWVT
dGFtcCgpLCBtYXhBZ2UudmFsdWUoKSkpCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKKyAgICBpZiAoZW50cnkuaGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkp
CiAgICAgICAgIHJldHVybiBVc2VEZWNpc2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdl
Q2FwOwotICAgIAorI2VuZGlmCisKICAgICAvLyBUaGUgcmVxdWVzdCBpcyBjb25kaXRpb25hbCBz
byB3ZSBmb3JjZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0d29yay4gV2UgbWVyZWx5IGNoZWNr
IHRoZSBkaXNrIGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVwZGF0ZSB0aGUgY2FjaGUgZW50cnku
CiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYmICFlbnRyeS5yZWRpcmVjdFJlcXVl
c3QoKSkKQEAgLTI3OSw3ICsyNzYsMjUgQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3Jl
RGVjaXNpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFIKICAgICBy
ZXR1cm4gU3RvcmVEZWNpc2lvbjo6WWVzOwogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGZyYW1lSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBDYWNoZTo6
bWF4QWdlQ2FwKEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBlbnRyeS5rZXkoKS5pZGVu
dGlmaWVyKCk7CisgICAgaWYgKG1fZm9yY2VkUmVsb2FkRW50cmllcy5jb250YWlucyhpZGVudGlm
aWVyKSkgeworICAgICAgICBhdXRvIHZlcmlmaWNhdGlvbkVudHJ5ID0gbV9mb3JjZWRSZWxvYWRF
bnRyaWVzLnRha2UoaWRlbnRpZmllcik7CisgICAgICAgIGlmICh2ZXJpZmljYXRpb25FbnRyeS5l
cXVhbHNJbkNsaWVudEV4cG9zZWREYXRhKGVudHJ5KSkgeworICAgICAgICAgICAgZW50cnkucHJl
dmlvdXNFbnRyeUFscmVhZHlDYXBwZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIHJldHVybiBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPm1heEFnZUNhY2hl
Q2FwKHJlcXVlc3QpOworI2VuZGlmCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9p
ZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKTsKIApAQCAtMzIzLDcgKzMzOCw3IEBAIHZvaWQgQ2FjaGU6OnJl
dHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xv
YmFsRnJhbWVJCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3Jh
Z2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBp
bmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRCwgc2Vzc2lvbklEXShhdXRv
IHJlY29yZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJldHJpZXZl
KHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRF0oYXV0byByZWNv
cmQsIGF1dG8gdGltaW5ncykgbXV0YWJsZSB7CiAgICAgICAgIGluZm8uc3RvcmFnZVRpbWluZ3Mg
PSB0aW1pbmdzOwogCiAgICAgICAgIGlmICghcmVjb3JkKSB7CkBAIC0zNDAsMTIgKzM1NSw3IEBA
IHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5Ojpk
ZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbWF4QWdlQ2FwOwotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgICAgIGlmIChhdXRvIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIG1h
eEFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4QWdlQ2FjaGVDYXAocmVxdWVzdCk7
Ci0jZW5kaWYKLSAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gbWFrZVVzZURlY2lz
aW9uKCplbnRyeSwgcmVxdWVzdCwgbWF4QWdlQ2FwKSA6IFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVj
b2RlRmFpbHVyZTsKKyAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gbWFrZVVzZURl
Y2lzaW9uKCplbnRyeSwgcmVxdWVzdCkgOiBVc2VEZWNpc2lvbjo6Tm9EdWVUb0RlY29kZUZhaWx1
cmU7CiAgICAgICAgIHN3aXRjaCAodXNlRGVjaXNpb24pIHsKICAgICAgICAgY2FzZSBVc2VEZWNp
c2lvbjo6VXNlOgogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTMsOCArMzYzLDEzIEBAIHZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgR2xvYmFsRnJhbWVJCiAgICAgICAgICAgICBlbnRyeS0+c2V0TmVlZHNWYWxpZGF0aW9u
KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVXNlRGVjaXNpb246Ok5v
RHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDoKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorICAgICAgICAgICAgbV9mb3JjZWRSZWxvYWRFbnRyaWVzLmFkZChlbnRyeS0+
a2V5KCkuaWRlbnRpZmllcigpLCBWZXJpZmljYXRpb25FbnRyeSgqZW50cnkpKTsKICAgICAgICAg
ICAgIGVudHJ5ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fc3RvcmFnZS0+cmVtb3ZlKHN0b3Jh
Z2VLZXkpOworI2Vsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGVudHJ5
ID0gbnVsbHB0cjsKQEAgLTM4OCw3ICs0MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwg
cmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0
SGVhZGVycyhyZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3Rv
cmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9p
ZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlc3Bv
bnNlRGF0YSk7CiAKQEAgLTQxMiw2ICs0MjcsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBD
YWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb24K
ICAgICB9CiAKICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlRW50cnkocmVxdWVzdCwgcmVzcG9u
c2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKKyAgICBpZiAoYXV0byBhZ2VDYXAgPSBtYXhBZ2VDYXAoKmNhY2hlRW50cnksIHJl
cXVlc3QsIHNlc3Npb25JRCkpCisgICAgICAgIGNhY2hlRW50cnktPmNhcE1heEFnZShhZ2VDYXAu
dmFsdWUoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSUQpOworI2VuZGlmCiAg
ICAgYXV0byByZWNvcmQgPSBjYWNoZUVudHJ5LT5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKIAog
ICAgIG1fc3RvcmFnZS0+c3RvcmUocmVjb3JkLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25z
dCBEYXRhJiBib2R5RGF0YSkgewpAQCAtNDMwLDcgKzQ1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uCiAgICAgcmV0dXJuIGNhY2hlRW50cnk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCitzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QpCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJv
Y2Vzcykgc3RvcmluZyByZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKIApAQCAtNDQ1LDYgKzQ2NiwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdQog
ICAgIH0KIAogICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VSZWRpcmVjdEVudHJ5KHJlcXVlc3Qs
IHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgaWYgKGF1dG8gYWdlQ2FwID0gbWF4QWdlQ2FwKCpjYWNoZUVudHJ5LCBy
ZXF1ZXN0LCBzZXNzaW9uSUQpKQorICAgICAgICBjYWNoZUVudHJ5LT5jYXBNYXhBZ2UoYWdlQ2Fw
LnZhbHVlKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKKyNlbmRpZgog
ICAgIGF1dG8gcmVjb3JkID0gY2FjaGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAK
ICAgICBtX3N0b3JhZ2UtPnN0b3JlKHJlY29yZCwgbnVsbHB0cik7CkBAIC02MjEsNyArNjQ4LDcg
QEAgdm9pZCBDYWNoZTo6cmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmIGRhdGFLZXksIEZ1bmN0
aW9uPHZvaWQgKGNvbnN0IHVpbnQ4X3QqIGQKIHZvaWQgQ2FjaGU6OnN0b3JlRGF0YShjb25zdCBE
YXRhS2V5JiBkYXRhS2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBLZXkga2V5IHsgZGF0YUtleSwgbV9zdG9yYWdlLT5zYWx0KCkgfTsKLSAgICBTdG9yYWdlOjpS
ZWNvcmQgcmVjb3JkIHsga2V5LCBXYWxsVGltZTo6bm93KCksIHsgfSwgRGF0YSB7IGRhdGEsIHNp
emUgfSwgeyB9IH07CisgICAgU3RvcmFnZTo6UmVjb3JkIHJlY29yZCB7IGtleSwgV2FsbFRpbWU6
Om5vdygpLCB7IH0sIERhdGEgeyBkYXRhLCBzaXplIH0sIHsgfSwgeyB9IH07CiAgICAgbV9zdG9y
YWdlLT5zdG9yZShyZWNvcmQsIHsgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGYxNWFkNmJkMGFkYzhjNzM1OGMx
YTk0OTk4MGQ4NDA5ZTYyODMzYTQuLmFiYzNmNGM4NDE4ZTNjOGEwYTM2ZWZiMGVjZTc4MTFjMzcy
Y2NiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTMsOSArMTE0LDkgQEAgcHVi
bGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5n
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCByZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUEFMOjpT
ZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKKyAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBSZXRyaWV2ZUNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlv
bjx2b2lkKE1hcHBlZEJvZHkmKT4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9y
ZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
dXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1l
SUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlk
YXRpbmdSZXNwb25zZSk7CiAKICAgICBzdHJ1Y3QgVHJhdmVyc2FsRW50cnkgewpAQCAtMTU2LDYg
KzE1Nyw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGR1bXBGaWxlUGF0aCgpIGNvbnN0OwogICAg
IHZvaWQgZGVsZXRlRHVtcEZpbGUoKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4
QWdlQ2FwKEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNz
aW9uSUQpOworCiAgICAgUmVmPFN0b3JhZ2U+IG1fc3RvcmFnZTsKIAogI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKQEAgLTE2NSw2ICsxNjgsMTAgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGlzdGljcz4gbV9zdGF0aXN0aWNzOwog
CiAgICAgdW5zaWduZWQgbV90cmF2ZXJzZUNvdW50IHsgMCB9OworICAgIAorI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgSGFzaE1hcDxTdHJpbmcsIFZlcmlmaWNhdGlv
bkVudHJ5PiBtX2ZvcmNlZFJlbG9hZEVudHJpZXM7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKaW5kZXggYWUxMTg4YWUzYWFkOGY4MmQ1ZmMwNjJmNWU0ZmY0NGVkMTFkZTZkMS4uNzU0
OTIwMDEwMzdjODQyYjZkMzc1ZGNjYmNhYjdkMGRhMThmNjI5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
QEAgLTk3LDEyICs5NywxNSBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFn
ZVJlY29yZCgpIGNvbnN0CiAKICAgICBlbmNvZGVyLmVuY29kZUNoZWNrc3VtKCk7CiAKKyAgICBp
ZiAobV9tYXhBZ2VDYXApCisgICAgICAgIGVuY29kZXIgPDwgbV9tYXhBZ2VDYXA7CisKICAgICBE
YXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAg
RGF0YSBib2R5OwogICAgIGlmIChtX2J1ZmZlcikKICAgICAgICAgYm9keSA9IHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXpl
KCkgfTsKIAotICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7
IH0gfTsKKyAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9
LCBtX21heEFnZUNhcCB9OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNv
ZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQpAQCAt
MTM4LDkgKzE0MSwzMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9y
YWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIC8vIE9wdGlvbmFsIG1heCBhZ2UgY2FwLgorICAgIGRlY29kZXIuZGVjb2RlKGVudHJ5LT5t
X21heEFnZUNhcCk7CisjZW5kaWYKKwogICAgIHJldHVybiBlbnRyeTsKIH0KIAorI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitib29sIEVudHJ5OjpoYXNSZWFjaGVkUHJldmFs
ZW50UmVzb3VyY2VBZ2VDYXAoKSBjb25zdAoreworICAgIHJldHVybiBtX21heEFnZUNhcCAmJiBX
ZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSgpLCB0aW1lU3RhbXAoKSkgPiBtX21h
eEFnZUNhcDsKK30KKwordm9pZCBFbnRyeTo6cHJldmlvdXNFbnRyeUFscmVhZHlDYXBwZWQoKQor
eworICAgIG1fbWF4QWdlQ2FwID0gc3RkOjpudWxsb3B0OworfQorCit2b2lkIEVudHJ5OjpjYXBN
YXhBZ2UoY29uc3QgU2Vjb25kcyBzZWNvbmRzKQoreworICAgIG1fbWF4QWdlQ2FwID0gc2Vjb25k
czsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIHZvaWQgRW50
cnk6OmluaXRpYWxpemVTaGFyZWFibGVSZXNvdXJjZUhhbmRsZUZyb21TdG9yYWdlUmVjb3JkKCkg
Y29uc3QKIHsKQEAgLTIzOSw1ICsyNjQsMjIgQEAgdm9pZCBFbnRyeTo6YXNKU09OKFN0cmluZ0J1
aWxkZXImIGpzb24sIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mIGluZm8pIGNvbnN0CiAgICAg
anNvbi5hcHBlbmRMaXRlcmFsKCJ9Iik7CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorVmVyaWZpY2F0aW9uRW50cnk6OlZlcmlmaWNhdGlvbkVudHJ5KGNvbnN0IEVu
dHJ5JiBlbnRyeSkKKyAgICA6IG1faXNSZWRpcmVjdGVkKGVudHJ5LnJlc3BvbnNlKCkuaXNSZWRp
cmVjdGVkKCkpCit7CisgICAgaWYgKG1faXNSZWRpcmVjdGVkKQorICAgICAgICBtX2h0dHBSZXNw
b25zZUhlYWRlckxvY2F0aW9uID0gZW50cnkucmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoV2Vi
Q29yZTo6SFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKTsKK30KKworYm9vbCBWZXJpZmljYXRpb25F
bnRyeTo6ZXF1YWxzSW5DbGllbnRFeHBvc2VkRGF0YShjb25zdCBFbnRyeSYgZW50cnkpIGNvbnN0
Cit7CisgICAgaWYgKG1faXNSZWRpcmVjdGVkKQorICAgICAgICByZXR1cm4gZW50cnkucmVzcG9u
c2UoKS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKSA9
PSBtX2h0dHBSZXNwb25zZUhlYWRlckxvY2F0aW9uOworICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorI2VuZGlmCisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAppbmRleCA1M2VkZWY3MGNjMTc0ZmU2Y2YwODY1
ZDZlZDk1NjNkNjVmZDc2ZmNlLi4yN2M5ZTM0YmNiM2Q0MDEyYmYxMWY4ZWM5ZDU3ODVhZjY2NjNi
ZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC03MCw2ICs3MSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFzSlNPTihTdHJpbmdCdWlsZGVy
JiwgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYpIGNvbnN0OwogCisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICBib29sIGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJj
ZUFnZUNhcCgpIGNvbnN0OworICAgIHZvaWQgcHJldmlvdXNFbnRyeUFscmVhZHlDYXBwZWQoKTsK
KyAgICB2b2lkIGNhcE1heEFnZShjb25zdCBTZWNvbmRzKTsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIHZvaWQgaW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3Q7CiAjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDggKzk1LDI1IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIFN0b3JhZ2U6OlJlY29yZCBtX3NvdXJjZVN0b3JhZ2VSZWNvcmQgeyB9Owor
ICAgIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBtX21heEFnZUNhcDsKKyNlbmRpZgogfTsKIAorI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitjbGFzcyBWZXJpZmljYXRpb25FbnRyeSB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgVmVyaWZpY2F0aW9uRW50cnkoY29uc3QgRW50cnkmKTsKKyAgICBWZXJp
ZmljYXRpb25FbnRyeSgpID0gZGVmYXVsdDsKKyAgICBib29sIGVxdWFsc0luQ2xpZW50RXhwb3Nl
ZERhdGEoY29uc3QgRW50cnkmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBib29sIG1faXNSZWRp
cmVjdGVkOworICAgIFN0cmluZyBtX2h0dHBSZXNwb25zZUhlYWRlckxvY2F0aW9uOworfTsKKyNl
bmRpZgorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCA3
YjQwYWIxMmQ5NzMwNmEwZTY5YzE4ZWE1MWZmYjE4YTA0ZTZhOWZiLi5iNjZhN2Y3ZGVmZWZiM2Q4
YmIwZTlkN2Q5MzFiZDMyNzc1NWQwY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291CiB7CiAgICAg
TE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIlNwZWN1bGF0aXZlIHJlZGly
ZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZWRp
cmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX2NhY2hl
RW50cnkgPSBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Us
IHJlZGlyZWN0UmVxdWVzdCk7CisgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmVSZWRp
cmVjdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpLCByZWRpcmVjdFJlcXVlc3QpOwogICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBj
YWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICBpZiAoIW1fY2FjaGVFbnRyeSkKICAg
ICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZVJlZGlyZWN0RW50cnkocmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0KTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAg
ICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9y
ZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBl
ZEJvZHkpIHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3Jp
Z2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9k
eSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdl
IGNhbid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVD
YWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKICAgICAgICAg
ICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwg
bV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCBjODEwZDEzNWMxYTk3M2U3YTA5YTY5MDU3OWI3YjhjMDA2MTk4MTdlLi40
M2QzNjhiNDNjZmYzOTNlNmU2NGE1ZmUxYTg4OWIxNGRiOTg2Zjc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHAKQEAgLTUwMCw3ICs1MDAsOCBAQCB2b2lkIFN0b3JhZ2U6OnJlYWRSZWNvcmQoUmVhZE9w
ZXJhdGlvbiYgcmVhZE9wZXJhdGlvbiwgY29uc3QgRGF0YSYgcmVjb3JkRGF0YSkKICAgICAgICAg
bWV0YURhdGEudGltZVN0YW1wLAogICAgICAgICBoZWFkZXJEYXRhLAogICAgICAgICBib2R5RGF0
YSwKLSAgICAgICAgbWV0YURhdGEuYm9keUhhc2gKKyAgICAgICAgbWV0YURhdGEuYm9keUhhc2gs
CisgICAgICAgIHsgfQogICAgIH0pOwogfQogCkBAIC05MzgsNyArOTM5LDggQEAgdm9pZCBTdG9y
YWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+
IGZsYWdzLCBUcmF2ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFEYXRhLnRpbWVTdGFt
cCwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckRhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICB7IH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtZXRhRGF0YS5ib2R5SGFzaAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWV0YURhdGEuYm9keUhhc2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICB7IH0KICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAg
ICAgUmVjb3JkSW5mbyBpbmZvIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHNpemVfdD4obWV0YURhdGEuYm9keVNpemUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCAwOWM4NzNi
YzhiOTE5ZmIzZTRiMTkwYzM3OTUwYWIzOTExZWRlNWJlLi4yNmFhZjYzMDQ5ZGFlZmM4M2EzYjc0
ZGRkOWYzYjFmZTIzYWJlYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaApAQCAtNTYsNiArNTYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIERhdGEgaGVhZGVyOwogICAgICAgICBEYXRhIGJvZHk7CiAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8U0hBMTo6RGlnZXN0PiBib2R5SGFzaDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBtYXhBZ2VDYXA7CiAKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXgg
N2I4ODkyMjk5NTM5ZGIzNGM1YjM5MTRkM2IyMTRjZThiODE0M2I5OC4uYmZkM2RlNGY4ZjllOTc1
ZGVhMGY0YmU4MjQwYmI0ZTk4Mjg1ZGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNl
c0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgZW5jb2Rlci5lbmNv
ZGVDaGVja3N1bSgpOwogCi0gICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCB7IGVuY29k
ZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpIH0sIHsgfSwgeyB9fTsKKyAgICByZXR1
cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZm
ZXJTaXplKCkgfSwgeyB9LCB7IH0sIHsgfSB9OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVz
b3VyY2VzRW50cnk+IFN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0
IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdiYmRlM2E3ODFhZTI0MDVi
NTA4Yjg5NTdlMzM5MmMyZTY1N2Y2NzYuLjdlMzYxY2E3Mjc2NjU5Yzc1NWZiN2MxMzBhZWExMGMy
N2RjOTliMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0xMC0yMiAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3Rp
Y3M6IFJlbW92ZSBjYXAgb24gcGFydGl0aW9uZWQgY2FjaGUgbWF4IGFnZSBpZiByZWxvYWRzIHJl
c3VsdCBpbiB0aGUgc2FtZSBieXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg5NzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDYxMjI0Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFs
ZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5o
dG1sOgorICAgICAgICAgICAgVGhlIHRlc3Qgbm93IHBlcmZvcm1zIGEgdGhpcmQgRmV0Y2ggcmVx
dWVzdCB0byB2ZXJpZnkgdGhhdCB0aGUgY2FjaGUgZW50cnkgaXMgYWNjZXB0ZWQKKyAgICAgICAg
ICAgIHRoZSBzZWNvbmQgdGltZS4KKwogMjAxOC0xMC0yMiAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZl
bGxAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjT1MgV0sxIF0gTGF5b3V0IFRlc3QgcGxhdGZv
cm0vbWFjL21lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnktdmlkZW8tcGF1c2VkLmh0bWwgaXMg
Zmxha3kgVGltZW91dCAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4
dAppbmRleCA2M2M2MDY5ZjY0MzY3NWQyMDFkZDYxMTg2ODczY2FkNTEwMDZlN2NiLi43NDI4ZGQw
MTg2MGNlZWQwYTIwNDAwYjIwY2I5ZGUwMDgzMWU0NmZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9y
LXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxl
bnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNyBAQCBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURQogCiBQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTEyMzQiCiBQ
QVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIKK1BBU1MgbG9hZGVkVXJsIGlz
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMv
ZWNoby1xdWVyeS5waHA/dmFsdWU9IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJj
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nh
cC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbAppbmRleCAwOGI4MmJi
ZmI1NDc1MDA1NzIxZGY4M2RhZjdkZDgzMmFmZGM4OTU1Li40MGQ0MTg3MGFlNDZmMjgzOWNjMjZj
ZDM3MmUwNDFlODJiYmVhMGZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNv
dXJjZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKQEAgLTM2
LDYgKzM2LDI0IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY2FjaGU6ICJmb3Jj
ZS1jYWNoZSIsCiAgICAgICAgICAgICB9CisgICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25z
ZSkgeworICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIp
OworICAgICAgICAgICAgdGhpcmRGZXRjaCgpOworICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihl
cnJvcikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJvci5tZXNzYWdlKTsKKyAgICAgICAg
ICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRoaXJkRmV0Y2goKSB7CisgICAgICAgIC8vIFRoaXMgc2hv
dWxkIHRyaWdnZXIgYSBzdWNjZXNzZnVsIGNhY2hlIGhpdC4KKyAgICAgICAgZmV0Y2goImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQt
cGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aGVhZGVyczogeworICAgICAgICAgICAgICAgICAgICAiWC1XZWJLaXQiOiAiNDMyMSIsCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICApLnRoZW4oZnVuY3Rpb24ocmVz
cG9uc2UpIHsKICAgICAgICAgICAgIGxvYWRlZFVybCA9IHJlc3BvbnNlLnVybDsKICAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibG9hZGVkVXJsIiwgImh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1
ZT0iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352939</attachid>
            <date>2018-10-22 17:54:17 -0700</date>
            <delta_ts>2018-10-23 12:22:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189760-20181022175416.patch</filename>
            <type>text/plain</type>
            <size>28389</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjMmY2ZDg2NmNjYmFlNThk
YWI0ZDUzNDg1YzMwNDEyNTBhZTczY2EuLjE4ZmQ3NDFlZjYyYTllZTgxYjI4NjYzYWViMGZjYTU5
MzYzNDhjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTgtMTAtMjIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBSZW1vdmUgY2FwIG9uIHBhcnRpdGlvbmVkIGNhY2hlIG1heCBhZ2UgaWYgcmVsb2Fk
cyByZXN1bHQgaW4gdGhlIHNhbWUgYnl0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQ2MTIy
NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbnRyb2R1Y2VzIGEgSGFzaE1hcCBtZW1iZXIgaW4gTmV0d29ya0NhY2hlLmggY2Fs
bGVkCisgICAgICAgIG1fZm9yY2VkUmVsb2FkRW50cmllcy4gV2hlbiBhIGNhY2hlIGVudHJ5IGZv
ciBhIHByZXZhbGVudCByZXNvdXJjZQorICAgICAgICByZWFjaGVzIGl0cyBtYXggYWdlIGNhcCBh
bmQgaXMgZGlzY2FyZGVkLCBhbiBlbnRyeSBpcyBjcmVhdGVkIGluCisgICAgICAgIG1fZm9yY2Vk
UmVsb2FkRW50cmllcyB3aXRoIHRoZSBlbnRyeS0+a2V5KCkuaWRlbnRpZmllcigpIGFzIGtleSBh
bmQgYQorICAgICAgICBOZXR3b3JrQ2FjaGU6OlZlcmlmaWNhdGlvbkVudHJ5IGFzIHZhbHVlLiBX
aGVuIHRoZSBjYWNoZSBpcyBhYm91dCB0bworICAgICAgICBzdG9yZSBhIG5ldyBjYWNoZSBlbnRy
eSwgdGhlIG1fZm9yY2VkUmVsb2FkRW50cmllcyBtYXAgaXMgY29uc3VsdGVkCisgICAgICAgIGFu
ZCBpZiBhIG1hdGNoaW5nIE5ldHdvcmtDYWNoZTo6VmVyaWZpY2F0aW9uRW50cnkgaXMgZm91bmQs
IGl0IGlzCisgICAgICAgIGNoZWNrZWQgYWdhaW5zdCB0aGUgbmV3IFJlc291cmNlUmVzcG9uc2Ug
dGhyb3VnaCB0aGUgCisgICAgICAgIGVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEoKSBmdW5jdGlv
bi4KKworICAgICAgICBDdXJyZW50bHksIGVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEoKSBvbmx5
IHN1cHBvcnRzIGNoZWNraW5nIHJlZGlyZWN0CisgICAgICAgIExvY2F0aW9uIGhlYWRlcnMuIFRo
ZSBpbnRlbnRpb24gaXMgdG8gZXhwYW5kIGl0IHRvIG90aGVyIGNsaWVudC1leHBvc2VkCisgICAg
ICAgIHJlc3BvbnNlIGRhdGEgdGhhdCB3ZSBjYXJlIGFib3V0LgorCisgICAgICAgIFRoaXMgZmVh
dHVyZSBpcyBzdGlsbCBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6bWFrZVVzZURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpDYWNoZTo6bWF4QWdlQ2FwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpDYWNoZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hl
OjpzdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlUmVk
aXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6Omhhc1JlYWNoZWRQcmV2YWxlbnRSZXNv
dXJjZUFnZUNhcCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVB
c1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVu
dHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6cHJldmlvdXNFbnRyeUFscmVhZHlDYXBw
ZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpjYXBNYXhBZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlZlcmlmaWNhdGlvbkVudHJ5OjpWZXJpZmlj
YXRpb25FbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6VmVyaWZpY2F0aW9u
RW50cnk6OmVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICAgICBtX21heEFn
ZUNhcCBpcyBvcHRpb25hbCB0byBzdXBwb3J0IGEgc2V0dGluZyBvZiAwIHNlY29uZHMgY2FwIGZv
ciB0ZXN0aW5nLgorICAgICAgICAgICAgc3RkOjpudWxsb3B0IG1lYW5zIG5vIGNhcCBhbmQgMCBt
ZWFucyBpbW1lZGlhdGUgZW50cnkgcmVtb3ZhbC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFk
UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJz
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKwogMjAxOC0xMC0xOSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBXZWJDb250ZW50
IHByb2Nlc3MgdG8gY2hlY2sgc29tZSBmaWxlIHN5c3RlbSBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGVjYzA0N2ZmNTJhOTg5ZThkYjM2OWIxZjExZjBjZGEyZTY5Njg2NGQuLjhlYmQxMjk4ZmJk
NDhiZDhlOWE4YzhiYmIyMzUxMjlmNzRlYmEwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIxNiw3ICsy
MTYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICBBU1NFUlQoY2FuVXNlQ2FjaGUocmVx
dWVzdCkpOwogCiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyKHRoaXMp
OwotICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVlc3QsIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwgc2Vzc2lvbklEKCksIFt0aGlzLCBsb2FkZXIg
PSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1d
KGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+cmV0cmlldmUo
cmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCB9LCBbdGhpcywgbG9hZGVyID0gV1RGTW92ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgewogICAg
ICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkgewogICAgICAgICAgICAgLy8gVGhlIGxvYWRl
ciBoYXMgYmVlbiBhYm9ydGVkIGFuZCBpcyBvbmx5IGhlbGQgYWxpdmUgYnkgdGhpcyBsYW1iZGEu
CiAgICAgICAgICAgICByZXR1cm47CkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwKICAgICArK21fcmVkaXJlY3RDb3VudDsKIAogICAgIGlmIChyZWRpcmVjdFJlc3Bv
bnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayAmJiBjYW5V
c2VDYWNoZWRSZWRpcmVjdChyZXF1ZXN0KSkKLSAgICAgICAgbV9jYWNoZS0+c3RvcmVSZWRpcmVj
dChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOworICAgICAgICBt
X2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHNlc3Npb25J
RCgpLCByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7
CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zdG9yZVJlZGlyZWN0aW9uSWZOZWVkZWQo
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoIW1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2FjaGUtPnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9i
dWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYgbWFw
cGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3Vy
cmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgc2Vzc2lvbklEKCksIFdURk1vdmUobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYgbWFwcGVkQm9k
eSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYg
KG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDYxYTRkZTVmNjM2Zjc2
YTM1NGZkZDg5ZWI4ODFmZWUwM2YyMDg1ZDEuLjBhODRjZmU5MGM0ZTg2MTUwMDU1NjZhNjBjYjQ2
NTgxNDBkMDhhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01NTIsNyArNTUy
LDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRp
b24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgewogICAgIH0pOwogCi0gICAgcmV0dXJuIHsgcmVjb3JkSW5mb3JtYXRpb24ua2V5LCB7
IH0sIGhlYWRlciwgYm9keSwgeyB9IH07CisgICAgcmV0dXJuIHsgcmVjb3JkSW5mb3JtYXRpb24u
a2V5LCB7IH0sIGhlYWRlciwgYm9keSwgeyB9LCB7IH0gfTsKIH0KIAogc3RkOjpvcHRpb25hbDxD
YWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRlY29kZVJlY29yZEhlYWRlcihjb25zdCBTdG9y
YWdlOjpSZWNvcmQmIHN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggYWM1ZWRmN2ZhNmM5ODJjZTljNGJhOThk
N2U2NjUwYjMwYWU1N2M1MC4uNjljODIwZjhkNWIxMDlhZTgxNGE3MWQ4ZTJkZTYxMzk0MWI5YmM3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcApAQCAtMTUyLDExICsxNTIsNiBAQCBzdGF0aWMgYm9vbCBjYWNoZVBvbGljeUFs
bG93c0V4cGlyZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5KQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgaGFzUmVhY2hlZFByZXZhbGVudFJl
c291cmNlQWdlQ2FwKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBX
YWxsVGltZSB0aW1lc3RhbXAsIGNvbnN0IFNlY29uZHMgbWF4QWdlKQotewotICAgIHJldHVybiBX
ZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgdGltZXN0YW1wKSA+IG1heEFnZTsK
LX0KLQogc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3RhbXAsIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gbWF4U3RhbGUpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRh
aW5zTm9DYWNoZSgpKQpAQCAtMTg4LDExICsxODMsMTMgQEAgc3RhdGljIGJvb2wgcmVzcG9uc2VO
ZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwKICAgICByZXR1cm4gcmVzcG9uc2VIYXNFeHBpcmVkKHJlc3BvbnNlLCB0aW1lc3RhbXAsIHJl
cXVlc3REaXJlY3RpdmVzLm1heFN0YWxlKTsKIH0KIAotc3RhdGljIFVzZURlY2lzaW9uIG1ha2VV
c2VEZWNpc2lvbihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2UpCitzdGF0aWMgVXNl
RGVjaXNpb24gbWFrZVVzZURlY2lzaW9uKGNvbnN0IEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChtYXhBZ2UgJiYgaGFzUmVh
Y2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKGVudHJ5LnJlc3BvbnNlKCksIGVudHJ5LnRpbWVT
dGFtcCgpLCBtYXhBZ2UudmFsdWUoKSkpCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKKyAgICBpZiAoZW50cnkuaGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkp
CiAgICAgICAgIHJldHVybiBVc2VEZWNpc2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdl
Q2FwOwotICAgIAorI2VuZGlmCisKICAgICAvLyBUaGUgcmVxdWVzdCBpcyBjb25kaXRpb25hbCBz
byB3ZSBmb3JjZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0d29yay4gV2UgbWVyZWx5IGNoZWNr
IHRoZSBkaXNrIGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVwZGF0ZSB0aGUgY2FjaGUgZW50cnku
CiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYmICFlbnRyeS5yZWRpcmVjdFJlcXVl
c3QoKSkKQEAgLTI3OSw3ICsyNzYsMjUgQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3Jl
RGVjaXNpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFIKICAgICBy
ZXR1cm4gU3RvcmVEZWNpc2lvbjo6WWVzOwogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGZyYW1lSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBDYWNoZTo6
bWF4QWdlQ2FwKEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBlbnRyeS5rZXkoKS5pZGVu
dGlmaWVyKCk7CisgICAgaWYgKG1fZm9yY2VkUmVsb2FkRW50cmllcy5jb250YWlucyhpZGVudGlm
aWVyKSkgeworICAgICAgICBhdXRvIHZlcmlmaWNhdGlvbkVudHJ5ID0gbV9mb3JjZWRSZWxvYWRF
bnRyaWVzLnRha2UoaWRlbnRpZmllcik7CisgICAgICAgIGlmICh2ZXJpZmljYXRpb25FbnRyeS5l
cXVhbHNJbkNsaWVudEV4cG9zZWREYXRhKGVudHJ5KSkgeworICAgICAgICAgICAgZW50cnkucHJl
dmlvdXNFbnRyeUFscmVhZHlDYXBwZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIHJldHVybiBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPm1heEFnZUNhY2hl
Q2FwKHJlcXVlc3QpOworI2VuZGlmCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9p
ZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKTsKIApAQCAtMzIzLDcgKzMzOCw3IEBAIHZvaWQgQ2FjaGU6OnJl
dHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xv
YmFsRnJhbWVJCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3Jh
Z2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBp
bmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRCwgc2Vzc2lvbklEXShhdXRv
IHJlY29yZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJldHJpZXZl
KHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRF0oYXV0byByZWNv
cmQsIGF1dG8gdGltaW5ncykgbXV0YWJsZSB7CiAgICAgICAgIGluZm8uc3RvcmFnZVRpbWluZ3Mg
PSB0aW1pbmdzOwogCiAgICAgICAgIGlmICghcmVjb3JkKSB7CkBAIC0zNDAsMTIgKzM1NSw3IEBA
IHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5Ojpk
ZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbWF4QWdlQ2FwOwotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgICAgIGlmIChhdXRvIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIG1h
eEFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4QWdlQ2FjaGVDYXAocmVxdWVzdCk7
Ci0jZW5kaWYKLSAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gbWFrZVVzZURlY2lz
aW9uKCplbnRyeSwgcmVxdWVzdCwgbWF4QWdlQ2FwKSA6IFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVj
b2RlRmFpbHVyZTsKKyAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gbWFrZVVzZURl
Y2lzaW9uKCplbnRyeSwgcmVxdWVzdCkgOiBVc2VEZWNpc2lvbjo6Tm9EdWVUb0RlY29kZUZhaWx1
cmU7CiAgICAgICAgIHN3aXRjaCAodXNlRGVjaXNpb24pIHsKICAgICAgICAgY2FzZSBVc2VEZWNp
c2lvbjo6VXNlOgogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTMsOCArMzYzLDEzIEBAIHZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgR2xvYmFsRnJhbWVJCiAgICAgICAgICAgICBlbnRyeS0+c2V0TmVlZHNWYWxpZGF0aW9u
KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVXNlRGVjaXNpb246Ok5v
RHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDoKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorICAgICAgICAgICAgbV9mb3JjZWRSZWxvYWRFbnRyaWVzLmFkZChlbnRyeS0+
a2V5KCkuaWRlbnRpZmllcigpLCBWZXJpZmljYXRpb25FbnRyeSgqZW50cnkpKTsKICAgICAgICAg
ICAgIGVudHJ5ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fc3RvcmFnZS0+cmVtb3ZlKHN0b3Jh
Z2VLZXkpOworI2Vsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGVudHJ5
ID0gbnVsbHB0cjsKQEAgLTM4OCw3ICs0MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwg
cmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0
SGVhZGVycyhyZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3Rv
cmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9p
ZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlc3Bv
bnNlRGF0YSk7CiAKQEAgLTQxMiw2ICs0MjcsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBD
YWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb24K
ICAgICB9CiAKICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlRW50cnkocmVxdWVzdCwgcmVzcG9u
c2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKKyAgICBpZiAoYXV0byBhZ2VDYXAgPSBtYXhBZ2VDYXAoKmNhY2hlRW50cnksIHJl
cXVlc3QsIHNlc3Npb25JRCkpCisgICAgICAgIGNhY2hlRW50cnktPmNhcE1heEFnZShhZ2VDYXAu
dmFsdWUoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSUQpOworI2VuZGlmCiAg
ICAgYXV0byByZWNvcmQgPSBjYWNoZUVudHJ5LT5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKIAog
ICAgIG1fc3RvcmFnZS0+c3RvcmUocmVjb3JkLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25z
dCBEYXRhJiBib2R5RGF0YSkgewpAQCAtNDMwLDcgKzQ1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uCiAgICAgcmV0dXJuIGNhY2hlRW50cnk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCitzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QpCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJv
Y2Vzcykgc3RvcmluZyByZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKIApAQCAtNDQ1LDYgKzQ2NiwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdQog
ICAgIH0KIAogICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VSZWRpcmVjdEVudHJ5KHJlcXVlc3Qs
IHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgaWYgKGF1dG8gYWdlQ2FwID0gbWF4QWdlQ2FwKCpjYWNoZUVudHJ5LCBy
ZXF1ZXN0LCBzZXNzaW9uSUQpKQorICAgICAgICBjYWNoZUVudHJ5LT5jYXBNYXhBZ2UoYWdlQ2Fw
LnZhbHVlKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKKyNlbmRpZgog
ICAgIGF1dG8gcmVjb3JkID0gY2FjaGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAK
ICAgICBtX3N0b3JhZ2UtPnN0b3JlKHJlY29yZCwgbnVsbHB0cik7CkBAIC02MjEsNyArNjQ4LDcg
QEAgdm9pZCBDYWNoZTo6cmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmIGRhdGFLZXksIEZ1bmN0
aW9uPHZvaWQgKGNvbnN0IHVpbnQ4X3QqIGQKIHZvaWQgQ2FjaGU6OnN0b3JlRGF0YShjb25zdCBE
YXRhS2V5JiBkYXRhS2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBLZXkga2V5IHsgZGF0YUtleSwgbV9zdG9yYWdlLT5zYWx0KCkgfTsKLSAgICBTdG9yYWdlOjpS
ZWNvcmQgcmVjb3JkIHsga2V5LCBXYWxsVGltZTo6bm93KCksIHsgfSwgRGF0YSB7IGRhdGEsIHNp
emUgfSwgeyB9IH07CisgICAgU3RvcmFnZTo6UmVjb3JkIHJlY29yZCB7IGtleSwgV2FsbFRpbWU6
Om5vdygpLCB7IH0sIERhdGEgeyBkYXRhLCBzaXplIH0sIHsgfSwgeyB9IH07CiAgICAgbV9zdG9y
YWdlLT5zdG9yZShyZWNvcmQsIHsgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGYxNWFkNmJkMGFkYzhjNzM1OGMx
YTk0OTk4MGQ4NDA5ZTYyODMzYTQuLmFiYzNmNGM4NDE4ZTNjOGEwYTM2ZWZiMGVjZTc4MTFjMzcy
Y2NiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTMsOSArMTE0LDkgQEAgcHVi
bGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5n
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCByZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUEFMOjpT
ZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKKyAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBSZXRyaWV2ZUNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlv
bjx2b2lkKE1hcHBlZEJvZHkmKT4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9y
ZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
dXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1l
SUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlk
YXRpbmdSZXNwb25zZSk7CiAKICAgICBzdHJ1Y3QgVHJhdmVyc2FsRW50cnkgewpAQCAtMTU2LDYg
KzE1Nyw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGR1bXBGaWxlUGF0aCgpIGNvbnN0OwogICAg
IHZvaWQgZGVsZXRlRHVtcEZpbGUoKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4
QWdlQ2FwKEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNz
aW9uSUQpOworCiAgICAgUmVmPFN0b3JhZ2U+IG1fc3RvcmFnZTsKIAogI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKQEAgLTE2NSw2ICsxNjgsMTAgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGlzdGljcz4gbV9zdGF0aXN0aWNzOwog
CiAgICAgdW5zaWduZWQgbV90cmF2ZXJzZUNvdW50IHsgMCB9OworICAgIAorI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgSGFzaE1hcDxTdHJpbmcsIFZlcmlmaWNhdGlv
bkVudHJ5PiBtX2ZvcmNlZFJlbG9hZEVudHJpZXM7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKaW5kZXggYWUxMTg4YWUzYWFkOGY4MmQ1ZmMwNjJmNWU0ZmY0NGVkMTFkZTZkMS4uZDY3
ZWM1OTdiZTQ5ZDA1MjIzNDMzZjJkMGZlMTY3Njk5Zjc1MGUzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
QEAgLTk3LDEyICs5NywyMSBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFn
ZVJlY29yZCgpIGNvbnN0CiAKICAgICBlbmNvZGVyLmVuY29kZUNoZWNrc3VtKCk7CiAKKyNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChtX21heEFnZUNhcCkKKyAg
ICAgICAgZW5jb2RlciA8PCBtX21heEFnZUNhcDsKKyNlbmRpZgorCiAgICAgRGF0YSBoZWFkZXIo
ZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsK
ICAgICBpZiAobV9idWZmZXIpCiAgICAgICAgIGJvZHkgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CiAKLSAg
ICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICByZXR1cm4geyBtX2tleSwgbV90
aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9LCBtX21heEFnZUNhcCB9OworI2Vsc2UKKyAgICBy
ZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9LCBzdGQ6Om51bGxv
cHQgfTsKKyNlbmRpZgogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVT
dG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQpAQCAtMTM4
LDkgKzE0NywzMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdl
UmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IC8vIE9wdGlvbmFsIG1heCBhZ2UgY2FwLgorICAgIGRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX21h
eEFnZUNhcCk7CisjZW5kaWYKKwogICAgIHJldHVybiBlbnRyeTsKIH0KIAorI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitib29sIEVudHJ5OjpoYXNSZWFjaGVkUHJldmFsZW50
UmVzb3VyY2VBZ2VDYXAoKSBjb25zdAoreworICAgIHJldHVybiBtX21heEFnZUNhcCAmJiBXZWJD
b3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSgpLCB0aW1lU3RhbXAoKSkgPiBtX21heEFn
ZUNhcDsKK30KKwordm9pZCBFbnRyeTo6cHJldmlvdXNFbnRyeUFscmVhZHlDYXBwZWQoKQorewor
ICAgIG1fbWF4QWdlQ2FwID0gc3RkOjpudWxsb3B0OworfQorCit2b2lkIEVudHJ5OjpjYXBNYXhB
Z2UoY29uc3QgU2Vjb25kcyBzZWNvbmRzKQoreworICAgIG1fbWF4QWdlQ2FwID0gc2Vjb25kczsK
K30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIHZvaWQgRW50cnk6
OmluaXRpYWxpemVTaGFyZWFibGVSZXNvdXJjZUhhbmRsZUZyb21TdG9yYWdlUmVjb3JkKCkgY29u
c3QKIHsKQEAgLTIzOSw1ICsyNzAsMjIgQEAgdm9pZCBFbnRyeTo6YXNKU09OKFN0cmluZ0J1aWxk
ZXImIGpzb24sIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mIGluZm8pIGNvbnN0CiAgICAganNv
bi5hcHBlbmRMaXRlcmFsKCJ9Iik7CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorVmVyaWZpY2F0aW9uRW50cnk6OlZlcmlmaWNhdGlvbkVudHJ5KGNvbnN0IEVudHJ5
JiBlbnRyeSkKKyAgICA6IG1faXNSZWRpcmVjdGVkKGVudHJ5LnJlc3BvbnNlKCkuaXNSZWRpcmVj
dGVkKCkpCit7CisgICAgaWYgKG1faXNSZWRpcmVjdGVkKQorICAgICAgICBtX2h0dHBSZXNwb25z
ZUhlYWRlckxvY2F0aW9uID0gZW50cnkucmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoV2ViQ29y
ZTo6SFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKTsKK30KKworYm9vbCBWZXJpZmljYXRpb25FbnRy
eTo6ZXF1YWxzSW5DbGllbnRFeHBvc2VkRGF0YShjb25zdCBFbnRyeSYgZW50cnkpIGNvbnN0Cit7
CisgICAgaWYgKG1faXNSZWRpcmVjdGVkKQorICAgICAgICByZXR1cm4gZW50cnkucmVzcG9uc2Uo
KS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKSA9PSBt
X2h0dHBSZXNwb25zZUhlYWRlckxvY2F0aW9uOworICAgIAorICAgIHJldHVybiB0cnVlOworfQor
I2VuZGlmCisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAppbmRleCA1M2VkZWY3MGNjMTc0ZmU2Y2YwODY1ZDZl
ZDk1NjNkNjVmZDc2ZmNlLi4yN2M5ZTM0YmNiM2Q0MDEyYmYxMWY4ZWM5ZDU3ODVhZjY2NjNiZGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03
MCw2ICs3MSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFzSlNPTihTdHJpbmdCdWlsZGVyJiwg
Y29uc3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYpIGNvbnN0OwogCisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBib29sIGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFn
ZUNhcCgpIGNvbnN0OworICAgIHZvaWQgcHJldmlvdXNFbnRyeUFscmVhZHlDYXBwZWQoKTsKKyAg
ICB2b2lkIGNhcE1heEFnZShjb25zdCBTZWNvbmRzKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3Q7CiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDggKzk1LDI1IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIFN0b3JhZ2U6OlJlY29yZCBtX3NvdXJjZVN0b3JhZ2VSZWNvcmQgeyB9OworICAg
IAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiBtX21heEFnZUNhcDsKKyNlbmRpZgogfTsKIAorI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCitjbGFzcyBWZXJpZmljYXRpb25FbnRyeSB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgVmVyaWZpY2F0aW9uRW50cnkoY29uc3QgRW50cnkmKTsKKyAgICBWZXJpZmlj
YXRpb25FbnRyeSgpID0gZGVmYXVsdDsKKyAgICBib29sIGVxdWFsc0luQ2xpZW50RXhwb3NlZERh
dGEoY29uc3QgRW50cnkmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBib29sIG1faXNSZWRpcmVj
dGVkOworICAgIFN0cmluZyBtX2h0dHBSZXNwb25zZUhlYWRlckxvY2F0aW9uOworfTsKKyNlbmRp
ZgorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCA3YjQw
YWIxMmQ5NzMwNmEwZTY5YzE4ZWE1MWZmYjE4YTA0ZTZhOWZiLi5iNjZhN2Y3ZGVmZWZiM2Q4YmIw
ZTlkN2Q5MzFiZDMyNzc1NWQwY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291CiB7CiAgICAgTE9H
KE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIlNwZWN1bGF0aXZlIHJlZGlyZWN0
ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZWRpcmVj
dFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX2NhY2hlRW50
cnkgPSBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJl
ZGlyZWN0UmVxdWVzdCk7CisgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmVSZWRpcmVj
dChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpLCByZWRpcmVjdFJlcXVlc3QpOwogICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNo
ZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICBpZiAoIW1fY2FjaGVFbnRyeSkKICAgICAg
ICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZVJlZGlyZWN0RW50cnkocmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0KTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJv
ZHkpIHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkg
eyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNh
bid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNo
ZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKICAgICAgICAgICAg
IG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9y
ZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCBjODEwZDEzNWMxYTk3M2U3YTA5YTY5MDU3OWI3YjhjMDA2MTk4MTdlLi40M2Qz
NjhiNDNjZmYzOTNlNmU2NGE1ZmUxYTg4OWIxNGRiOTg2Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5j
cHAKQEAgLTUwMCw3ICs1MDAsOCBAQCB2b2lkIFN0b3JhZ2U6OnJlYWRSZWNvcmQoUmVhZE9wZXJh
dGlvbiYgcmVhZE9wZXJhdGlvbiwgY29uc3QgRGF0YSYgcmVjb3JkRGF0YSkKICAgICAgICAgbWV0
YURhdGEudGltZVN0YW1wLAogICAgICAgICBoZWFkZXJEYXRhLAogICAgICAgICBib2R5RGF0YSwK
LSAgICAgICAgbWV0YURhdGEuYm9keUhhc2gKKyAgICAgICAgbWV0YURhdGEuYm9keUhhc2gsCisg
ICAgICAgIHsgfQogICAgIH0pOwogfQogCkBAIC05MzgsNyArOTM5LDggQEAgdm9pZCBTdG9yYWdl
Ojp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZs
YWdzLCBUcmF2ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFEYXRhLnRpbWVTdGFtcCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckRhdGEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICB7IH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtZXRhRGF0YS5ib2R5SGFzaAorICAg
ICAgICAgICAgICAgICAgICAgICAgbWV0YURhdGEuYm9keUhhc2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICB7IH0KICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAg
UmVjb3JkSW5mbyBpbmZvIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNp
emVfdD4obWV0YURhdGEuYm9keVNpemUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCAwOWM4NzNiYzhi
OTE5ZmIzZTRiMTkwYzM3OTUwYWIzOTExZWRlNWJlLi4yNmFhZjYzMDQ5ZGFlZmM4M2EzYjc0ZGRk
OWYzYjFmZTIzYWJlYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIERhdGEgaGVhZGVyOwogICAgICAgICBEYXRhIGJvZHk7CiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8U0hBMTo6RGlnZXN0PiBib2R5SGFzaDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiBtYXhBZ2VDYXA7CiAKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXggN2I4
ODkyMjk5NTM5ZGIzNGM1YjM5MTRkM2IyMTRjZThiODE0M2I5OC4uYmZkM2RlNGY4ZjllOTc1ZGVh
MGY0YmU4MjQwYmI0ZTk4Mjg1ZGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNF
bnRyeS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNlc0Vu
dHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgZW5jb2Rlci5lbmNvZGVD
aGVja3N1bSgpOwogCi0gICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCB7IGVuY29kZXIu
YnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpIH0sIHsgfSwgeyB9fTsKKyAgICByZXR1cm4g
eyBtX2tleSwgbV90aW1lU3RhbXAsIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJT
aXplKCkgfSwgeyB9LCB7IH0sIHsgfSB9OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3Vy
Y2VzRW50cnk+IFN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0
b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdiYmRlM2E3ODFhZTI0MDViNTA4
Yjg5NTdlMzM5MmMyZTY1N2Y2NzYuLjdlMzYxY2E3Mjc2NjU5Yzc1NWZiN2MxMzBhZWExMGMyN2Rj
OTliMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0xMC0yMiAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6
IFJlbW92ZSBjYXAgb24gcGFydGl0aW9uZWQgY2FjaGUgbWF4IGFnZSBpZiByZWxvYWRzIHJlc3Vs
dCBpbiB0aGUgc2FtZSBieXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg5NzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDYxMjI0Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50
LXJlc291cmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1s
OgorICAgICAgICAgICAgVGhlIHRlc3Qgbm93IHBlcmZvcm1zIGEgdGhpcmQgRmV0Y2ggcmVxdWVz
dCB0byB2ZXJpZnkgdGhhdCB0aGUgY2FjaGUgZW50cnkgaXMgYWNjZXB0ZWQKKyAgICAgICAgICAg
IHRoZSBzZWNvbmQgdGltZS4KKwogMjAxOC0xMC0yMiAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxA
YXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjT1MgV0sxIF0gTGF5b3V0IFRlc3QgcGxhdGZvcm0v
bWFjL21lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnktdmlkZW8tcGF1c2VkLmh0bWwgaXMgZmxh
a3kgVGltZW91dCAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dApp
bmRleCA2M2M2MDY5ZjY0MzY3NWQyMDFkZDYxMTg2ODczY2FkNTEwMDZlN2NiLi43NDI4ZGQwMTg2
MGNlZWQwYTIwNDAwYjIwY2I5ZGUwMDgzMWU0NmZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXBy
ZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQt
cmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURQogCiBQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTEyMzQiCiBQQVNT
IGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIKK1BBU1MgbG9hZGVkVXJsIGlzICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNo
by1xdWVyeS5waHA/dmFsdWU9IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1j
YWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbAppbmRleCAwOGI4MmJiZmI1
NDc1MDA1NzIxZGY4M2RhZjdkZDgzMmFmZGM4OTU1Li40MGQ0MTg3MGFlNDZmMjgzOWNjMjZjZDM3
MmUwNDFlODJiYmVhMGZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJj
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKQEAgLTM2LDYg
KzM2LDI0IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY2FjaGU6ICJmb3JjZS1j
YWNoZSIsCiAgICAgICAgICAgICB9CisgICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkg
eworICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIpOwor
ICAgICAgICAgICAgdGhpcmRGZXRjaCgpOworICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJv
cikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHRoaXJkRmV0Y2goKSB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxk
IHRyaWdnZXIgYSBzdWNjZXNzZnVsIGNhY2hlIGhpdC4KKyAgICAgICAgZmV0Y2goImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVy
bWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaGVh
ZGVyczogeworICAgICAgICAgICAgICAgICAgICAiWC1XZWJLaXQiOiAiNDMyMSIsCisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICApLnRoZW4oZnVuY3Rpb24ocmVzcG9u
c2UpIHsKICAgICAgICAgICAgIGxvYWRlZFVybCA9IHJlc3BvbnNlLnVybDsKICAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygibG9hZGVkVXJsIiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0i
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352987</attachid>
            <date>2018-10-23 12:22:08 -0700</date>
            <delta_ts>2018-11-02 17:07:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189760-20181023122207.patch</filename>
            <type>text/plain</type>
            <size>33186</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEwOGRlNzE3ZTI3YmU5
MTRmYzFjZGFjYjhlMTIxMDNlNThiYjA4Yy4uM2I4ZGE1MzQzZjRlNTIwMmEwZGFlYjRkOWQwODUx
MTE1YmY4NTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTEwLTIzICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIHJl
bG9hZHMgcmVzdWx0IGluIHRoZSBzYW1lIGJ5dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0
NjEyMjQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gRXhpc3RpbmcgdGVzdCBmbGVzaGVkIG91dC4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzUmVkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppc1JlZGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgICAgIE1vdmVkIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBmaWxlIHNvIHRoYXQgSSBj
YW4gZXhwb3J0IGl0IHdpdGhvdXQgd2FybmluZy4KKwogMjAxOC0xMC0yMiAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gQWRkIGp1c3RpZnkgdGV4
dC1hbGlnbiBzdXBwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYzJmNmQ4NjZjY2JhZTU4ZGFiNGQ1MzQ4NWMz
MDQxMjUwYWU3M2NhLi41NTEzMTdjMGZjZGYxMTQ2MmI4NDc3ZmJjMjQ4ODM3ODgwNDlkOGMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE4LTEwLTIzICBKb2huIFdpbGFuZGVyICA8d2ls
YW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogUmVt
b3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIHJlbG9hZHMgcmVzdWx0IGlu
IHRoZSBzYW1lIGJ5dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODk3NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0NjEyMjQyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50
cm9kdWNlcyBhIEhhc2hNYXAgbWVtYmVyIGluIE5ldHdvcmtDYWNoZS5oIGNhbGxlZAorICAgICAg
ICBtX2ZvcmNlZFJlbG9hZEVudHJpZXMuIFdoZW4gYSBjYWNoZSBlbnRyeSBmb3IgYSBwcmV2YWxl
bnQgcmVzb3VyY2UKKyAgICAgICAgcmVhY2hlcyBpdHMgbWF4IGFnZSBjYXAgYW5kIGlzIGRpc2Nh
cmRlZCwgYW4gZW50cnkgaXMgY3JlYXRlZCBpbgorICAgICAgICBtX2ZvcmNlZFJlbG9hZEVudHJp
ZXMgd2l0aCB0aGUgZW50cnktPmtleSgpLmlkZW50aWZpZXIoKSBhcyBrZXkgYW5kIGEKKyAgICAg
ICAgTmV0d29ya0NhY2hlOjpWZXJpZmljYXRpb25FbnRyeSBhcyB2YWx1ZS4gV2hlbiB0aGUgY2Fj
aGUgaXMgYWJvdXQgdG8KKyAgICAgICAgc3RvcmUgYSBuZXcgY2FjaGUgZW50cnksIHRoZSBtX2Zv
cmNlZFJlbG9hZEVudHJpZXMgbWFwIGlzIGNvbnN1bHRlZAorICAgICAgICBhbmQgaWYgYSBtYXRj
aGluZyBOZXR3b3JrQ2FjaGU6OlZlcmlmaWNhdGlvbkVudHJ5IGlzIGZvdW5kLCBpdCBpcworICAg
ICAgICBjaGVja2VkIGFnYWluc3QgdGhlIG5ldyBSZXNvdXJjZVJlc3BvbnNlIHRocm91Z2ggdGhl
IAorICAgICAgICBlcXVhbHNJbkNsaWVudEV4cG9zZWREYXRhKCkgZnVuY3Rpb24uCisKKyAgICAg
ICAgQ3VycmVudGx5LCBlcXVhbHNJbkNsaWVudEV4cG9zZWREYXRhKCkgb25seSBzdXBwb3J0cyBj
aGVja2luZyByZWRpcmVjdAorICAgICAgICBMb2NhdGlvbiBoZWFkZXJzLiBUaGUgaW50ZW50aW9u
IGlzIHRvIGV4cGFuZCBpdCB0byBvdGhlciBjbGllbnQtZXhwb3NlZAorICAgICAgICByZXNwb25z
ZSBkYXRhIHRoYXQgd2UgY2FyZSBhYm91dC4KKworICAgICAgICBUaGlzIGZlYXR1cmUgaXMgc3Rp
bGwgb2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6Om1ha2VVc2VEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2Fj
aGU6Om1heEFnZUNhcCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnJl
dHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6c3RvcmUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZVJlZGlyZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6c3RvcmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpoYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVj
b3JkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZGVjb2Rl
U3RvcmFnZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6Omhh
c1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6RW50cnk6OnByZXZpb3VzRW50cnlBbHJlYWR5Q2FwcGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6Y2FwTWF4QWdlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpWZXJpZmljYXRpb25FbnRyeTo6VmVyaWZpY2F0aW9uRW50cnkp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlZlcmlmaWNhdGlvbkVudHJ5OjplcXVh
bHNJbkNsaWVudEV4cG9zZWREYXRhIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAgICAgbV9tYXhBZ2VDYXAgaXMgb3B0
aW9uYWwgdG8gc3VwcG9ydCBhIHNldHRpbmcgb2YgMCBzZWNvbmRzIGNhcCBmb3IgdGVzdGluZy4K
KyAgICAgICAgICAgIHN0ZDo6bnVsbG9wdCBtZWFucyBubyBjYXAgYW5kIDAgbWVhbnMgaW1tZWRp
YXRlIGVudHJ5IHJlbW92YWwuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmVhZFJlY29yZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VzRW50cnk6OmVuY29k
ZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisKIDIwMTgtMTAtMTkgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgV2ViQ29udGVudCBwcm9jZXNzIHRv
IGNoZWNrIHNvbWUgZmlsZSBzeXN0ZW0gZmVhdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggYWI3
YjJlMWRkNDA5ODFmOGYwZjU0MWM1ZmM4OGQzOWVlNjdlZTNjMy4uNWEzMjI4ZmY2ZTY2MzY2NWU2
MGVlZThjOTRmZGViODU1MzhhODBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTI5Niw3ICsyOTYs
MTIgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c0NvZGUoaW50IHN0
YXR1c0NvZGUpCiAgICAgLy8gRklYTUU6IFNob3VsZCBpbnZhbGlkYXRlIG9yIHVwZGF0ZSBwbGF0
Zm9ybSByZXNwb25zZSBpZiBwcmVzZW50LgogfQogCi1jb25zdCBTdHJpbmcmIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpodHRwU3RhdHVzVGV4dCgpIGNvbnN0IAorYm9vbCBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6aXNSZWRpcmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzUmVkaXJlY3Rpb25T
dGF0dXNDb2RlKG1faHR0cFN0YXR1c0NvZGUpOworfQorCitjb25zdCBTdHJpbmcmIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpodHRwU3RhdHVzVGV4dCgpIGNvbnN0CiB7CiAgICAgbGF6eUluaXQoQWxs
RmllbGRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IGQ4ZmNjMTQzMWI1MGJjN2FiNjdmMWQxOTY4Yjkx
Y2U3MGVhMTYxZWYuLjZmY2E2Yjc1MWY1N2YwODFmNDNhMTM0M2IyZTUxNTBjZTJmZDYyMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgaW50IGh0dHBTdGF0dXNDb2RlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRIVFRQU3RhdHVzQ29kZShpbnQpOwotICAgIGJvb2wgaXNSZWRpcmVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGlzUmVkaXJlY3Rpb25TdGF0dXNDb2RlKG1faHR0cFN0YXR1c0NvZGUpOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlZGlyZWN0aW9uKCkgY29uc3Q7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBTdHJpbmcmIGh0dHBTdGF0dXNUZXh0KCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRIVFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCBlY2MwNDdmZjUyYTk4OWU4ZGIzNjliMWYxMWYwY2RhMmU2OTY4NjRkLi44ZWJkMTI5
OGZiZDQ4YmQ4ZTlhOGM4YmJiMjM1MTI5Zjc0ZWJhMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMTYs
NyArMjE2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRy
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKGNhblVzZUNhY2hl
KHJlcXVlc3QpKTsKIAogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGxvYWRlcih0
aGlzKTsKLSAgICBtX2NhY2hlLT5yZXRyaWV2ZShyZXF1ZXN0LCB7IG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEIH0sIHNlc3Npb25JRCgpLCBbdGhpcywgbG9h
ZGVyID0gV1RGTW92ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVz
dCB9XShhdXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgeworICAgIG1fY2FjaGUtPnJldHJp
ZXZlKHJlcXVlc3QsIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQgfSwgW3RoaXMsIGxvYWRlciA9IFdURk1vdmUobG9hZGVyKSwgcmVxdWVzdCA9IFJlc291
cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0byBlbnRyeSwgYXV0byBpbmZvKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGxvYWRlci0+aGFzT25lUmVmKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBs
b2FkZXIgaGFzIGJlZW4gYWJvcnRlZCBhbmQgaXMgb25seSBoZWxkIGFsaXZlIGJ5IHRoaXMgbGFt
YmRhLgogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTg5LDcgKzU4OSw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsCiAgICAgKyttX3JlZGlyZWN0Q291bnQ7CiAKICAgICBpZiAocmVkaXJlY3RS
ZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmsgJiYg
Y2FuVXNlQ2FjaGVkUmVkaXJlY3QocmVxdWVzdCkpCi0gICAgICAgIG1fY2FjaGUtPnN0b3JlUmVk
aXJlY3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0KTsKKyAgICAg
ICAgbV9jYWNoZS0+c3RvcmVSZWRpcmVjdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBzZXNz
aW9uSUQoKSwgcmVkaXJlY3RSZXF1ZXN0KTsKIAogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tl
cikgewogICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c3RvcmVSZWRpcmVjdGlvbklmTmVl
ZGVkKHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwpAQCAtNzY1LDcgKzc2NSw3IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKCFt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NhY2hlLT5z
dG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBXVEZNb3Zl
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gbWFrZVJlZigqdGhpcyldKGF1dG8m
IG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQt
PmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIHNlc3Npb25JRCgpLCBXVEZNb3ZlKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gbWFrZVJlZigqdGhpcyldKGF1dG8mIG1hcHBl
ZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAg
IGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2MWE0ZGU1ZjYz
NmY3NmEzNTRmZGQ4OWViODgxZmVlMDNmMjA4NWQxLi4wYTg0Y2ZlOTBjNGU4NjE1MDA1NTY2YTYw
Y2I0NjU4MTQwZDA4YWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTUyLDcg
KzU1Miw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9y
bWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICB9LCBbXShjb25zdCBzdGQ6Om51
bGxwdHJfdCYpIHsKICAgICB9KTsKIAotICAgIHJldHVybiB7IHJlY29yZEluZm9ybWF0aW9uLmtl
eSwgeyB9LCBoZWFkZXIsIGJvZHksIHsgfSB9OworICAgIHJldHVybiB7IHJlY29yZEluZm9ybWF0
aW9uLmtleSwgeyB9LCBoZWFkZXIsIGJvZHksIHsgfSwgeyB9IH07CiB9CiAKIHN0ZDo6b3B0aW9u
YWw8Q2FjaGU6OkRlY29kZWRSZWNvcmQ+IENhY2hlOjpkZWNvZGVSZWNvcmRIZWFkZXIoY29uc3Qg
U3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IGFjNWVkZjdmYTZjOTgyY2U5YzRi
YTk4ZDdlNjY1MGIzMGFlNTdjNTAuLjY5YzgyMGY4ZDViMTA5YWU4MTRhNzFkOGUyZGU2MTM5NDFi
OWJjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKQEAgLTE1MiwxMSArMTUyLDYgQEAgc3RhdGljIGJvb2wgY2FjaGVQb2xp
Y3lBbGxvd3NFeHBpcmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGlj
eSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGhhc1JlYWNoZWRQcmV2YWxl
bnRSZXNvdXJjZUFnZUNhcChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgV2FsbFRpbWUgdGltZXN0YW1wLCBjb25zdCBTZWNvbmRzIG1heEFnZSkKLXsKLSAgICByZXR1
cm4gV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UsIHRpbWVzdGFtcCkgPiBtYXhB
Z2U7Ci19Ci0KIHN0YXRpYyBib29sIHJlc3BvbnNlSGFzRXhwaXJlZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgV2FsbFRpbWUgdGltZXN0YW1wLCBzdGQ6Om9wdGlv
bmFsPFNlY29uZHM+IG1heFN0YWxlKQogewogICAgIGlmIChyZXNwb25zZS5jYWNoZUNvbnRyb2xD
b250YWluc05vQ2FjaGUoKSkKQEAgLTE4OCwxMSArMTgzLDEzIEBAIHN0YXRpYyBib29sIHJlc3Bv
bnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsCiAgICAgcmV0dXJuIHJlc3BvbnNlSGFzRXhwaXJlZChyZXNwb25zZSwgdGltZXN0YW1w
LCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFsZSk7CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lvbiBt
YWtlVXNlRGVjaXNpb24oY29uc3QgRW50cnkmIGVudHJ5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlKQorc3RhdGlj
IFVzZURlY2lzaW9uIG1ha2VVc2VEZWNpc2lvbihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAobWF4QWdlICYmIGhh
c1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcChlbnRyeS5yZXNwb25zZSgpLCBlbnRyeS50
aW1lU3RhbXAoKSwgbWF4QWdlLnZhbHVlKCkpKQorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgaWYgKGVudHJ5Lmhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNh
cCgpKQogICAgICAgICByZXR1cm4gVXNlRGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJj
ZUFnZUNhcDsKLSAgICAKKyNlbmRpZgorCiAgICAgLy8gVGhlIHJlcXVlc3QgaXMgY29uZGl0aW9u
YWwgc28gd2UgZm9yY2UgcmV2YWxpZGF0aW9uIGZyb20gdGhlIG5ldHdvcmsuIFdlIG1lcmVseSBj
aGVjayB0aGUgZGlzayBjYWNoZQogICAgIC8vIHNvIHdlIGNhbiB1cGRhdGUgdGhlIGNhY2hlIGVu
dHJ5LgogICAgIGlmIChyZXF1ZXN0LmlzQ29uZGl0aW9uYWwoKSAmJiAhZW50cnkucmVkaXJlY3RS
ZXF1ZXN0KCkpCkBAIC0yNzksNyArMjc2LDI1IEBAIHN0YXRpYyBTdG9yZURlY2lzaW9uIG1ha2VT
dG9yZURlY2lzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSCiAg
ICAgcmV0dXJuIFN0b3JlRGVjaXNpb246OlllczsKIH0KIAotdm9pZCBDYWNoZTo6cmV0cmlldmUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFt
ZUlEJiBmcmFtZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gQ2Fj
aGU6Om1heEFnZUNhcChFbnRyeSYgZW50cnksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgYXV0byBpZGVudGlmaWVyID0gZW50cnkua2V5KCku
aWRlbnRpZmllcigpOworICAgIGlmIChtX2ZvcmNlZFJlbG9hZEVudHJpZXMuY29udGFpbnMoaWRl
bnRpZmllcikpIHsKKyAgICAgICAgYXV0byB2ZXJpZmljYXRpb25FbnRyeSA9IG1fZm9yY2VkUmVs
b2FkRW50cmllcy50YWtlKGlkZW50aWZpZXIpOworICAgICAgICBpZiAodmVyaWZpY2F0aW9uRW50
cnkuZXF1YWxzSW5DbGllbnRFeHBvc2VkRGF0YShlbnRyeSkpIHsKKyAgICAgICAgICAgIGVudHJ5
LnByZXZpb3VzRW50cnlBbHJlYWR5Q2FwcGVkKCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG8gbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQorICAgICAgICByZXR1cm4gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5tYXhBZ2VD
YWNoZUNhcChyZXF1ZXN0KTsKKyNlbmRpZgorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisK
K3ZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgUmV0cmlldmVDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXF1ZXN0LnVybCgpLnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAKQEAgLTMyMyw3ICszMzgsNyBAQCB2b2lkIENhY2hl
OjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IEdsb2JhbEZyYW1lSQogICAgIH0KICNlbmRpZgogCi0gICAgbV9zdG9yYWdlLT5yZXRyaWV2ZShz
dG9yYWdlS2V5LCBwcmlvcml0eSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgaW5mbyA9IFdURk1vdmUoaW5mbyksIHN0b3JhZ2VLZXksIGZyYW1lSUQsIHNlc3Npb25JRF0o
YXV0byByZWNvcmQsIGF1dG8gdGltaW5ncykgbXV0YWJsZSB7CisgICAgbV9zdG9yYWdlLT5yZXRy
aWV2ZShzdG9yYWdlS2V5LCBwcmlvcml0eSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgaW5mbyA9IFdURk1vdmUoaW5mbyksIHN0b3JhZ2VLZXksIGZyYW1lSURdKGF1dG8g
cmVjb3JkLCBhdXRvIHRpbWluZ3MpIG11dGFibGUgewogICAgICAgICBpbmZvLnN0b3JhZ2VUaW1p
bmdzID0gdGltaW5nczsKIAogICAgICAgICBpZiAoIXJlY29yZCkgewpAQCAtMzQwLDEyICszNTUs
NyBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSQogCiAgICAgICAgIGF1dG8gZW50cnkgPSBFbnRy
eTo6ZGVjb2RlU3RvcmFnZVJlY29yZCgqcmVjb3JkKTsKIAotICAgICAgICBzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+IG1heEFnZUNhcDsKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgICAgICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgICAg
ICBtYXhBZ2VDYXAgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPm1heEFnZUNhY2hlQ2FwKHJlcXVl
c3QpOwotI2VuZGlmCi0gICAgICAgIGF1dG8gdXNlRGVjaXNpb24gPSBlbnRyeSA/IG1ha2VVc2VE
ZWNpc2lvbigqZW50cnksIHJlcXVlc3QsIG1heEFnZUNhcCkgOiBVc2VEZWNpc2lvbjo6Tm9EdWVU
b0RlY29kZUZhaWx1cmU7CisgICAgICAgIGF1dG8gdXNlRGVjaXNpb24gPSBlbnRyeSA/IG1ha2VV
c2VEZWNpc2lvbigqZW50cnksIHJlcXVlc3QpIDogVXNlRGVjaXNpb246Ok5vRHVlVG9EZWNvZGVG
YWlsdXJlOwogICAgICAgICBzd2l0Y2ggKHVzZURlY2lzaW9uKSB7CiAgICAgICAgIGNhc2UgVXNl
RGVjaXNpb246OlVzZToKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzUzLDggKzM2MywxMyBAQCB2
b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IEdsb2JhbEZyYW1lSQogICAgICAgICAgICAgZW50cnktPnNldE5lZWRzVmFsaWRh
dGlvbih0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFVzZURlY2lzaW9u
OjpOb0R1ZVRvUHJldmFsZW50UmVzb3VyY2VBZ2VDYXA6CisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKKyAgICAgICAgICAgIG1fZm9yY2VkUmVsb2FkRW50cmllcy5hZGQoZW50
cnktPmtleSgpLmlkZW50aWZpZXIoKSwgVmVyaWZpY2F0aW9uRW50cnkoKmVudHJ5KSk7CiAgICAg
ICAgICAgICBlbnRyeSA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX3N0b3JhZ2UtPnJlbW92ZShz
dG9yYWdlS2V5KTsKKyNlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNl
bmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBl
bnRyeSA9IG51bGxwdHI7CkBAIC0zODgsNyArNDAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JgogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVz
dCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVx
dWVzdEhlYWRlcnMocmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQgKE1hcHBlZEJv
ZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6
OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9u
PHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChy
ZXNwb25zZURhdGEpOwogCkBAIC00MTIsNiArNDI3LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uCiAgICAgfQogCiAgICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZUVudHJ5KHJlcXVlc3QsIHJl
c3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSkpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCisgICAgaWYgKGF1dG8gYWdlQ2FwID0gbWF4QWdlQ2FwKCpjYWNoZUVudHJ5
LCByZXF1ZXN0LCBzZXNzaW9uSUQpKQorICAgICAgICBjYWNoZUVudHJ5LT5jYXBNYXhBZ2UoYWdl
Q2FwLnZhbHVlKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKKyNlbmRp
ZgogICAgIGF1dG8gcmVjb3JkID0gY2FjaGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7
CiAKICAgICBtX3N0b3JhZ2UtPnN0b3JlKHJlY29yZCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Y29uc3QgRGF0YSYgYm9keURhdGEpIHsKQEAgLTQzMCw3ICs0NTEsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbgogICAgIHJldHVybiBjYWNoZUVudHJ5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQorc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQogewogICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29y
a1Byb2Nlc3MpIHN0b3JpbmcgcmVkaXJlY3QgJXMgLT4gJXMiLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGlu
MSgpLmRhdGEoKSk7CiAKQEAgLTQ0NSw2ICs0NjYsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXUKICAgICB9CiAKICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlUmVkaXJlY3RFbnRyeShyZXF1
ZXN0LCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0KTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIGlmIChhdXRvIGFnZUNhcCA9IG1heEFnZUNhcCgqY2FjaGVFbnRy
eSwgcmVxdWVzdCwgc2Vzc2lvbklEKSkKKyAgICAgICAgY2FjaGVFbnRyeS0+Y2FwTWF4QWdlKGFn
ZUNhcC52YWx1ZSgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlc3Npb25JRCk7CisjZW5k
aWYKICAgICBhdXRvIHJlY29yZCA9IGNhY2hlRW50cnktPmVuY29kZUFzU3RvcmFnZVJlY29yZCgp
OwogCiAgICAgbV9zdG9yYWdlLT5zdG9yZShyZWNvcmQsIG51bGxwdHIpOwpAQCAtNjIxLDcgKzY0
OCw3IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiBkYXRhS2V5LCBG
dW5jdGlvbjx2b2lkIChjb25zdCB1aW50OF90KiBkCiB2b2lkIENhY2hlOjpzdG9yZURhdGEoY29u
c3QgRGF0YUtleSYgZGF0YUtleSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgS2V5IGtleSB7IGRhdGFLZXksIG1fc3RvcmFnZS0+c2FsdCgpIH07Ci0gICAgU3RvcmFn
ZTo6UmVjb3JkIHJlY29yZCB7IGtleSwgV2FsbFRpbWU6Om5vdygpLCB7IH0sIERhdGEgeyBkYXRh
LCBzaXplIH0sIHsgfSB9OworICAgIFN0b3JhZ2U6OlJlY29yZCByZWNvcmQgeyBrZXksIFdhbGxU
aW1lOjpub3coKSwgeyB9LCBEYXRhIHsgZGF0YSwgc2l6ZSB9LCB7IH0sIHsgfSB9OwogICAgIG1f
c3RvcmFnZS0+c3RvcmUocmVjb3JkLCB7IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCBmMTVhZDZiZDBhZGM4Yzcz
NThjMWE5NDk5ODBkODQwOWU2MjgzM2E0Li5hYmMzZjRjODQxOGUzYzhhMGEzNmVmYjBlY2U3ODEx
YzM3MmNjYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEzLDkgKzExNCw5IEBA
IHB1YmxpYzoKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgfTsKICAgICB1
c2luZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+OwotICAgIHZvaWQgcmV0cmlldmUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIFBB
TDo6U2Vzc2lvbklELCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIEZ1bmN0aW9uPHZvaWQgKE1hcHBlZEJvZHkmKT4mJik7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CisgICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUmV0cmlldmVDb21w
bGV0aW9uSGFuZGxlciYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgRnVu
Y3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxG
cmFtZUlEJiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiB2
YWxpZGF0aW5nUmVzcG9uc2UpOwogCiAgICAgc3RydWN0IFRyYXZlcnNhbEVudHJ5IHsKQEAgLTE1
Niw2ICsxNTcsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBkdW1wRmlsZVBhdGgoKSBjb25zdDsK
ICAgICB2b2lkIGRlbGV0ZUR1bXBGaWxlKCk7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+
IG1heEFnZUNhcChFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBBTDo6
U2Vzc2lvbklEKTsKKwogICAgIFJlZjxTdG9yYWdlPiBtX3N0b3JhZ2U7CiAKICNpZiBFTkFCTEUo
TkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCkBAIC0xNjUsNiArMTY4LDEw
IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRpc3RpY3M+IG1fc3RhdGlzdGlj
czsKIAogICAgIHVuc2lnbmVkIG1fdHJhdmVyc2VDb3VudCB7IDAgfTsKKyAgICAKKyNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIEhhc2hNYXA8U3RyaW5nLCBWZXJpZmlj
YXRpb25FbnRyeT4gbV9mb3JjZWRSZWxvYWRFbnRyaWVzOworI2VuZGlmCiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCmluZGV4IGFlMTE4OGFlM2FhZDhmODJkNWZjMDYyZjVlNGZmNDRlZDExZGU2ZDEu
LjI0MTdhMDExYThhM2EwYjc5ZjliYmM1MGFmMTI4NWYzNWFiYmZkNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCkBAIC05NywxMiArOTcsMjEgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0
b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgZW5jb2Rlci5lbmNvZGVDaGVja3N1bSgpOwogCisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBpZiAobV9tYXhBZ2VDYXAp
CisgICAgICAgIGVuY29kZXIgPDwgbV9tYXhBZ2VDYXA7CisjZW5kaWYKKwogICAgIERhdGEgaGVh
ZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJv
ZHk7CiAgICAgaWYgKG1fYnVmZmVyKQogICAgICAgICBib2R5ID0geyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihtX2J1ZmZlci0+ZGF0YSgpKSwgbV9idWZmZXItPnNpemUoKSB9Owog
Ci0gICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9Owor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgcmV0dXJuIHsgbV9rZXks
IG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSwgbV9tYXhBZ2VDYXAgfTsKKyNlbHNlCisg
ICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSwgc3RkOjpu
dWxsb3B0IH07CisjZW5kaWYKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVj
b2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRyeSkKQEAg
LTEzOCw5ICsxNDcsMzEgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
KyAgICAvLyBPcHRpb25hbCBtYXggYWdlIGNhcC4KKyAgICBkZWNvZGVyLmRlY29kZShlbnRyeS0+
bV9tYXhBZ2VDYXApOworI2VuZGlmCisKICAgICByZXR1cm4gZW50cnk7CiB9CiAKKyNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorYm9vbCBFbnRyeTo6aGFzUmVhY2hlZFByZXZh
bGVudFJlc291cmNlQWdlQ2FwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXhBZ2VDYXAgJiYg
V2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UoKSwgdGltZVN0YW1wKCkpID4gbV9t
YXhBZ2VDYXA7Cit9CisKK3ZvaWQgRW50cnk6OnByZXZpb3VzRW50cnlBbHJlYWR5Q2FwcGVkKCkK
K3sKKyAgICBtX21heEFnZUNhcCA9IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBFbnRyeTo6Y2Fw
TWF4QWdlKGNvbnN0IFNlY29uZHMgc2Vjb25kcykKK3sKKyAgICBtX21heEFnZUNhcCA9IHNlY29u
ZHM7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiB2b2lkIEVu
dHJ5Ojppbml0aWFsaXplU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGVGcm9tU3RvcmFnZVJlY29yZCgp
IGNvbnN0CiB7CkBAIC0yMzksNSArMjcwLDI1IEBAIHZvaWQgRW50cnk6OmFzSlNPTihTdHJpbmdC
dWlsZGVyJiBqc29uLCBjb25zdCBTdG9yYWdlOjpSZWNvcmRJbmZvJiBpbmZvKSBjb25zdAogICAg
IGpzb24uYXBwZW5kTGl0ZXJhbCgifSIpOwogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKK1ZlcmlmaWNhdGlvbkVudHJ5OjpWZXJpZmljYXRpb25FbnRyeShjb25zdCBF
bnRyeSYgZW50cnkpCisgICAgOiBtX2lzUmVkaXJlY3Rpb24oZW50cnkucmVzcG9uc2UoKS5pc1Jl
ZGlyZWN0aW9uKCkpCit7CisgICAgaWYgKG1faXNSZWRpcmVjdGlvbikKKyAgICAgICAgbV9odHRw
UmVzcG9uc2VIZWFkZXJMb2NhdGlvbiA9IGVudHJ5LnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxk
KFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbik7Cit9CisKK2Jvb2wgVmVyaWZpY2F0
aW9uRW50cnk6OmVxdWFsc0luQ2xpZW50RXhwb3NlZERhdGEoY29uc3QgRW50cnkmIGVudHJ5KSBj
b25zdAoreworICAgIGlmIChtX2lzUmVkaXJlY3Rpb24gIT0gZW50cnkucmVzcG9uc2UoKS5pc1Jl
ZGlyZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2lzUmVkaXJl
Y3Rpb24pCisgICAgICAgIHJldHVybiBlbnRyeS5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChX
ZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pID09IG1faHR0cFJlc3BvbnNlSGVhZGVy
TG9jYXRpb247CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVF
bnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVF
bnRyeS5oCmluZGV4IDUzZWRlZjcwY2MxNzRmZTZjZjA4NjVkNmVkOTU2M2Q2NWZkNzZmY2UuLmQw
ZDNhYWI3NmJjYWQzYzIwMTIwMzdiMDhkMmQwZDNkMGRhN2YxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDYgKzcxLDEyIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYXNKU09OKFN0cmluZ0J1aWxkZXImLCBjb25zdCBTdG9yYWdlOjpSZWNv
cmRJbmZvJikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIGJvb2wgaGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkgY29uc3Q7CisgICAg
dm9pZCBwcmV2aW91c0VudHJ5QWxyZWFkeUNhcHBlZCgpOworICAgIHZvaWQgY2FwTWF4QWdlKGNv
bnN0IFNlY29uZHMpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplQnVm
ZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdDsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09V
UkNFKQpAQCAtODgsOCArOTUsMjUgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RvcmFnZTo6
UmVjb3JkIG1fc291cmNlU3RvcmFnZVJlY29yZCB7IH07CisgICAgCisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fbWF4QWdl
Q2FwOworI2VuZGlmCiB9OwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
K2NsYXNzIFZlcmlmaWNhdGlvbkVudHJ5IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBWZXJpZmlj
YXRpb25FbnRyeShjb25zdCBFbnRyeSYpOworICAgIFZlcmlmaWNhdGlvbkVudHJ5KCkgPSBkZWZh
dWx0OworICAgIGJvb2wgZXF1YWxzSW5DbGllbnRFeHBvc2VkRGF0YShjb25zdCBFbnRyeSYpIGNv
bnN0OworCitwcml2YXRlOgorICAgIGJvb2wgbV9pc1JlZGlyZWN0aW9uOworICAgIFN0cmluZyBt
X2h0dHBSZXNwb25zZUhlYWRlckxvY2F0aW9uOworfTsKKyNlbmRpZgorCiB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCA3YjQwYWIxMmQ5NzMwNmEwZTY5YzE4
ZWE1MWZmYjE4YTA0ZTZhOWZiLi5iNjZhN2Y3ZGVmZWZiM2Q4YmIwZTlkN2Q5MzFiZDMyNzc1NWQw
Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC03MSw3ICs3MSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291CiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlUHJlbG9hZGluZywgIlNwZWN1bGF0aXZlIHJlZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVz
dC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9y
ZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7Cisg
ICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmVSZWRpcmVjdChyZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCByZWRpcmVjdFJl
cXVlc3QpOwogICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4n
dCBzdG9yZS4KICAgICBpZiAoIW1fY2FjaGVFbnRyeSkKICAgICAgICAgbV9jYWNoZUVudHJ5ID0g
bV9jYWNoZS0+bWFrZVJlZGlyZWN0RW50cnkocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVk
aXJlY3RSZXF1ZXN0KTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAg
IGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50
cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAg
IG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3Bv
bnNlLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8g
Q3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAg
ICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9y
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKICAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1f
Y2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBjODEwZDEz
NWMxYTk3M2U3YTA5YTY5MDU3OWI3YjhjMDA2MTk4MTdlLi40M2QzNjhiNDNjZmYzOTNlNmU2NGE1
ZmUxYTg4OWIxNGRiOTg2Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTUwMCw3ICs1MDAs
OCBAQCB2b2lkIFN0b3JhZ2U6OnJlYWRSZWNvcmQoUmVhZE9wZXJhdGlvbiYgcmVhZE9wZXJhdGlv
biwgY29uc3QgRGF0YSYgcmVjb3JkRGF0YSkKICAgICAgICAgbWV0YURhdGEudGltZVN0YW1wLAog
ICAgICAgICBoZWFkZXJEYXRhLAogICAgICAgICBib2R5RGF0YSwKLSAgICAgICAgbWV0YURhdGEu
Ym9keUhhc2gKKyAgICAgICAgbWV0YURhdGEuYm9keUhhc2gsCisgICAgICAgIHsgfQogICAgIH0p
OwogfQogCkBAIC05MzgsNyArOTM5LDggQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBT
dHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1ldGFEYXRhLnRpbWVTdGFtcCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlYWRlckRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICB7IH0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBtZXRhRGF0YS5ib2R5SGFzaAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0YURhdGEuYm9keUhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICB7IH0KICAgICAg
ICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgUmVjb3JkSW5mbyBpbmZvIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4obWV0YURhdGEuYm9k
eVNpemUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCAwOWM4NzNiYzhiOTE5ZmIzZTRiMTkwYzM3OTUw
YWIzOTExZWRlNWJlLi4yNmFhZjYzMDQ5ZGFlZmM4M2EzYjc0ZGRkOWYzYjFmZTIzYWJlYTFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIERhdGEg
aGVhZGVyOwogICAgICAgICBEYXRhIGJvZHk7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U0hBMTo6
RGlnZXN0PiBib2R5SGFzaDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VD
YXA7CiAKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXggN2I4ODkyMjk5NTM5ZGIzNGM1YjM5
MTRkM2IyMTRjZThiODE0M2I5OC4uYmZkM2RlNGY4ZjllOTc1ZGVhMGY0YmU4MjQwYmI0ZTk4Mjg1
ZGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKQEAgLTg4LDcg
Kzg4LDcgQEAgU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3Jh
Z2VSZWNvcmQoKSBjb25zdAogCiAgICAgZW5jb2Rlci5lbmNvZGVDaGVja3N1bSgpOwogCi0gICAg
cmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCB7IGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIu
YnVmZmVyU2l6ZSgpIH0sIHsgfSwgeyB9fTsKKyAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3Rh
bXAsIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfSwgeyB9LCB7IH0s
IHsgfSB9OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IFN1YnJlc291
cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3Rv
cmFnZUVudHJ5KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDdiYmRlM2E3ODFhZTI0MDViNTA4Yjg5NTdlMzM5MmMyZTY1N2Y2
NzYuLjdhZTMyNWZmNTgxNjNkMWNhNDQyZWJmYThiOTI3YTA2OWEyNTFkNzYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0xMC0yMyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IFJlbW92ZSBjYXAgb24gcGFy
dGl0aW9uZWQgY2FjaGUgbWF4IGFnZSBpZiByZWxvYWRzIHJlc3VsdCBpbiB0aGUgc2FtZSBieXRl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzYw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDYxMjI0Mj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNh
Y2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sOgorICAgICAgICAgICAgVGhl
IHRlc3Qgbm93IHBlcmZvcm1zOgorICAgICAgICAgICAgLSBhbiBpbml0aWFsIEZldGNoIHJlcXVl
c3Qgd2l0aCBhIHBlcm1hbmVudCByZWRpcmVjdCB0byBJRCAxMjM0LiBDYXBwZWQgbWF4IGFnZS4K
KyAgICAgICAgICAgIC0gYSBzZWNvbmQgRmV0Y2ggcmVxdWVzdCB3aXRoIGEgcGVybWFuZW50IHJl
ZGlyZWN0IHRvIElEIDQzMjEuIENhcHBlZCBtYXggYWdlLgorICAgICAgICAgICAgLSBhIHRoaXJk
IEZldGNoIHJlcXVlc3Qgd2l0aCBhIHBlcm1hbmVudCByZWRpcmVjdCB0byBhbmQgZW1wdHkgSUQu
IENhcHBlZCBtYXggYWdlLgorICAgICAgICAgICAgLSBhIGZvdXJ0aCBGZXRjaCByZXF1ZXN0IHdp
dGggYSBwZXJtYW5lbnQgcmVkaXJlY3QgdG8gYW5kIGVtcHR5IElELiBNYXggYWdlIGNhcCByZW1v
dmVkLgorICAgICAgICAgICAgLSBhIGZpZnRoIEZldGNoIHJlcXVlc3Qgd2l0aCBhIHBlcm1hbmVu
dCByZWRpcmVjdCB0byBhbmQgZW1wdHkgSUQuIFJlZ3VsYXIgY2FjaGUgaGl0LgorCiAyMDE4LTEw
LTIyICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWNP
UyBXSzEgXSBMYXlvdXQgVGVzdCBwbGF0Zm9ybS9tYWMvbWVkaWEvYXVkaW8tc2Vzc2lvbi1jYXRl
Z29yeS12aWRlby1wYXVzZWQuaHRtbCBpcyBmbGFreSBUaW1lb3V0IApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgt
YWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2
YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0CmluZGV4IDYzYzYwNjlmNjQzNjc1ZDIwMWRkNjEx
ODY4NzNjYWQ1MTAwNmU3Y2IuLjBjY2U1YWExYzM2YTk0ZDU1MGJkZTIyOWFkZTQ0NmZmODM1NWMx
Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2Fw
LWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTQs
NiArNCw5IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBsb2FkZWRVcmwgaXMg
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9l
Y2hvLXF1ZXJ5LnBocD92YWx1ZT0xMjM0IgorUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBo
cD92YWx1ZT00MzIxIgorUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iCitQ
QVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIKIFBBU1MgbG9hZGVkVXJsIGlz
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMv
ZWNoby1xdWVyeS5waHA/dmFsdWU9IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdl
LWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbAppbmRleCAwOGI4MmJiZmI1NDc1MDA1NzIxZGY4
M2RhZjdkZDgzMmFmZGM4OTU1Li5jYzQ4ZDcwYjljNjZiNDM5NWNhNDhlMTNkMzdhZDZlNWJjMTRi
NTZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUt
bWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKQEAgLTMxLDEwICszMSw2MyBAQAog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHNlY29uZEZldGNoKCkgewotICAgICAgICAvLyBUaGlzIHNo
b3VsZCBub3QgdHJpZ2dlciBhIHN1Y2Nlc3NmdWwgY2FjaGUgaGl0LgorICAgICAgICAvLyBUaGlz
IHNob3VsZCBub3QgdHJpZ2dlciBhIHN1Y2Nlc3NmdWwgY2FjaGUgaGl0IGFuZCBjcmVhdGUgYW5v
dGhlciBjYXBwZWQgY2FjaGUgZW50cnkuCiAgICAgICAgIGZldGNoKCJodHRwOi8vbG9jYWxob3N0
OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1y
ZWRpcmVjdC5waHAiLAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNhY2hlOiAiZm9y
Y2UtY2FjaGUiLAorICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAgICAgICAgICAg
ICAgIlgtV2ViS2l0IjogIjQzMjEiLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBsb2FkZWRV
cmwgPSByZXNwb25zZS51cmw7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxv
YWRlZFVybCIsICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9NDMyMSIpOworICAgICAgICAgICAgdGhpcmRG
ZXRjaCgpOworICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAg
dGVzdEZhaWxlZChlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHRoaXJkRmV0Y2goKSB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgc3Vj
Y2Vzc2Z1bCBjYWNoZSBoaXQgYW5kIGNyZWF0ZSBhbm90aGVyIGNhcHBlZCBjYWNoZSBlbnRyeS4K
KyAgICAgICAgZmV0Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FjaGU6ICJmb3JjZS1jYWNoZSIsCisgICAgICAgICAgICB9
CisgICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVk
VXJsID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJs
b2FkZWRVcmwiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIpOworICAgICAgICAgICAgZm91cnRoRmV0
Y2goKTsKKyAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZh
bHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBm
b3VydGhGZXRjaCgpIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBzdWNj
ZXNzZnVsIGNhY2hlIGhpdCBidXQgY2xlYXIgY2FwcGluZy4KKyAgICAgICAgZmV0Y2goImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQt
cGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FjaGU6ICJmb3JjZS1jYWNoZSIsCisgICAgICAgICAgICB9CisgICAgICAgICkudGhlbihmdW5j
dGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJsOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwiLCAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnku
cGhwP3ZhbHVlPSIpOworICAgICAgICAgICAgZmlmdGhGZXRjaCgpOworICAgICAgICB9KS5jYXRj
aChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJvci5tZXNzYWdl
KTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpZnRoRmV0Y2goKSB7CisgICAgICAg
IC8vIFRoaXMgc2hvdWxkIHRyaWdnZXIgYSByZWd1bGFyLCBzdWNjZXNzZnVsIGNhY2hlIGhpdC4K
KyAgICAgICAgZmV0Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICAgICAiWC1X
ZWJLaXQiOiAiMTIzNCIsCisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICApLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgIGxvYWRlZFVybCA9IHJl
c3BvbnNlLnVybDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353747</attachid>
            <date>2018-11-02 17:07:44 -0700</date>
            <delta_ts>2018-11-02 17:23:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189760-20181102170744.patch</filename>
            <type>text/plain</type>
            <size>34688</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdjMWRkYzUwZTYzNTZi
ZDQ1YzU4Mjc3NGVkZmQ0ZjU0MGRlNTg3NS4uNDQwZjNiMmIxMmVjZTU0N2M3YmJiZDZhMWJkYmFl
NTFkYjVkOGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTExLTAyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0
IG1hdGNoZXMgYSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0ZXN0IGZsZXNoZWQgb3V0LgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNSZWRpcmVjdGlvbiBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzUmVkaXJlY3Rpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAgICAgTW92ZWQgdG8gdGhlIGltcGxlbWVudGF0aW9uIGZpbGUg
c28gdGhhdCBJIGNhbiBleHBvcnQgaXQgd2l0aG91dCB3YXJuaW5nLgorCiAyMDE4LTExLTAxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTG9jYXRpb24gb2JqZWN0
IHNhbnMgYnJvd3NpbmcgY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MDYxMTQ3MmVkZGEzMGE0YTFiODIy
NDhiMDIyZTY2NWQyNGRiMzY5Li5jYjRlMjNlYTVkY2VlOWNjNTY5ZTcwZWM2ZjU1NDM3OGUzZjA1
Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE4LTExLTAyICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGlj
czogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0IG1hdGNoZXMg
YSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBhIHJlZGlyZWN0IGNhY2hlIGVudHJ5IGZvciBhIHByZXZhbGVudCByZXNvdXJjZSBy
ZWFjaGVzIGl0cyBtYXgKKyAgICAgICAgYWdlIGNhcCwgaXQgaXMgbG9hZGVkIGFnYWluIGZyb20g
dGhlIG5ldHdvcmsgYW5kIHRoZSBuZXR3b3JrIHJlc3BvbnNlCisgICAgICAgIGlzIGNvbXBhcmVk
IHdpdGggd2hhdCdzIGluIHRoZSBjYWNoZS4gSWYgaXQncyBhIG1hdGNoLCB0aGUgY2FjaGUgZW50
cnkKKyAgICAgICAgaXMgZnVsbHkgYWNjZXB0ZWQuIElmIG5vdCwgYSBuZXcgY2FwcGVkIGNhY2hl
IGVudHJ5IGlzIGNyZWF0ZWQuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHN0aWxsIG9mZiBi
eSBkZWZhdWx0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VD
YWNoZWRSZWRpcmVjdCBjb25zdCk6CisgICAgICAgICAgICBOb3cgY2hlY2tzIHRoZSBuZXcgbWVt
YmVyIG1fY2FjaGVFbnRyeUhhc1JlYWNoZWRNYXhBZ2VDYXAuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgICAgIE5l
dyBjYXNlIGhhbmRsZWQgZm9yIGVudHJ5LT5oYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VD
YXAoKS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgICAgIFRoaXMgaXMgd2hlcmUgdGhlIG5ldyBsb2dp
YyBjb21wYXJlcyB0aGUgaW5jb21pbmcgcmVkaXJlY3Qgd2l0aCB0aGUKKyAgICAgICAgICAgIGNh
Y2hlZCBvbmUuIElmIHRoZXkgbWF0Y2gsIHRoZSBjYWNoZSBlbnRyeSBpcyB1cGRhdGVkIHRvIG5v
IGxvbmdlcgorICAgICAgICAgICAgYmUgY2FwcGVkLiBJZiB0aGV5IGRvbid0IG1hdGNoLCBhIG5l
dyBlbnRyeSBpcyBzdG9yZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICAgICBBZGRlZCB0aGUgbV9jYWNoZUVudHJ5SGFzUmVhY2hl
ZE1heEFnZUNhcCBtZW1iZXIuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNh
Y2hlOjplbmNvZGUpOgorICAgICAgICAgICAgRW1wdHkgcGFyYW1ldGVyIGNoYW5nZS4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6Om1ha2VVc2VEZWNpc2lvbik6CisgICAgICAgICAgICBoYXNSZWFj
aGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoKSBoYXMgbW92ZWQgdG8gTmV0d29ya0NhY2hlOjpF
bnRyeS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgor
ICAgICAgICAgICAgTm93IGJyZWFrcyBmb3IgVXNlRGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRS
ZXNvdXJjZUFnZUNhcC4gICAgICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgICAgICBOb3cgY29uZGl0aW9uYWxseSBj
b25zdWx0cyB0aGUgbmV0d29ya1N0b3JhZ2VTZXNzaW9uIGFzIHRvIHdoZXRoZXIKKyAgICAgICAg
ICAgIHRoZSBtYXggYWdlIG9mIHRoZSByZWRpcmVjdCBzaG91bGQgYmUgY2FwcGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZTo6cmVwbGFjZVJlZGlyZWN0KToKKyAgICAgICAgICAgIE5ldyBmdW5j
dGlvbi4gUmVtb3ZlcyB0aGUgZXhpc3RpbmcgY2FjaGVkIHJlZGlyZWN0IGFuZCBzdG9yZXMgdGhl
CisgICAgICAgICAgICBuZXcgb25lLgorICAgICAgICAoV2ViS2l0OjpDYWNoZTo6c3RvcmVEYXRh
KToKKyAgICAgICAgICAgIEVtcHR5IHBhcmFtZXRlciBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKTogRGVsZXRl
ZC4KKyAgICAgICAgICAgIE1vdmVkIHRvIE5ldHdvcmtDYWNoZTo6RW50cnkuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICAgICBBZGRlZCB0
aGUgeWVzL25vIGVudW0gQ2hlY2tGb3JNYXhBZ2VDYXAuCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAgICAg
Tm93IGVuY29kZXMgbV9tYXhBZ2VDYXAuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAgICAgTm93IGRlY29kZXMgbV9t
YXhBZ2VDYXAuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6Omhhc1JlYWNo
ZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCBjb25zdCk6CisgICAgICAgICAgICBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6cHJldmlvdXNFbnRyeUFscmVhZHlD
YXBwZWQpOgorICAgICAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6RW50cnk6OmNhcE1heEFnZSk6CisgICAgICAgICAgICBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAgICAgQWRkZWQg
dGhlIG9wdGlvbmFsIG1fbWF4QWdlQ2FwLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAg
ICAgICAgICAgIE5vdyBzZW5kcyBhIE5ldHdvcmtDYWNoZTo6Q2hlY2tGb3JNYXhBZ2VDYXAgcGFy
YW1ldGVyLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJlYWRSZWNv
cmQpOgorICAgICAgICAgICAgRW1wdHkgcGFyYW1ldGVyIGNoYW5nZS4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6CisgICAgICAgICAgICBFbXB0eSBw
YXJhbWV0ZXIgY2hhbmdlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCBtYXhBZ2VDYXAg
dG8gdGhlIFJlY29yZCBzdHJ1Y3QuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgor
ICAgICAgICAgICAgRW1wdHkgcGFyYW1ldGVyIGNoYW5nZS4KKwogMjAxOC0xMS0wMSAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzdG9yYWdlIGxpbWl0
IGZvciBJbmRleGVkREIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggYWI3YjJlMWRkNDA5ODFmOGYwZjU0
MWM1ZmM4OGQzOWVlNjdlZTNjMy4uNzY2NzIxOTE2OThmMWE2YjNiMGFlOWZhMWQ1MDU0N2UxMjMz
NGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTI5Niw2ICsyOTYsMTEgQEAgdm9pZCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiAgICAgLy8g
RklYTUU6IFNob3VsZCBpbnZhbGlkYXRlIG9yIHVwZGF0ZSBwbGF0Zm9ybSByZXNwb25zZSBpZiBw
cmVzZW50LgogfQogCitib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc1JlZGlyZWN0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaXNSZWRpcmVjdGlvblN0YXR1c0NvZGUobV9odHRwU3RhdHVz
Q29kZSk7Cit9CisKIGNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0
dXNUZXh0KCkgY29uc3QgCiB7CiAgICAgbGF6eUluaXQoQWxsRmllbGRzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApp
bmRleCBkOGZjYzE0MzFiNTBiYzdhYjY3ZjFkMTk2OGI5MWNlNzBlYTE2MWVmLi42ZmNhNmI3NTFm
NTdmMDgxZjQzYTEzNDNiMmU1MTUwY2UyZmQ2MjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC05MSw3ICs5
MSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBodHRwU3RhdHVzQ29kZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUFN0YXR1c0NvZGUoaW50KTsK
LSAgICBib29sIGlzUmVkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc1JlZGlyZWN0aW9uU3Rh
dHVzQ29kZShtX2h0dHBTdGF0dXNDb2RlKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNS
ZWRpcmVjdGlvbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBo
dHRwU3RhdHVzVGV4dCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUFN0
YXR1c1RleHQoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZWNjMDQ3ZmY1MmE5ODll
OGRiMzY5YjFmMTFmMGNkYTJlNjk2ODY0ZC4uYzYxNjYyM2U2YjgyYjllZTRhMDA3MTA1NmM4OGNh
Yjk5NjQ3Y2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VDYWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpIGNvbnN0CiAKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VDYWNoZWRSZWRp
cmVjdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFj
YW5Vc2VDYWNoZShyZXF1ZXN0KSkKKyAgICBpZiAoIWNhblVzZUNhY2hlKHJlcXVlc3QpIHx8IG1f
Y2FjaGVFbnRyeUhhc1JlYWNoZWRNYXhBZ2VDYXApCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAvLyBMaW1pdCBjYWNoZWQgcmVkaXJlY3RzIHRvIGF2b2lkIGN5Y2xlcyBhbmQgb3RoZXIgdHJv
dWJsZS4KICAgICAvLyBOZXR3b3JraW5nIGxheWVyIGZvbGxvd3Mgb3ZlciAzMCByZWRpcmVjdHMg
YnV0IGNhY2hpbmcgdGhhdCBtYW55IHNlZW1zIHVubmVjZXNzYXJ5LgpAQCAtMjE2LDcgKzIxNiw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIEFTU0VSVChjYW5Vc2VDYWNoZShyZXF1ZXN0
KSk7CiAKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBsb2FkZXIodGhpcyk7Ci0g
ICAgbV9jYWNoZS0+cmV0cmlldmUocmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCB9LCBzZXNzaW9uSUQoKSwgW3RoaXMsIGxvYWRlciA9IFdU
Rk1vdmUobG9hZGVyKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0
byBlbnRyeSwgYXV0byBpbmZvKSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5yZXRyaWV2ZShyZXF1
ZXN0LCB7IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEIH0s
IFt0aGlzLCBsb2FkZXIgPSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVl
c3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICAvLyBUaGUgbG9hZGVyIGhh
cyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkgaGVsZCBhbGl2ZSBieSB0aGlzIGxhbWJkYS4KICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTIyOSw2ICsyMjksMTQgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0
KSwgRmlyc3RMb2FkOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAg
ICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkpIHsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVz
b3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIG1f
Y2FjaGVFbnRyeUhhc1JlYWNoZWRNYXhBZ2VDYXAgPSB0cnVlOworICAgICAgICAgICAgbV9jYWNo
ZUVudHJ5Rm9yVmFsaWRhdGlvbiA9IFdURk1vdmUoZW50cnkpOworICAgICAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBvcmlnaW5hbFJlcXVlc3QoKTsKKyAgICAg
ICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVl
c3QpLCBGaXJzdExvYWQ6Olllcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAg
ICAgICAgaWYgKGVudHJ5LT5yZWRpcmVjdFJlcXVlc3QoKSkgewogICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBIYW5kbGluZyByZWRpcmVjdCAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAg
ICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZShlbnRyeSkpOwpAQCAtNTg4LDggKzU5NiwyNCBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LAogewogICAgICsrbV9yZWRpcmVjdENvdW50OwogCi0gICAgaWYg
KHJlZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpO
ZXR3b3JrICYmIGNhblVzZUNhY2hlZFJlZGlyZWN0KHJlcXVlc3QpKQotICAgICAgICBtX2NhY2hl
LT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVz
dCk7CisgICAgYm9vbCBleGlzdGluZ0NhY2hlRW50cnlJc1ZhbGlkID0gZmFsc2U7CisgICAgaWYg
KG1fY2FjaGVFbnRyeUhhc1JlYWNoZWRNYXhBZ2VDYXAgJiYgbV9jYWNoZUVudHJ5Rm9yVmFsaWRh
dGlvbikgeworICAgICAgICBBU1NFUlQocmVkaXJlY3RSZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNv
dXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOworICAgICAgICBBU1NFUlQocmVkaXJlY3RS
ZXNwb25zZS5pc1JlZGlyZWN0aW9uKCkpOworICAgICAgICBpZiAocmVkaXJlY3RSZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKSA9PSBtX2Nh
Y2hlRW50cnlGb3JWYWxpZGF0aW9uLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChXZWJDb3Jl
OjpIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pKSB7CisgICAgICAgICAgICBleGlzdGluZ0NhY2hl
RW50cnlJc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24tPnByZXZpb3VzRW50cnlBbHJlYWR5Q2FwcGVkKCk7CisgICAgICAgICAgICBtX2NhY2hlRW50
cnlGb3JWYWxpZGF0aW9uID0gbV9jYWNoZS0+cmVwbGFjZVJlZGlyZWN0KHJlcXVlc3QsICptX2Nh
Y2hlRW50cnlGb3JWYWxpZGF0aW9uLCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3Qs
IHNlc3Npb25JRCgpLCBOZXR3b3JrQ2FjaGU6OkNoZWNrRm9yTWF4QWdlQ2FwOjpObyk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9jYWNoZS0+cmVtb3ZlKG1fY2FjaGVFbnRyeUZvclZh
bGlkYXRpb24tPmtleSgpKTsKKworICAgICAgICAvLyBXZSdyZSBkb25lIHNpbmNlIHRoZSBjYWNo
ZSBlbnRyeSBoYXMgZWl0aGVyIGJlZW4gcmVwbGFjZWQgb3IgcmVtb3ZlZC4KKyAgICAgICAgbV9j
YWNoZUVudHJ5SGFzUmVhY2hlZE1heEFnZUNhcCA9IGZhbHNlOworICAgIH0KKworICAgIGlmICgh
ZXhpc3RpbmdDYWNoZUVudHJ5SXNWYWxpZCAmJiByZWRpcmVjdFJlc3BvbnNlLnNvdXJjZSgpID09
IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayAmJiBjYW5Vc2VDYWNoZWRSZWRpcmVj
dChyZXF1ZXN0KSkKKyAgICAgICAgbV9jYWNoZS0+c3RvcmVSZWRpcmVjdChyZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIHNlc3Npb25JRCgpLCBOZXR3b3JrQ2FjaGU6
OkNoZWNrRm9yTWF4QWdlQ2FwOjpZZXMpOworCiAKICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNr
ZXIpIHsKICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnN0b3JlUmVkaXJlY3Rpb25JZk5l
ZWRlZChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGFmYjBlOWM3OTU2
NjNlYWIwNWVjNGFmNGYzODI1NGI3N2ZhZWMxZGEuLjg1ZTg4ZTEzZTc3NzM2YzNhMTIxYjgyZjY3
MmU0YmRmNTU0NTc5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7CiAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKKyAg
ICBib29sIG1fY2FjaGVFbnRyeUhhc1JlYWNoZWRNYXhBZ2VDYXAgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsg
ZmFsc2UgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNo
ZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IG1fbmV0d29ya0xvYWRDaGVja2VyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2MWE0ZGU1ZjYzNmY3NmEzNTRmZGQ4OWViODgxZmVl
MDNmMjA4NWQxLi4wYTg0Y2ZlOTBjNGU4NjE1MDA1NTY2YTYwY2I0NjU4MTQwZDA4YWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTUyLDcgKzU1Miw3IEBAIFN0b3JhZ2U6OlJl
Y29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1h
dGlvbiwgY29uc3QKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsK
IAotICAgIHJldHVybiB7IHJlY29yZEluZm9ybWF0aW9uLmtleSwgeyB9LCBoZWFkZXIsIGJvZHks
IHsgfSB9OworICAgIHJldHVybiB7IHJlY29yZEluZm9ybWF0aW9uLmtleSwgeyB9LCBoZWFkZXIs
IGJvZHksIHsgfSwgeyB9IH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Q2FjaGU6OkRlY29kZWRSZWNv
cmQ+IENhY2hlOjpkZWNvZGVSZWNvcmRIZWFkZXIoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9y
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwCmluZGV4IGFjNWVkZjdmYTZjOTgyY2U5YzRiYTk4ZDdlNjY1MGIzMGFlNTdjNTAu
LjZjOGUxZTAxYjU3MGI3NDdiNTIxNmRkYjJjMTA5MWE1OWE1YWVlN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTE1
MiwxMSArMTUyLDYgQEAgc3RhdGljIGJvb2wgY2FjaGVQb2xpY3lBbGxvd3NFeHBpcmVkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXN0YXRpYyBib29sIGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgV2FsbFRpbWUgdGltZXN0YW1w
LCBjb25zdCBTZWNvbmRzIG1heEFnZSkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29tcHV0ZUN1
cnJlbnRBZ2UocmVzcG9uc2UsIHRpbWVzdGFtcCkgPiBtYXhBZ2U7Ci19Ci0KIHN0YXRpYyBib29s
IHJlc3BvbnNlSGFzRXhwaXJlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgV2FsbFRpbWUgdGltZXN0YW1wLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heFN0YWxl
KQogewogICAgIGlmIChyZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSkKQEAg
LTE4OCwxMSArMTgzLDEzIEBAIHN0YXRpYyBib29sIHJlc3BvbnNlTmVlZHNSZXZhbGlkYXRpb24o
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCiAgICAgcmV0dXJuIHJl
c3BvbnNlSGFzRXhwaXJlZChyZXNwb25zZSwgdGltZXN0YW1wLCByZXF1ZXN0RGlyZWN0aXZlcy5t
YXhTdGFsZSk7CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lvbiBtYWtlVXNlRGVjaXNpb24oY29uc3Qg
RW50cnkmIGVudHJ5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0
ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlKQorc3RhdGljIFVzZURlY2lzaW9uIG1ha2VVc2VE
ZWNpc2lvbihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKLSAgICBpZiAobWF4QWdlICYmIGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNv
dXJjZUFnZUNhcChlbnRyeS5yZXNwb25zZSgpLCBlbnRyeS50aW1lU3RhbXAoKSwgbWF4QWdlLnZh
bHVlKCkpKQorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKGVu
dHJ5Lmhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCgpKQogICAgICAgICByZXR1cm4g
VXNlRGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDsKLSAgICAKKyNlbmRp
ZgorCiAgICAgLy8gVGhlIHJlcXVlc3QgaXMgY29uZGl0aW9uYWwgc28gd2UgZm9yY2UgcmV2YWxp
ZGF0aW9uIGZyb20gdGhlIG5ldHdvcmsuIFdlIG1lcmVseSBjaGVjayB0aGUgZGlzayBjYWNoZQog
ICAgIC8vIHNvIHdlIGNhbiB1cGRhdGUgdGhlIGNhY2hlIGVudHJ5LgogICAgIGlmIChyZXF1ZXN0
LmlzQ29uZGl0aW9uYWwoKSAmJiAhZW50cnkucmVkaXJlY3RSZXF1ZXN0KCkpCkBAIC0yNzksNyAr
Mjc2LDcgQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3JlRGVjaXNpb24oY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFIKICAgICByZXR1cm4gU3RvcmVEZWNpc2lv
bjo6WWVzOwogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlcXVlc3Qu
dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKIApAQCAtMzIzLDcgKzMyMCw3IEBAIHZv
aWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgR2xvYmFsRnJhbWVJCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2UtPnJl
dHJpZXZlKHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRCwgc2Vz
c2lvbklEXShhdXRvIHJlY29yZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3Jh
Z2UtPnJldHJpZXZlKHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJ
RF0oYXV0byByZWNvcmQsIGF1dG8gdGltaW5ncykgbXV0YWJsZSB7CiAgICAgICAgIGluZm8uc3Rv
cmFnZVRpbWluZ3MgPSB0aW1pbmdzOwogCiAgICAgICAgIGlmICghcmVjb3JkKSB7CkBAIC0zNDAs
MTIgKzMzNyw3IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAgYXV0byBlbnRy
eSA9IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAgICAgIHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwOwotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgICAgIGlmIChhdXRvIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAg
ICAgICAgICAgIG1heEFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4QWdlQ2FjaGVD
YXAocmVxdWVzdCk7Ci0jZW5kaWYKLSAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8g
bWFrZVVzZURlY2lzaW9uKCplbnRyeSwgcmVxdWVzdCwgbWF4QWdlQ2FwKSA6IFVzZURlY2lzaW9u
OjpOb0R1ZVRvRGVjb2RlRmFpbHVyZTsKKyAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5
ID8gbWFrZVVzZURlY2lzaW9uKCplbnRyeSwgcmVxdWVzdCkgOiBVc2VEZWNpc2lvbjo6Tm9EdWVU
b0RlY29kZUZhaWx1cmU7CiAgICAgICAgIHN3aXRjaCAodXNlRGVjaXNpb24pIHsKICAgICAgICAg
Y2FzZSBVc2VEZWNpc2lvbjo6VXNlOgogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTMsOCArMzQ1
LDYgQEAgdm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUkKICAgICAgICAgICAgIGVudHJ5LT5zZXROZWVk
c1ZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVc2VE
ZWNpc2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdlQ2FwOgotICAgICAgICAgICAgZW50
cnkgPSBudWxscHRyOwotICAgICAgICAgICAgbV9zdG9yYWdlLT5yZW1vdmUoc3RvcmFnZUtleSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGVudHJ5
ID0gbnVsbHB0cjsKQEAgLTQzMCw3ICs0MjAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbgog
ICAgIHJldHVybiBjYWNoZUVudHJ5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hl
OjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDaGVja0Zvck1heEFnZUNhcCBzaG91bGRDaGVja0Zvck1heEFnZUNhcCkKIHsK
ICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBzdG9yaW5nIHJlZGlyZWN0
ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlZGly
ZWN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogCkBAIC00NDUsNiAr
NDM1LDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAgICAgfQogCiAgICAgYXV0byBjYWNo
ZUVudHJ5ID0gbWFrZVJlZGlyZWN0RW50cnkocmVxdWVzdCwgcmVzcG9uc2UsIHJlZGlyZWN0UmVx
dWVzdCk7CisgICAgaWYgKHNob3VsZENoZWNrRm9yTWF4QWdlQ2FwID09IENoZWNrRm9yTWF4QWdl
Q2FwOjpZZXMpIHsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICAg
ICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIGFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4QWdlQ2FjaGVDYXAocmVxdWVz
dCkpIHsKKyAgICAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNz
KSBjYXBwaW5nIG1heCBhZ2UgZm9yIHJlZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5z
dHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIGNhY2hlRW50cnktPmNhcE1heEFnZShh
Z2VDYXAudmFsdWUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZWxzZQor
ICAgICAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKKyAgICB9CisjZW5kaWYKICAgICBhdXRv
IHJlY29yZCA9IGNhY2hlRW50cnktPmVuY29kZUFzU3RvcmFnZVJlY29yZCgpOwogCiAgICAgbV9z
dG9yYWdlLT5zdG9yZShyZWNvcmQsIG51bGxwdHIpOwpAQCAtNDcwLDYgKzQ3MywxNCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjp1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcQogICAgIHJldHVybiB1cGRhdGVFbnRyeTsKIH0KIAorc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6cmVwbGFjZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRW50cnkmIGV4aXN0aW5nRW50cnksIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
aGVja0Zvck1heEFnZUNhcCBzaG91bGRDaGVja0Zvck1heEFnZUNhcCkKK3sKKyAgICBMT0coTmV0
d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSByZXBsYWNpbmcgcmVkaXJlY3QgJXMgLT4gJXMi
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgcmVkaXJlY3RSZXF1ZXN0
LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CisKKyAgICByZW1vdmUoZXhpc3RpbmdF
bnRyeS5rZXkoKSk7CisgICAgcmV0dXJuIHN0b3JlUmVkaXJlY3QocmVxdWVzdCwgcmVzcG9uc2Us
IHJlZGlyZWN0UmVxdWVzdCwgc2Vzc2lvbklELCBzaG91bGRDaGVja0Zvck1heEFnZUNhcCk7Cit9
CisKIHZvaWQgQ2FjaGU6OnJlbW92ZShjb25zdCBLZXkmIGtleSkKIHsKICAgICBtX3N0b3JhZ2Ut
PnJlbW92ZShrZXkpOwpAQCAtNjIxLDcgKzYzMiw3IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlRGF0
YShjb25zdCBEYXRhS2V5JiBkYXRhS2V5LCBGdW5jdGlvbjx2b2lkIChjb25zdCB1aW50OF90KiBk
CiB2b2lkIENhY2hlOjpzdG9yZURhdGEoY29uc3QgRGF0YUtleSYgZGF0YUtleSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgS2V5IGtleSB7IGRhdGFLZXksIG1fc3Rv
cmFnZS0+c2FsdCgpIH07Ci0gICAgU3RvcmFnZTo6UmVjb3JkIHJlY29yZCB7IGtleSwgV2FsbFRp
bWU6Om5vdygpLCB7IH0sIERhdGEgeyBkYXRhLCBzaXplIH0sIHsgfSB9OworICAgIFN0b3JhZ2U6
OlJlY29yZCByZWNvcmQgeyBrZXksIFdhbGxUaW1lOjpub3coKSwgeyB9LCBEYXRhIHsgZGF0YSwg
c2l6ZSB9LCB7IH0sIHsgfSB9OwogICAgIG1fc3RvcmFnZS0+c3RvcmUocmVjb3JkLCB7IH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuaAppbmRleCBmMTVhZDZiZDBhZGM4YzczNThjMWE5NDk5ODBkODQwOWU2MjgzM2E0Li40OTBj
OTI4ZTlkZjExOWU3NGE5Y2ZlMmFiODI3ZmQ0ZDVhMWY0MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtODUsNiArODYsOCBAQCBlbnVtIGNsYXNzIFVzZURlY2lzaW9uIHsKICAgICBO
b0R1ZVRvUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAKIH07CiAKK2VudW0gY2xhc3MgQ2hlY2tGb3JN
YXhBZ2VDYXAgeyBZZXMsIE5vIH07CisKIHVzaW5nIEdsb2JhbEZyYW1lSUQgPSBzdGQ6OnBhaXI8
dWludDY0X3QgLyp3ZWJQYWdlSUQqLywgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+OwogCiBjbGFz
cyBDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlPiB7CkBAIC0xMTMsMTEgKzExNiwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIH07CiAgICAg
dXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKLSAgICB2b2lkIHJldHJpZXZl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBQ
QUw6OlNlc3Npb25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHJl
dHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1l
SUQmLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1
bmN0aW9uPHZvaWQgKE1hcHBlZEJvZHkmKT4mJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlZGlyZWN0UmVxdWVzdCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGly
ZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVx
dWVzdCwgUEFMOjpTZXNzaW9uSUQsIENoZWNrRm9yTWF4QWdlQ2FwKTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwotCisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiByZXBsYWNlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
RW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIFBBTDo6U2Vzc2lvbklELCBDaGVja0Zv
ck1heEFnZUNhcCk7CiAgICAgc3RydWN0IFRyYXZlcnNhbEVudHJ5IHsKICAgICAgICAgY29uc3Qg
RW50cnkmIGVudHJ5OwogICAgICAgICBjb25zdCBTdG9yYWdlOjpSZWNvcmRJbmZvJiByZWNvcmRJ
bmZvOwpAQCAtMTU2LDYgKzE1OSw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGR1bXBGaWxlUGF0
aCgpIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlRHVtcEZpbGUoKTsKIAorICAgIHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gbWF4QWdlQ2FwKEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgUEFMOjpTZXNzaW9uSUQpOworCiAgICAgUmVmPFN0b3JhZ2U+IG1fc3RvcmFnZTsKIAog
I2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVF
bnRyeS5jcHAKaW5kZXggYWUxMTg4YWUzYWFkOGY4MmQ1ZmMwNjJmNWU0ZmY0NGVkMTFkZTZkMS4u
YWZiMjM2MDMxMWE0MzRkYmJiZWI4MjA5Mjg5MmQ4OGU4ZjQ3YTliNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAKQEAgLTk1LDYgKzk1LDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9y
YWdlUmVjb3JkKCkgY29uc3QKICAgICBpZiAoaXNSZWRpcmVjdCkKICAgICAgICAgbV9yZWRpcmVj
dFJlcXVlc3QtPmVuY29kZVdpdGhvdXRQbGF0Zm9ybURhdGEoZW5jb2Rlcik7CiAKKyNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGVuY29kZXIgPDwgbV9tYXhBZ2VDYXA7
CisjZW5kaWYKKyAgICAKICAgICBlbmNvZGVyLmVuY29kZUNoZWNrc3VtKCk7CiAKICAgICBEYXRh
IGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CkBAIC0xMDIs
NyArMTA2LDExIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3Jk
KCkgY29uc3QKICAgICBpZiAobV9idWZmZXIpCiAgICAgICAgIGJvZHkgPSB7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgp
IH07CiAKLSAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9
IH07CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICByZXR1cm4geyBt
X2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9LCBtX21heEFnZUNhcCB9OworI2Vs
c2UKKyAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9LCB7
IH0gfTsKKyNlbmRpZgogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVT
dG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQpAQCAtMTMz
LDYgKzE0MSwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdl
UmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
KyAgICAvLyBPcHRpb25hbCBtYXggYWdlIGNhcC4KKyAgICBkZWNvZGVyLmRlY29kZShlbnRyeS0+
bV9tYXhBZ2VDYXApOworI2VuZGlmCisgICAgCiAgICAgaWYgKCFkZWNvZGVyLnZlcmlmeUNoZWNr
c3VtKCkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgY2hl
Y2tzdW0gdmVyaWZpY2F0aW9uIGZhaWx1cmVcbiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE0MSw2ICsxNTQsMjMgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2Rl
U3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICAgICByZXR1cm4g
ZW50cnk7CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorYm9vbCBF
bnRyeTo6aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tYXhBZ2VDYXAgJiYgV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2Uo
KSwgdGltZVN0YW1wKCkpID4gbV9tYXhBZ2VDYXA7Cit9CisKK3ZvaWQgRW50cnk6OnByZXZpb3Vz
RW50cnlBbHJlYWR5Q2FwcGVkKCkKK3sKKyAgICBtX21heEFnZUNhcCA9IHN0ZDo6bnVsbG9wdDsK
K30KKwordm9pZCBFbnRyeTo6Y2FwTWF4QWdlKGNvbnN0IFNlY29uZHMgc2Vjb25kcykKK3sKKyAg
ICBtX21heEFnZUNhcCA9IHNlY29uZHM7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShTSEFSRUFC
TEVfUkVTT1VSQ0UpCiB2b2lkIEVudHJ5Ojppbml0aWFsaXplU2hhcmVhYmxlUmVzb3VyY2VIYW5k
bGVGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5kZXggNTNlZGVmNzBj
YzE3NGZlNmNmMDg2NWQ2ZWQ5NTYzZDY1ZmQ3NmZjZS4uZDM4MzljMGE4NDBiNjVkMGI4MDdjNTMy
YjJmNDI4MTNlNTVmM2FlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNzAsNiArNzEsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhc0pTT04o
U3RyaW5nQnVpbGRlciYsIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mKSBjb25zdDsKIAorI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgYm9vbCBoYXNSZWFjaGVkUHJl
dmFsZW50UmVzb3VyY2VBZ2VDYXAoKSBjb25zdDsKKyAgICB2b2lkIHByZXZpb3VzRW50cnlBbHJl
YWR5Q2FwcGVkKCk7CisgICAgdm9pZCBjYXBNYXhBZ2UoY29uc3QgU2Vjb25kcyk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgp
IGNvbnN0OwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw2ICs5NSwxMCBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdG9yYWdlOjpSZWNvcmQgbV9zb3VyY2VTdG9yYWdl
UmVjb3JkIHsgfTsKKyAgICAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbV9tYXhBZ2VDYXA7CisjZW5kaWYKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCA3YjQwYWIxMmQ5NzMwNmEw
ZTY5YzE4ZWE1MWZmYjE4YTA0ZTZhOWZiLi45YTRjODA2NGMwMzdmODFhZTAxODRmNWRhZjk0ODM3
N2Y4NjU5NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC03MSw3
ICs3MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdQogewogICAgIExPRyhOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICJTcGVjdWxhdGl2ZSByZWRpcmVjdCAlcyAtPiAlcyIs
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVkaXJlY3RSZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNo
ZS0+c3RvcmVSZWRpcmVjdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVl
c3QpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgbV9jYWNoZUVu
dHJ5ID0gbV9jYWNoZS0+c3RvcmVSZWRpcmVjdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBy
ZWRpcmVjdFJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIE5ldHdv
cmtDYWNoZTo6Q2hlY2tGb3JNYXhBZ2VDYXA6Olllcyk7CisjZWxzZQorICAgIG1fY2FjaGVFbnRy
eSA9IG1fY2FjaGUtPnN0b3JlUmVkaXJlY3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVk
aXJlY3RSZXF1ZXN0LCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBOZXR3b3Jr
Q2FjaGU6OkNoZWNrRm9yTWF4QWdlQ2FwOjpObyk7CisjZW5kaWYKICAgICAvLyBDcmVhdGUgYSBz
eW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgaWYgKCFtX2NhY2hl
RW50cnkpCiAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VSZWRpcmVjdEVudHJ5
KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCBjODEwZDEzNWMxYTk3M2U3YTA5YTY5MDU3OWI3YjhjMDA2MTk4MTdlLi40
M2QzNjhiNDNjZmYzOTNlNmU2NGE1ZmUxYTg4OWIxNGRiOTg2Zjc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHAKQEAgLTUwMCw3ICs1MDAsOCBAQCB2b2lkIFN0b3JhZ2U6OnJlYWRSZWNvcmQoUmVhZE9w
ZXJhdGlvbiYgcmVhZE9wZXJhdGlvbiwgY29uc3QgRGF0YSYgcmVjb3JkRGF0YSkKICAgICAgICAg
bWV0YURhdGEudGltZVN0YW1wLAogICAgICAgICBoZWFkZXJEYXRhLAogICAgICAgICBib2R5RGF0
YSwKLSAgICAgICAgbWV0YURhdGEuYm9keUhhc2gKKyAgICAgICAgbWV0YURhdGEuYm9keUhhc2gs
CisgICAgICAgIHsgfQogICAgIH0pOwogfQogCkBAIC05MzgsNyArOTM5LDggQEAgdm9pZCBTdG9y
YWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+
IGZsYWdzLCBUcmF2ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFEYXRhLnRpbWVTdGFt
cCwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckRhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICB7IH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtZXRhRGF0YS5ib2R5SGFzaAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWV0YURhdGEuYm9keUhhc2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICB7IH0KICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAg
ICAgUmVjb3JkSW5mbyBpbmZvIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHNpemVfdD4obWV0YURhdGEuYm9keVNpemUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCBhY2QyZmU0
ZTFmYTdmZDFkM2Y5ZGM3YjBlZDEzZjBjODI3NjgwNDI4Li5mZGExYjhmMmY2NDA2ODNmNGI3MzI1
YTAzZTdlM2MwZWE3MDdlZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaApAQCAtNTYsNiArNTYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIERhdGEgaGVhZGVyOwogICAgICAgICBEYXRhIGJvZHk7CiAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8U0hBMTo6RGlnZXN0PiBib2R5SGFzaDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBtYXhBZ2VDYXA7CiAKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXgg
N2I4ODkyMjk5NTM5ZGIzNGM1YjM5MTRkM2IyMTRjZThiODE0M2I5OC4uYmZkM2RlNGY4ZjllOTc1
ZGVhMGY0YmU4MjQwYmI0ZTk4Mjg1ZGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNl
c0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgZW5jb2Rlci5lbmNv
ZGVDaGVja3N1bSgpOwogCi0gICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCB7IGVuY29k
ZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpIH0sIHsgfSwgeyB9fTsKKyAgICByZXR1
cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZm
ZXJTaXplKCkgfSwgeyB9LCB7IH0sIHsgfSB9OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVz
b3VyY2VzRW50cnk+IFN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0
IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc2NGQ5NzNmMzhhZTUzZWI1
OGJjMjRiOGU5NjE2MzllNWY3NjNlYzAuLjM3YjdmY2U0OTY3ZTQ0YTEzZWY2M2MzYzQ2NGUyNDJh
ZDMzNzBjMGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMS0wMiAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3Rp
Y3M6IFJlbW92ZSBjYXAgb24gcGFydGl0aW9uZWQgY2FjaGUgbWF4IGFnZSBpZiBpdCBtYXRjaGVz
IGEgbmV0d29yayByZWxvYWQgKHJlZGlyZWN0LW9ubHkpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ0NjEyMjQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdl
LWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50
LXJlc291cmNlLmh0bWw6CisgICAgICAgICAgICBUaGUgdGVzdCBub3cgcGVyZm9ybXM6CisgICAg
ICAgICAgICAtIGFuIGluaXRpYWwgRmV0Y2ggcmVxdWVzdCB3aXRoIGEgcGVybWFuZW50IHJlZGly
ZWN0IHRvIElEIDEyMzQuIENhcHBlZCBtYXggYWdlLgorICAgICAgICAgICAgLSBhIHNlY29uZCBG
ZXRjaCByZXF1ZXN0IHdpdGggYSBwZXJtYW5lbnQgcmVkaXJlY3QgdG8gSUQgNDMyMS4gQ2FwcGVk
IG1heCBhZ2UuCisgICAgICAgICAgICAtIGEgdGhpcmQgRmV0Y2ggcmVxdWVzdCB3aXRoIGEgcGVy
bWFuZW50IHJlZGlyZWN0IHRvIGFuZCBlbXB0eSBJRC4gQ2FwcGVkIG1heCBhZ2UuCisgICAgICAg
ICAgICAtIGEgZm91cnRoIEZldGNoIHJlcXVlc3Qgd2l0aCBhIHBlcm1hbmVudCByZWRpcmVjdCB0
byBhbmQgZW1wdHkgSUQuIE1heCBhZ2UgY2FwIHJlbW92ZWQuCisgICAgICAgICAgICAtIGEgZmlm
dGggRmV0Y2ggcmVxdWVzdCB3aXRoIGEgcGVybWFuZW50IHJlZGlyZWN0IHRvIGFuZCBlbXB0eSBJ
RC4gUmVndWxhciBjYWNoZSBoaXQuCisKIDIwMTgtMTEtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBMb2NhdGlvbiBvYmplY3Qgc2FucyBicm93c2luZyBjb250
ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNh
Y2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQKaW5kZXggNjNj
NjA2OWY2NDM2NzVkMjAxZGQ2MTE4Njg3M2NhZDUxMDA2ZTdjYi4uMGNjZTVhYTFjMzZhOTRkNTUw
YmRlMjI5YWRlNDQ2ZmY4MzU1YzFjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQt
cmVzb3VyY2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNl
LWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0LDkgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAog
CiBQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTEyMzQiCitQQVNTIGxvYWRl
ZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVz
b3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTQzMjEiCitQQVNTIGxvYWRlZFVybCBpcyAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8t
cXVlcnkucGhwP3ZhbHVlPSIKK1BBU1MgbG9hZGVkVXJsIGlzICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9
IgogUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJl
c291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCmluZGV4IDA4
YjgyYmJmYjU0NzUwMDU3MjFkZjgzZGFmN2RkODMyYWZkYzg5NTUuLmNjNDhkNzBiOWM2NmI0Mzk1
Y2E0OGUxM2QzN2FkNmU1YmMxNGI1NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50
LXJlc291cmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbApA
QCAtMzEsMTAgKzMxLDYzIEBACiAgICAgfQogCiAgICAgZnVuY3Rpb24gc2Vjb25kRmV0Y2goKSB7
Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgc3VjY2Vzc2Z1bCBjYWNoZSBo
aXQuCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgc3VjY2Vzc2Z1bCBjYWNo
ZSBoaXQgYW5kIGNyZWF0ZSBhbm90aGVyIGNhcHBlZCBjYWNoZSBlbnRyeS4KICAgICAgICAgZmV0
Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNl
cy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIsCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgY2FjaGU6ICJmb3JjZS1jYWNoZSIsCisgICAgICAgICAgICAgICAgaGVhZGVyczog
eworICAgICAgICAgICAgICAgICAgICAiWC1XZWJLaXQiOiAiNDMyMSIsCisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICApLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsK
KyAgICAgICAgICAgIGxvYWRlZFVybCA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygibG9hZGVkVXJsIiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT00MzIxIik7
CisgICAgICAgICAgICB0aGlyZEZldGNoKCk7CisgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVy
cm9yKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKGVycm9yLm1lc3NhZ2UpOworICAgICAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gdGhpcmRGZXRjaCgpIHsKKyAgICAgICAgLy8gVGhpcyBzaG91
bGQgbm90IHRyaWdnZXIgYSBzdWNjZXNzZnVsIGNhY2hlIGhpdCBhbmQgY3JlYXRlIGFub3RoZXIg
Y2FwcGVkIGNhY2hlIGVudHJ5LgorICAgICAgICBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJl
Y3QucGhwIiwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYWNoZTogImZvcmNlLWNh
Y2hlIiwKKyAgICAgICAgICAgIH0KKyAgICAgICAgKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7
CisgICAgICAgICAgICBsb2FkZWRVcmwgPSByZXNwb25zZS51cmw7CisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImxvYWRlZFVybCIsICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9Iik7Cisg
ICAgICAgICAgICBmb3VydGhGZXRjaCgpOworICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJv
cikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGZvdXJ0aEZldGNoKCkgeworICAgICAgICAvLyBUaGlzIHNob3Vs
ZCBub3QgdHJpZ2dlciBhIHN1Y2Nlc3NmdWwgY2FjaGUgaGl0IGJ1dCBjbGVhciBjYXBwaW5nLgor
ICAgICAgICBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwIiwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYWNoZTogImZvcmNlLWNhY2hlIiwKKyAgICAgICAgICAgIH0K
KyAgICAgICAgKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBsb2FkZWRV
cmwgPSByZXNwb25zZS51cmw7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxv
YWRlZFVybCIsICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9Iik7CisgICAgICAgICAgICBmaWZ0aEZldGNo
KCk7CisgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKGVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxz
ZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmlm
dGhGZXRjaCgpIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgdHJpZ2dlciBhIHJlZ3VsYXIsIHN1
Y2Nlc3NmdWwgY2FjaGUgaGl0LgorICAgICAgICBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJl
Y3QucGhwIiwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CisgICAg
ICAgICAgICAgICAgICAgICJYLVdlYktpdCI6ICIxMjM0IiwKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgewogICAgICAg
ICAgICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353749</attachid>
            <date>2018-11-02 17:23:26 -0700</date>
            <delta_ts>2018-11-05 11:54:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189760-20181102172325.patch</filename>
            <type>text/plain</type>
            <size>34780</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdjMWRkYzUwZTYzNTZi
ZDQ1YzU4Mjc3NGVkZmQ0ZjU0MGRlNTg3NS4uNDQwZjNiMmIxMmVjZTU0N2M3YmJiZDZhMWJkYmFl
NTFkYjVkOGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTExLTAyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0
IG1hdGNoZXMgYSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0ZXN0IGZsZXNoZWQgb3V0LgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNSZWRpcmVjdGlvbiBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzUmVkaXJlY3Rpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAgICAgTW92ZWQgdG8gdGhlIGltcGxlbWVudGF0aW9uIGZpbGUg
c28gdGhhdCBJIGNhbiBleHBvcnQgaXQgd2l0aG91dCB3YXJuaW5nLgorCiAyMDE4LTExLTAxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTG9jYXRpb24gb2JqZWN0
IHNhbnMgYnJvd3NpbmcgY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MDYxMTQ3MmVkZGEzMGE0YTFiODIy
NDhiMDIyZTY2NWQyNGRiMzY5Li5jYjRlMjNlYTVkY2VlOWNjNTY5ZTcwZWM2ZjU1NDM3OGUzZjA1
Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE4LTExLTAyICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGlj
czogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0IG1hdGNoZXMg
YSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBhIHJlZGlyZWN0IGNhY2hlIGVudHJ5IGZvciBhIHByZXZhbGVudCByZXNvdXJjZSBy
ZWFjaGVzIGl0cyBtYXgKKyAgICAgICAgYWdlIGNhcCwgaXQgaXMgbG9hZGVkIGFnYWluIGZyb20g
dGhlIG5ldHdvcmsgYW5kIHRoZSBuZXR3b3JrIHJlc3BvbnNlCisgICAgICAgIGlzIGNvbXBhcmVk
IHdpdGggd2hhdCdzIGluIHRoZSBjYWNoZS4gSWYgaXQncyBhIG1hdGNoLCB0aGUgY2FjaGUgZW50
cnkKKyAgICAgICAgaXMgZnVsbHkgYWNjZXB0ZWQuIElmIG5vdCwgYSBuZXcgY2FwcGVkIGNhY2hl
IGVudHJ5IGlzIGNyZWF0ZWQuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHN0aWxsIG9mZiBi
eSBkZWZhdWx0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VD
YWNoZWRSZWRpcmVjdCBjb25zdCk6CisgICAgICAgICAgICBOb3cgY2hlY2tzIHRoZSBuZXcgbWVt
YmVyIG1fY2FjaGVFbnRyeUhhc1JlYWNoZWRNYXhBZ2VDYXAuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgICAgIE5l
dyBjYXNlIGhhbmRsZWQgZm9yIGVudHJ5LT5oYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VD
YXAoKS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgICAgIFRoaXMgaXMgd2hlcmUgdGhlIG5ldyBsb2dp
YyBjb21wYXJlcyB0aGUgaW5jb21pbmcgcmVkaXJlY3Qgd2l0aCB0aGUKKyAgICAgICAgICAgIGNh
Y2hlZCBvbmUuIElmIHRoZXkgbWF0Y2gsIHRoZSBjYWNoZSBlbnRyeSBpcyB1cGRhdGVkIHRvIG5v
IGxvbmdlcgorICAgICAgICAgICAgYmUgY2FwcGVkLiBJZiB0aGV5IGRvbid0IG1hdGNoLCBhIG5l
dyBlbnRyeSBpcyBzdG9yZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICAgICBBZGRlZCB0aGUgbV9jYWNoZUVudHJ5SGFzUmVhY2hl
ZE1heEFnZUNhcCBtZW1iZXIuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNh
Y2hlOjplbmNvZGUpOgorICAgICAgICAgICAgRW1wdHkgcGFyYW1ldGVyIGNoYW5nZS4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6Om1ha2VVc2VEZWNpc2lvbik6CisgICAgICAgICAgICBoYXNSZWFj
aGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoKSBoYXMgbW92ZWQgdG8gTmV0d29ya0NhY2hlOjpF
bnRyeS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgor
ICAgICAgICAgICAgTm93IGJyZWFrcyBmb3IgVXNlRGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRS
ZXNvdXJjZUFnZUNhcC4gICAgICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgICAgICBOb3cgY29uZGl0aW9uYWxseSBj
b25zdWx0cyB0aGUgbmV0d29ya1N0b3JhZ2VTZXNzaW9uIGFzIHRvIHdoZXRoZXIKKyAgICAgICAg
ICAgIHRoZSBtYXggYWdlIG9mIHRoZSByZWRpcmVjdCBzaG91bGQgYmUgY2FwcGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZTo6cmVwbGFjZVJlZGlyZWN0KToKKyAgICAgICAgICAgIE5ldyBmdW5j
dGlvbi4gUmVtb3ZlcyB0aGUgZXhpc3RpbmcgY2FjaGVkIHJlZGlyZWN0IGFuZCBzdG9yZXMgdGhl
CisgICAgICAgICAgICBuZXcgb25lLgorICAgICAgICAoV2ViS2l0OjpDYWNoZTo6c3RvcmVEYXRh
KToKKyAgICAgICAgICAgIEVtcHR5IHBhcmFtZXRlciBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKTogRGVsZXRl
ZC4KKyAgICAgICAgICAgIE1vdmVkIHRvIE5ldHdvcmtDYWNoZTo6RW50cnkuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICAgICBBZGRlZCB0
aGUgeWVzL25vIGVudW0gQ2hlY2tGb3JNYXhBZ2VDYXAuCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAgICAg
Tm93IGVuY29kZXMgbV9tYXhBZ2VDYXAuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAgICAgTm93IGRlY29kZXMgbV9t
YXhBZ2VDYXAuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6Omhhc1JlYWNo
ZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCBjb25zdCk6CisgICAgICAgICAgICBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6cHJldmlvdXNFbnRyeUFscmVhZHlD
YXBwZWQpOgorICAgICAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6RW50cnk6OmNhcE1heEFnZSk6CisgICAgICAgICAgICBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAgICAgQWRkZWQg
dGhlIG9wdGlvbmFsIG1fbWF4QWdlQ2FwLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAg
ICAgICAgICAgIE5vdyBzZW5kcyBhIE5ldHdvcmtDYWNoZTo6Q2hlY2tGb3JNYXhBZ2VDYXAgcGFy
YW1ldGVyLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJlYWRSZWNv
cmQpOgorICAgICAgICAgICAgRW1wdHkgcGFyYW1ldGVyIGNoYW5nZS4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6CisgICAgICAgICAgICBFbXB0eSBw
YXJhbWV0ZXIgY2hhbmdlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCBtYXhBZ2VDYXAg
dG8gdGhlIFJlY29yZCBzdHJ1Y3QuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgor
ICAgICAgICAgICAgRW1wdHkgcGFyYW1ldGVyIGNoYW5nZS4KKwogMjAxOC0xMS0wMSAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzdG9yYWdlIGxpbWl0
IGZvciBJbmRleGVkREIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggYWI3YjJlMWRkNDA5ODFmOGYwZjU0
MWM1ZmM4OGQzOWVlNjdlZTNjMy4uNzY2NzIxOTE2OThmMWE2YjNiMGFlOWZhMWQ1MDU0N2UxMjMz
NGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTI5Niw2ICsyOTYsMTEgQEAgdm9pZCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiAgICAgLy8g
RklYTUU6IFNob3VsZCBpbnZhbGlkYXRlIG9yIHVwZGF0ZSBwbGF0Zm9ybSByZXNwb25zZSBpZiBw
cmVzZW50LgogfQogCitib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc1JlZGlyZWN0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaXNSZWRpcmVjdGlvblN0YXR1c0NvZGUobV9odHRwU3RhdHVz
Q29kZSk7Cit9CisKIGNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0
dXNUZXh0KCkgY29uc3QgCiB7CiAgICAgbGF6eUluaXQoQWxsRmllbGRzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApp
bmRleCBkOGZjYzE0MzFiNTBiYzdhYjY3ZjFkMTk2OGI5MWNlNzBlYTE2MWVmLi42ZmNhNmI3NTFm
NTdmMDgxZjQzYTEzNDNiMmU1MTUwY2UyZmQ2MjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC05MSw3ICs5
MSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBodHRwU3RhdHVzQ29kZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUFN0YXR1c0NvZGUoaW50KTsK
LSAgICBib29sIGlzUmVkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc1JlZGlyZWN0aW9uU3Rh
dHVzQ29kZShtX2h0dHBTdGF0dXNDb2RlKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNS
ZWRpcmVjdGlvbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBo
dHRwU3RhdHVzVGV4dCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUFN0
YXR1c1RleHQoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZWNjMDQ3ZmY1MmE5ODll
OGRiMzY5YjFmMTFmMGNkYTJlNjk2ODY0ZC4uODBiMDE1ODU4ODM1ZWMyMGNmNDhmMzhkYWI2ZTE0
ZmM4MzViNjVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VDYWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpIGNvbnN0CiAKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VDYWNoZWRSZWRp
cmVjdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFj
YW5Vc2VDYWNoZShyZXF1ZXN0KSkKKyAgICBpZiAoIWNhblVzZUNhY2hlKHJlcXVlc3QpIHx8IG1f
Y2FjaGVFbnRyeUhhc1JlYWNoZWRNYXhBZ2VDYXApCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAvLyBMaW1pdCBjYWNoZWQgcmVkaXJlY3RzIHRvIGF2b2lkIGN5Y2xlcyBhbmQgb3RoZXIgdHJv
dWJsZS4KICAgICAvLyBOZXR3b3JraW5nIGxheWVyIGZvbGxvd3Mgb3ZlciAzMCByZWRpcmVjdHMg
YnV0IGNhY2hpbmcgdGhhdCBtYW55IHNlZW1zIHVubmVjZXNzYXJ5LgpAQCAtMjE2LDcgKzIxNiw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIEFTU0VSVChjYW5Vc2VDYWNoZShyZXF1ZXN0
KSk7CiAKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBsb2FkZXIodGhpcyk7Ci0g
ICAgbV9jYWNoZS0+cmV0cmlldmUocmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCB9LCBzZXNzaW9uSUQoKSwgW3RoaXMsIGxvYWRlciA9IFdU
Rk1vdmUobG9hZGVyKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0
byBlbnRyeSwgYXV0byBpbmZvKSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5yZXRyaWV2ZShyZXF1
ZXN0LCB7IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEIH0s
IFt0aGlzLCBsb2FkZXIgPSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVl
c3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICAvLyBUaGUgbG9hZGVyIGhh
cyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkgaGVsZCBhbGl2ZSBieSB0aGlzIGxhbWJkYS4KICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTIyOSw2ICsyMjksMTYgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0
KSwgRmlyc3RMb2FkOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICAgICAgaWYgKGVudHJ5LT5oYXNS
ZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBoYXMgcmVhY2hlZCBw
cmV2YWxlbnQgcmVzb3VyY2UgYWdlIGNhcCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJj
ZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5SGFzUmVhY2hl
ZE1heEFnZUNhcCA9IHRydWU7CisgICAgICAgICAgICBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
ID0gV1RGTW92ZShlbnRyeSk7CisgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmV2YWxpZGF0
aW9uUmVxdWVzdCA9IG9yaWdpbmFsUmVxdWVzdCgpOworICAgICAgICAgICAgbG9hZGVyLT5zdGFy
dE5ldHdvcmtMb2FkKFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIEZpcnN0TG9hZDo6WWVz
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIGlmIChl
bnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxv
YWRlci0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUoZW50cnkpKTsKQEAgLTU4OCw4ICs1OTgsMjYgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwKIHsKICAgICArK21fcmVkaXJlY3RDb3VudDsKIAotICAgIGlmIChyZWRpcmVjdFJl
c3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayAmJiBj
YW5Vc2VDYWNoZWRSZWRpcmVjdChyZXF1ZXN0KSkKLSAgICAgICAgbV9jYWNoZS0+c3RvcmVSZWRp
cmVjdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOworICAgIGJv
b2wgZXhpc3RpbmdDYWNoZUVudHJ5SXNWYWxpZCA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKG1fY2FjaGVFbnRyeUhhc1JlYWNoZWRNYXhBZ2VD
YXAgJiYgbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgeworICAgICAgICBBU1NFUlQocmVkaXJl
Y3RSZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmsp
OworICAgICAgICBBU1NFUlQocmVkaXJlY3RSZXNwb25zZS5pc1JlZGlyZWN0aW9uKCkpOworICAg
ICAgICBpZiAocmVkaXJlY3RSZXNwb25zZS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhl
YWRlck5hbWU6OkxvY2F0aW9uKSA9PSBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uLT5yZXNwb25z
ZSgpLmh0dHBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pKSB7
CisgICAgICAgICAgICBleGlzdGluZ0NhY2hlRW50cnlJc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24tPnByZXZpb3VzRW50cnlBbHJlYWR5Q2FwcGVk
KCk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uID0gbV9jYWNoZS0+cmVw
bGFjZVJlZGlyZWN0KHJlcXVlc3QsICptX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uLCByZWRpcmVj
dFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIHNlc3Npb25JRCgpLCBOZXR3b3JrQ2FjaGU6OkNo
ZWNrRm9yTWF4QWdlQ2FwOjpObyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9jYWNo
ZS0+cmVtb3ZlKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24tPmtleSgpKTsKKworICAgICAgICAv
LyBXZSdyZSBkb25lIHNpbmNlIHRoZSBjYWNoZSBlbnRyeSBoYXMgZWl0aGVyIGJlZW4gcmVwbGFj
ZWQgb3IgcmVtb3ZlZC4KKyAgICAgICAgbV9jYWNoZUVudHJ5SGFzUmVhY2hlZE1heEFnZUNhcCA9
IGZhbHNlOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKCFleGlzdGluZ0NhY2hlRW50cnlJc1Zh
bGlkICYmIHJlZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291
cmNlOjpOZXR3b3JrICYmIGNhblVzZUNhY2hlZFJlZGlyZWN0KHJlcXVlc3QpKQorICAgICAgICBt
X2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0
UmVxdWVzdCwgc2Vzc2lvbklEKCksIE5ldHdvcmtDYWNoZTo6Q2hlY2tGb3JNYXhBZ2VDYXA6Olll
cyk7CisKIAogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikgewogICAgICAgICBtX25ldHdv
cmtMb2FkQ2hlY2tlci0+c3RvcmVSZWRpcmVjdGlvbklmTmVlZGVkKHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKaW5kZXggYWZiMGU5Yzc5NTY2M2VhYjA1ZWM0YWY0ZjM4MjU0Yjc3
ZmFlYzFkYS4uODVlODhlMTNlNzc3MzZjM2ExMjFiODJmNjcyZTRiZGY1NTQ1NzlhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TmV0d29ya0NhY2hl
OjpDYWNoZT4gbV9jYWNoZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVu
dHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOworICAgIGJvb2wgbV9jYWNoZUVudHJ5SGFz
UmVhY2hlZE1heEFnZUNhcCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkQ2hl
Y2tlcj4gbV9uZXR3b3JrTG9hZENoZWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmlu
ZGV4IDYxYTRkZTVmNjM2Zjc2YTM1NGZkZDg5ZWI4ODFmZWUwM2YyMDg1ZDEuLjBhODRjZmU5MGM0
ZTg2MTUwMDU1NjZhNjBjYjQ2NTgxNDBkMDhhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
Y3BwCkBAIC01NTIsNyArNTUyLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29u
c3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIH0sIFtd
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwogCi0gICAgcmV0dXJuIHsgcmVjb3Jk
SW5mb3JtYXRpb24ua2V5LCB7IH0sIGhlYWRlciwgYm9keSwgeyB9IH07CisgICAgcmV0dXJuIHsg
cmVjb3JkSW5mb3JtYXRpb24ua2V5LCB7IH0sIGhlYWRlciwgYm9keSwgeyB9LCB7IH0gfTsKIH0K
IAogc3RkOjpvcHRpb25hbDxDYWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRlY29kZVJlY29y
ZEhlYWRlcihjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggYWM1ZWRm
N2ZhNmM5ODJjZTljNGJhOThkN2U2NjUwYjMwYWU1N2M1MC4uNmM4ZTFlMDFiNTcwYjc0N2I1MjE2
ZGRiMmMxMDkxYTU5YTVhZWU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMTUyLDExICsxNTIsNiBAQCBzdGF0aWMg
Ym9vbCBjYWNoZVBvbGljeUFsbG93c0V4cGlyZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2Fj
aGVQb2xpY3kgcG9saWN5KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgaGFz
UmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3RhbXAsIGNvbnN0IFNlY29uZHMgbWF4QWdl
KQotewotICAgIHJldHVybiBXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgdGlt
ZXN0YW1wKSA+IG1heEFnZTsKLX0KLQogc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3Rh
bXAsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4U3RhbGUpCiB7CiAgICAgaWYgKHJlc3BvbnNl
LmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpKQpAQCAtMTg4LDExICsxODMsMTMgQEAgc3Rh
dGljIGJvb2wgcmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICByZXR1cm4gcmVzcG9uc2VIYXNFeHBpcmVkKHJlc3Bv
bnNlLCB0aW1lc3RhbXAsIHJlcXVlc3REaXJlY3RpdmVzLm1heFN0YWxlKTsKIH0KIAotc3RhdGlj
IFVzZURlY2lzaW9uIG1ha2VVc2VEZWNpc2lvbihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBt
YXhBZ2UpCitzdGF0aWMgVXNlRGVjaXNpb24gbWFrZVVzZURlY2lzaW9uKGNvbnN0IEVudHJ5JiBl
bnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlm
IChtYXhBZ2UgJiYgaGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKGVudHJ5LnJlc3Bv
bnNlKCksIGVudHJ5LnRpbWVTdGFtcCgpLCBtYXhBZ2UudmFsdWUoKSkpCisjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBpZiAoZW50cnkuaGFzUmVhY2hlZFByZXZhbGVu
dFJlc291cmNlQWdlQ2FwKCkpCiAgICAgICAgIHJldHVybiBVc2VEZWNpc2lvbjo6Tm9EdWVUb1By
ZXZhbGVudFJlc291cmNlQWdlQ2FwOwotICAgIAorI2VuZGlmCisKICAgICAvLyBUaGUgcmVxdWVz
dCBpcyBjb25kaXRpb25hbCBzbyB3ZSBmb3JjZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0d29y
ay4gV2UgbWVyZWx5IGNoZWNrIHRoZSBkaXNrIGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVwZGF0
ZSB0aGUgY2FjaGUgZW50cnkuCiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYmICFl
bnRyeS5yZWRpcmVjdFJlcXVlc3QoKSkKQEAgLTI3OSw3ICsyNzYsNyBAQCBzdGF0aWMgU3RvcmVE
ZWNpc2lvbiBtYWtlU3RvcmVEZWNpc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUgogICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpZZXM7CiB9CiAKLXZvaWQgQ2Fj
aGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRy
aWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlOjpy
ZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEds
b2JhbEZyYW1lSUQmIGZyYW1lSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCkpOwogCkBAIC0zMjMsNyArMzIwLDcgQEAgdm9pZCBDYWNoZTo6cmV0cmlldmUoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUkK
ICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFnZUtleSwgcHJp
b3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGluZm8gPSBXVEZN
b3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFtZUlELCBzZXNzaW9uSURdKGF1dG8gcmVjb3JkLCBh
dXRvIHRpbWluZ3MpIG11dGFibGUgeworICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFnZUtl
eSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGluZm8g
PSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFtZUlEXShhdXRvIHJlY29yZCwgYXV0byB0
aW1pbmdzKSBtdXRhYmxlIHsKICAgICAgICAgaW5mby5zdG9yYWdlVGltaW5ncyA9IHRpbWluZ3M7
CiAKICAgICAgICAgaWYgKCFyZWNvcmQpIHsKQEAgLTM0MCwxMiArMzM3LDcgQEAgdm9pZCBDYWNo
ZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBHbG9iYWxGcmFtZUkKIAogICAgICAgICBhdXRvIGVudHJ5ID0gRW50cnk6OmRlY29kZVN0b3Jh
Z2VSZWNvcmQoKnJlY29yZCk7CiAKLSAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhB
Z2VDYXA7Ci0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICAgICAgaWYg
KGF1dG8gbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgbWF4QWdlQ2FwID0g
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5tYXhBZ2VDYWNoZUNhcChyZXF1ZXN0KTsKLSNlbmRpZgot
ICAgICAgICBhdXRvIHVzZURlY2lzaW9uID0gZW50cnkgPyBtYWtlVXNlRGVjaXNpb24oKmVudHJ5
LCByZXF1ZXN0LCBtYXhBZ2VDYXApIDogVXNlRGVjaXNpb246Ok5vRHVlVG9EZWNvZGVGYWlsdXJl
OworICAgICAgICBhdXRvIHVzZURlY2lzaW9uID0gZW50cnkgPyBtYWtlVXNlRGVjaXNpb24oKmVu
dHJ5LCByZXF1ZXN0KSA6IFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVjb2RlRmFpbHVyZTsKICAgICAg
ICAgc3dpdGNoICh1c2VEZWNpc2lvbikgewogICAgICAgICBjYXNlIFVzZURlY2lzaW9uOjpVc2U6
CiAgICAgICAgICAgICBicmVhazsKQEAgLTM1Myw4ICszNDUsNiBAQCB2b2lkIENhY2hlOjpyZXRy
aWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2Jh
bEZyYW1lSQogICAgICAgICAgICAgZW50cnktPnNldE5lZWRzVmFsaWRhdGlvbih0cnVlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvUHJldmFs
ZW50UmVzb3VyY2VBZ2VDYXA6Ci0gICAgICAgICAgICBlbnRyeSA9IG51bGxwdHI7Ci0gICAgICAg
ICAgICBtX3N0b3JhZ2UtPnJlbW92ZShzdG9yYWdlS2V5KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZW50cnkgPSBudWxscHRyOwpAQCAtNDMwLDcg
KzQyMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uCiAgICAgcmV0dXJuIGNhY2hlRW50cnk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRp
cmVjdFJlcXVlc3QpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZVJlZGlyZWN0
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVkaXJlY3RSZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENoZWNrRm9yTWF4
QWdlQ2FwIHNob3VsZENoZWNrRm9yTWF4QWdlQ2FwKQogewogICAgIExPRyhOZXR3b3JrQ2FjaGUs
ICIoTmV0d29ya1Byb2Nlc3MpIHN0b3JpbmcgcmVkaXJlY3QgJXMgLT4gJXMiLCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7CiAKQEAgLTQ0NSw2ICs0MzUsMTkgQEAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXUKICAgICB9CiAKICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlUmVkaXJlY3RF
bnRyeShyZXF1ZXN0LCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0KTsKKyAgICBpZiAoc2hvdWxk
Q2hlY2tGb3JNYXhBZ2VDYXAgPT0gQ2hlY2tGb3JNYXhBZ2VDYXA6OlllcykgeworI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgICAgIGlmIChhdXRvIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYWdlQ2FwID0gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5tYXhBZ2VDYWNoZUNhcChyZXF1ZXN0KSkgeworICAgICAgICAgICAgICAg
IExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIGNhcHBpbmcgbWF4IGFnZSBmb3Ig
cmVkaXJlY3QgJXMgLT4gJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CisgICAg
ICAgICAgICAgICAgY2FjaGVFbnRyeS0+Y2FwTWF4QWdlKGFnZUNhcC52YWx1ZSgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShz
ZXNzaW9uSUQpOworICAgIH0KKyNlbmRpZgogICAgIGF1dG8gcmVjb3JkID0gY2FjaGVFbnRyeS0+
ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAKICAgICBtX3N0b3JhZ2UtPnN0b3JlKHJlY29yZCwg
bnVsbHB0cik7CkBAIC00NzAsNiArNDczLDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2Fj
aGU6OnVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxCiAg
ICAgcmV0dXJuIHVwZGF0ZUVudHJ5OwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hl
OjpyZXBsYWNlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBFbnRyeSYgZXhpc3RpbmdFbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RS
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENoZWNrRm9yTWF4QWdlQ2FwIHNob3Vs
ZENoZWNrRm9yTWF4QWdlQ2FwKQoreworICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1By
b2Nlc3MpIHJlcGxhY2luZyByZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKKworICAgIHJlbW92ZShleGlzdGluZ0VudHJ5LmtleSgpKTsKKyAgICByZXR1
cm4gc3RvcmVSZWRpcmVjdChyZXF1ZXN0LCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBzZXNz
aW9uSUQsIHNob3VsZENoZWNrRm9yTWF4QWdlQ2FwKTsKK30KKwogdm9pZCBDYWNoZTo6cmVtb3Zl
KGNvbnN0IEtleSYga2V5KQogewogICAgIG1fc3RvcmFnZS0+cmVtb3ZlKGtleSk7CkBAIC02MjEs
NyArNjMyLDcgQEAgdm9pZCBDYWNoZTo6cmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmIGRhdGFL
ZXksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IHVpbnQ4X3QqIGQKIHZvaWQgQ2FjaGU6OnN0b3JlRGF0
YShjb25zdCBEYXRhS2V5JiBkYXRhS2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKICAgICBLZXkga2V5IHsgZGF0YUtleSwgbV9zdG9yYWdlLT5zYWx0KCkgfTsKLSAgICBT
dG9yYWdlOjpSZWNvcmQgcmVjb3JkIHsga2V5LCBXYWxsVGltZTo6bm93KCksIHsgfSwgRGF0YSB7
IGRhdGEsIHNpemUgfSwgeyB9IH07CisgICAgU3RvcmFnZTo6UmVjb3JkIHJlY29yZCB7IGtleSwg
V2FsbFRpbWU6Om5vdygpLCB7IH0sIERhdGEgeyBkYXRhLCBzaXplIH0sIHsgfSwgeyB9IH07CiAg
ICAgbV9zdG9yYWdlLT5zdG9yZShyZWNvcmQsIHsgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGYxNWFkNmJkMGFk
YzhjNzM1OGMxYTk0OTk4MGQ4NDA5ZTYyODMzYTQuLjQ5MGM5MjhlOWRmMTE5ZTc0YTljZmUyYWI4
MjdmZDRkNWExZjQxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NSw2ICs4Niw4
IEBAIGVudW0gY2xhc3MgVXNlRGVjaXNpb24gewogICAgIE5vRHVlVG9QcmV2YWxlbnRSZXNvdXJj
ZUFnZUNhcAogfTsKIAorZW51bSBjbGFzcyBDaGVja0Zvck1heEFnZUNhcCB7IFllcywgTm8gfTsK
KwogdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBhZ2VJRCov
LCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47CiAKIGNsYXNzIENhY2hlIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2FjaGU+IHsKQEAgLTExMywxMSArMTE2LDExIEBAIHB1YmxpYzoKICAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgfTsKICAgICB1c2luZyBSZXRyaWV2ZUNvbXBsZXRp
b25IYW5kbGVyID0gRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3Qg
UmV0cmlldmVJbmZvJik+OwotICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIFBBTDo6U2Vzc2lvbklELCBSZXRyaWV2
ZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIFJldHJpZXZlQ29tcGxldGlv
bkhhbmRsZXImJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9k
eSYpPiYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCwg
Q2hlY2tGb3JNYXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25z
dCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNw
b25zZSk7Ci0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJlcGxhY2VSZWRpcmVjdChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGly
ZWN0UmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQsIENoZWNrRm9yTWF4QWdlQ2FwKTsKICAgICBzdHJ1
Y3QgVHJhdmVyc2FsRW50cnkgewogICAgICAgICBjb25zdCBFbnRyeSYgZW50cnk7CiAgICAgICAg
IGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mIHJlY29yZEluZm87CkBAIC0xNTYsNiArMTU5LDgg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZHVtcEZpbGVQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBk
ZWxldGVEdW1wRmlsZSgpOwogCisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAo
RW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCk7
CisKICAgICBSZWY8U3RvcmFnZT4gbV9zdG9yYWdlOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FD
SEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBhZTExODhh
ZTNhYWQ4ZjgyZDVmYzA2MmY1ZTRmZjQ0ZWQxMWRlNmQxLi5hZmIyMzYwMzExYTQzNGRiYmJlYjgy
MDkyODkyZDg4ZThmNDdhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtOTUsNiArOTUsMTAgQEAg
U3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAg
IGlmIChpc1JlZGlyZWN0KQogICAgICAgICBtX3JlZGlyZWN0UmVxdWVzdC0+ZW5jb2RlV2l0aG91
dFBsYXRmb3JtRGF0YShlbmNvZGVyKTsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisgICAgZW5jb2RlciA8PCBtX21heEFnZUNhcDsKKyNlbmRpZgorICAgIAogICAgIGVu
Y29kZXIuZW5jb2RlQ2hlY2tzdW0oKTsKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVy
KCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKQEAgLTEwMiw3ICsxMDYsMTEgQEAgU3RvcmFnZTo6
UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIGlmIChtX2J1
ZmZlcikKICAgICAgICAgYm9keSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
bV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCkgfTsKIAotICAgIHJldHVybiB7IG1f
a2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKKyNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVh
ZGVyLCBib2R5LCB7IH0sIG1fbWF4QWdlQ2FwIH07CisjZWxzZQorICAgIHJldHVybiB7IG1fa2V5
LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0sIHsgfSB9OworI2VuZGlmCiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3Rv
cmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCkBAIC0xMzMsNiArMTQxLDExIEBAIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6
UmVjb3JkJiBzdG9yYWdlCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIC8vIE9wdGlvbmFsIG1heCBh
Z2UgY2FwLgorICAgIGRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX21heEFnZUNhcCk7CisjZW5kaWYK
KyAgICAKICAgICBpZiAoIWRlY29kZXIudmVyaWZ5Q2hlY2tzdW0oKSkgewogICAgICAgICBMT0co
TmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFp
bHVyZVxuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQxLDYgKzE1NCwyMyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0
b3JhZ2U6OlJlY29yZCYgc3RvcmFnZQogICAgIHJldHVybiBlbnRyeTsKIH0KIAorI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitib29sIEVudHJ5OjpoYXNSZWFjaGVkUHJldmFs
ZW50UmVzb3VyY2VBZ2VDYXAoKSBjb25zdAoreworICAgIHJldHVybiBtX21heEFnZUNhcCAmJiBX
ZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSgpLCB0aW1lU3RhbXAoKSkgPiBtX21h
eEFnZUNhcDsKK30KKwordm9pZCBFbnRyeTo6cHJldmlvdXNFbnRyeUFscmVhZHlDYXBwZWQoKQor
eworICAgIG1fbWF4QWdlQ2FwID0gc3RkOjpudWxsb3B0OworfQorCit2b2lkIEVudHJ5OjpjYXBN
YXhBZ2UoY29uc3QgU2Vjb25kcyBzZWNvbmRzKQoreworICAgIG1fbWF4QWdlQ2FwID0gc2Vjb25k
czsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIHZvaWQgRW50
cnk6OmluaXRpYWxpemVTaGFyZWFibGVSZXNvdXJjZUhhbmRsZUZyb21TdG9yYWdlUmVjb3JkKCkg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuaAppbmRleCA1M2VkZWY3MGNjMTc0ZmU2Y2YwODY1ZDZlZDk1NjNk
NjVmZDc2ZmNlLi5kMzgzOWMwYTg0MGI2NWQwYjgwN2M1MzJiMmY0MjgxM2U1NWYzYWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
cXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MCw2ICs3
MSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFzSlNPTihTdHJpbmdCdWlsZGVyJiwgY29uc3Qg
U3RvcmFnZTo6UmVjb3JkSW5mbyYpIGNvbnN0OwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKKyAgICBib29sIGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCgp
IGNvbnN0OworICAgIHZvaWQgcHJldmlvdXNFbnRyeUFscmVhZHlDYXBwZWQoKTsKKyAgICB2b2lk
IGNhcE1heEFnZShjb25zdCBTZWNvbmRzKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQg
aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDYgKzk1LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIFN0b3JhZ2U6OlJlY29yZCBtX3NvdXJjZVN0b3JhZ2VSZWNvcmQgeyB9OworICAgIAorI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgc3RkOjpvcHRpb25hbDxTZWNv
bmRzPiBtX21heEFnZUNhcDsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCmluZGV4IDdiNDBhYjEyZDk3MzA2YTBlNjljMThlYTUxZmZiMThhMDRlNmE5
ZmIuLjlhNGM4MDY0YzAzN2Y4MWFlMDE4NGY1ZGFmOTQ4Mzc3Zjg2NTk0NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTcxLDcgKzcxLDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlc291CiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGlu
ZywgIlNwZWN1bGF0aXZlIHJlZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7CisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZVJl
ZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgTmV0d29ya0NhY2hlOjpDaGVja0Zvck1heEFn
ZUNhcDo6WWVzKTsKKyNlbHNlCisgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmVSZWRp
cmVjdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIE5ldHdvcmtDYWNoZTo6Q2hlY2tGb3JNYXhBZ2VD
YXA6Ok5vKTsKKyNlbmRpZgogICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBp
ZiB3ZSBjYW4ndCBzdG9yZS4KICAgICBpZiAoIW1fY2FjaGVFbnRyeSkKICAgICAgICAgbV9jYWNo
ZUVudHJ5ID0gbV9jYWNoZS0+bWFrZVJlZGlyZWN0RW50cnkocmVxdWVzdCwgcmVkaXJlY3RSZXNw
b25zZSwgcmVkaXJlY3RSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGM4MTBkMTM1
YzFhOTczZTdhMDlhNjkwNTc5YjdiOGMwMDYxOTgxN2UuLjQzZDM2OGI0M2NmZjM5M2U2ZTY0YTVm
ZTFhODg5YjE0ZGI5ODZmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtNTAwLDcgKzUwMCw4
IEBAIHZvaWQgU3RvcmFnZTo6cmVhZFJlY29yZChSZWFkT3BlcmF0aW9uJiByZWFkT3BlcmF0aW9u
LCBjb25zdCBEYXRhJiByZWNvcmREYXRhKQogICAgICAgICBtZXRhRGF0YS50aW1lU3RhbXAsCiAg
ICAgICAgIGhlYWRlckRhdGEsCiAgICAgICAgIGJvZHlEYXRhLAotICAgICAgICBtZXRhRGF0YS5i
b2R5SGFzaAorICAgICAgICBtZXRhRGF0YS5ib2R5SGFzaCwKKyAgICAgICAgeyB9CiAgICAgfSk7
CiB9CiAKQEAgLTkzOCw3ICs5MzksOCBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0
cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgICAg
ICAgICAgICAgICAgICAgICAgbWV0YURhdGEudGltZVN0YW1wLAogICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVyRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgIHsgfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1ldGFEYXRhLmJvZHlIYXNoCisgICAgICAgICAgICAgICAgICAgICAg
ICBtZXRhRGF0YS5ib2R5SGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsgfQogICAgICAg
ICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICBSZWNvcmRJbmZvIGluZm8gewog
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhRGF0YS5ib2R5
U2l6ZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4IGFjZDJmZTRlMWZhN2ZkMWQzZjlkYzdiMGVkMTNm
MGM4Mjc2ODA0MjguLmZkYTFiOGYyZjY0MDY4M2Y0YjczMjVhMDNlN2UzYzBlYTcwN2VkNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YSBo
ZWFkZXI7CiAgICAgICAgIERhdGEgYm9keTsKICAgICAgICAgc3RkOjpvcHRpb25hbDxTSEExOjpE
aWdlc3Q+IGJvZHlIYXNoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNh
cDsKIAogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNv
dXJjZXNFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAppbmRleCA3Yjg4OTIyOTk1MzlkYjM0YzViMzkx
NGQzYjIxNGNlOGI4MTQzYjk4Li5iZmQzZGU0ZjhmOWU5NzVkZWEwZjRiZTgyNDBiYjRlOTgyODVk
YWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcApAQCAtODgsNyAr
ODgsNyBAQCBTdG9yYWdlOjpSZWNvcmQgU3VicmVzb3VyY2VzRW50cnk6OmVuY29kZUFzU3RvcmFn
ZVJlY29yZCgpIGNvbnN0CiAKICAgICBlbmNvZGVyLmVuY29kZUNoZWNrc3VtKCk7CiAKLSAgICBy
ZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5i
dWZmZXJTaXplKCkgfSwgeyB9LCB7IH19OworICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFt
cCwgeyBlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSB9LCB7IH0sIHsgfSwg
eyB9IH07CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gU3VicmVzb3Vy
Y2VzRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9y
YWdlRW50cnkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNzY0ZDk3M2YzOGFlNTNlYjU4YmMyNGI4ZTk2MTYzOWU1Zjc2M2Vj
MC4uMzdiN2ZjZTQ5NjdlNDRhMTNlZjYzYzNjNDY0ZTI0MmFkMzM3MGMwZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIwIEBACisyMDE4LTExLTAyICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0
aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0IG1hdGNoZXMgYSBuZXR3b3JrIHJlbG9hZCAocmVk
aXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4OTc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQ2MTIyNDI+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJj
ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbDoKKyAgICAg
ICAgICAgIFRoZSB0ZXN0IG5vdyBwZXJmb3JtczoKKyAgICAgICAgICAgIC0gYW4gaW5pdGlhbCBG
ZXRjaCByZXF1ZXN0IHdpdGggYSBwZXJtYW5lbnQgcmVkaXJlY3QgdG8gSUQgMTIzNC4gQ2FwcGVk
IG1heCBhZ2UuCisgICAgICAgICAgICAtIGEgc2Vjb25kIEZldGNoIHJlcXVlc3Qgd2l0aCBhIHBl
cm1hbmVudCByZWRpcmVjdCB0byBJRCA0MzIxLiBDYXBwZWQgbWF4IGFnZS4KKyAgICAgICAgICAg
IC0gYSB0aGlyZCBGZXRjaCByZXF1ZXN0IHdpdGggYSBwZXJtYW5lbnQgcmVkaXJlY3QgdG8gYW5k
IGVtcHR5IElELiBDYXBwZWQgbWF4IGFnZS4KKyAgICAgICAgICAgIC0gYSBmb3VydGggRmV0Y2gg
cmVxdWVzdCB3aXRoIGEgcGVybWFuZW50IHJlZGlyZWN0IHRvIGFuZCBlbXB0eSBJRC4gTWF4IGFn
ZSBjYXAgcmVtb3ZlZC4KKyAgICAgICAgICAgIC0gYSBmaWZ0aCBGZXRjaCByZXF1ZXN0IHdpdGgg
YSBwZXJtYW5lbnQgcmVkaXJlY3QgdG8gYW5kIGVtcHR5IElELiBSZWd1bGFyIGNhY2hlIGhpdC4K
KwogMjAxOC0xMS0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IExvY2F0aW9uIG9iamVjdCBzYW5zIGJyb3dzaW5nIGNvbnRleHQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFn
ZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFs
ZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dAppbmRleCA2M2M2MDY5ZjY0MzY3NWQyMDFkZDYxMTg2
ODczY2FkNTEwMDZlN2NiLi4wY2NlNWFhMWMzNmE5NGQ1NTBiZGUyMjlhZGU0NDZmZjgzNTVjMWNi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1j
YWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC00LDYg
KzQsOSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgbG9hZGVkVXJsIGlzICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNo
by1xdWVyeS5waHA/dmFsdWU9MTIzNCIKK1BBU1MgbG9hZGVkVXJsIGlzICJodHRwOi8vbG9jYWxo
b3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/
dmFsdWU9NDMyMSIKK1BBU1MgbG9hZGVkVXJsIGlzICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9IgorUEFT
UyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iCiBQQVNTIGxvYWRlZFVybCBpcyAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Vj
aG8tcXVlcnkucGhwP3ZhbHVlPSIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1m
b3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKaW5kZXggMDhiODJiYmZiNTQ3NTAwNTcyMWRmODNk
YWY3ZGQ4MzJhZmRjODk1NS4uY2M0OGQ3MGI5YzY2YjQzOTVjYTQ4ZTEzZDM3YWQ2ZTViYzE0YjU2
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1h
eC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCkBAIC0zMSwxMCArMzEsNjMgQEAKICAg
ICB9CiAKICAgICBmdW5jdGlvbiBzZWNvbmRGZXRjaCgpIHsKLSAgICAgICAgLy8gVGhpcyBzaG91
bGQgbm90IHRyaWdnZXIgYSBzdWNjZXNzZnVsIGNhY2hlIGhpdC4KKyAgICAgICAgLy8gVGhpcyBz
aG91bGQgbm90IHRyaWdnZXIgYSBzdWNjZXNzZnVsIGNhY2hlIGhpdCBhbmQgY3JlYXRlIGFub3Ro
ZXIgY2FwcGVkIGNhY2hlIGVudHJ5LgogICAgICAgICBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVk
aXJlY3QucGhwIiwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjYWNoZTogImZvcmNl
LWNhY2hlIiwKKyAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAgICAgICAg
ICJYLVdlYktpdCI6ICI0MzIxIiwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVkVXJs
ID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2Fk
ZWRVcmwiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVz
b3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTQzMjEiKTsKKyAgICAgICAgICAgIHRoaXJkRmV0
Y2goKTsKKyAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZh
bHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0
aGlyZEZldGNoKCkgeworICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIHN1Y2Nl
c3NmdWwgY2FjaGUgaGl0IGFuZCBjcmVhdGUgYW5vdGhlciBjYXBwZWQgY2FjaGUgZW50cnkuCisg
ICAgICAgIGZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHAiLAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhY2hlOiAiZm9yY2UtY2FjaGUiLAorICAgICAgICAgICAgfQor
ICAgICAgICApLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGxvYWRlZFVy
bCA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibG9h
ZGVkVXJsIiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jl
c291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iKTsKKyAgICAgICAgICAgIGZvdXJ0aEZldGNo
KCk7CisgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKGVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxz
ZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZm91
cnRoRmV0Y2goKSB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgc3VjY2Vz
c2Z1bCBjYWNoZSBoaXQgYnV0IGNsZWFyIGNhcHBpbmcuCisgICAgICAgIGZldGNoKCJodHRwOi8v
bG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBl
cm1hbmVudC1yZWRpcmVjdC5waHAiLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNh
Y2hlOiAiZm9yY2UtY2FjaGUiLAorICAgICAgICAgICAgfQorICAgICAgICApLnRoZW4oZnVuY3Rp
b24ocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGxvYWRlZFVybCA9IHJlc3BvbnNlLnVybDsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibG9hZGVkVXJsIiwgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBo
cD92YWx1ZT0iKTsKKyAgICAgICAgICAgIGZpZnRoRmV0Y2goKTsKKyAgICAgICAgfSkuY2F0Y2go
ZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoZXJyb3IubWVzc2FnZSk7
CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaWZ0aEZldGNoKCkgeworICAgICAgICAv
LyBUaGlzIHNob3VsZCB0cmlnZ2VyIGEgcmVndWxhciwgc3VjY2Vzc2Z1bCBjYWNoZSBoaXQuCisg
ICAgICAgIGZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHAiLAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAgICAgICAgICAgICAgIlgtV2Vi
S2l0IjogIjEyMzQiLAorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBsb2FkZWRVcmwgPSByZXNw
b25zZS51cmw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353895</attachid>
            <date>2018-11-05 11:54:23 -0800</date>
            <delta_ts>2018-11-05 11:58:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189760-20181105115422.patch</filename>
            <type>text/plain</type>
            <size>31173</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdjMWRkYzUwZTYzNTZi
ZDQ1YzU4Mjc3NGVkZmQ0ZjU0MGRlNTg3NS4uMTZjYTk0NThmNmU0MDIyZDU5NDBiOTRhZTYxYzdj
YmI3N2YwMzEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTExLTA1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0
IG1hdGNoZXMgYSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0ZXN0IGZsZXNoZWQgb3V0LgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNSZWRpcmVjdGlvbiBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzUmVkaXJlY3Rpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAgICAgTW92ZWQgdG8gdGhlIGltcGxlbWVudGF0aW9uIGZpbGUg
c28gdGhhdCBJIGNhbiBleHBvcnQgaXQgd2l0aG91dCB3YXJuaW5nLgorCiAyMDE4LTExLTAxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTG9jYXRpb24gb2JqZWN0
IHNhbnMgYnJvd3NpbmcgY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MDYxMTQ3MmVkZGEzMGE0YTFiODIy
NDhiMDIyZTY2NWQyNGRiMzY5Li5iMWU3NDE3ODYyNDhlZjQyZGNhMGFhMGExNmFhNjgwNzcxNzdj
MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTExLTA1ICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGlj
czogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0IG1hdGNoZXMg
YSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBhIHJlZGlyZWN0IGNhY2hlIGVudHJ5IGZvciBhIHByZXZhbGVudCByZXNvdXJjZSBy
ZWFjaGVzIGl0cyBtYXgKKyAgICAgICAgYWdlIGNhcCwgaXQgaXMgbG9hZGVkIGFnYWluIGZyb20g
dGhlIG5ldHdvcmsgYW5kIHRoZSBuZXR3b3JrIHJlc3BvbnNlCisgICAgICAgIGlzIGNvbXBhcmVk
IHdpdGggd2hhdCdzIGluIHRoZSBjYWNoZS4gSWYgaXQncyBhIG1hdGNoLCB0aGUgY2FjaGUgZW50
cnkKKyAgICAgICAgaXMgZnVsbHkgYWNjZXB0ZWQuIElmIG5vdCwgYSBuZXcgY2FwcGVkIGNhY2hl
IGVudHJ5IGlzIGNyZWF0ZWQuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHN0aWxsIG9mZiBi
eSBkZWZhdWx0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VD
YWNoZWRSZWRpcmVjdCBjb25zdCk6CisgICAgICAgICAgICBOb3cgY2hlY2tzIHRoZSBuZXcgbWVt
YmVyIG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24uCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgICAg
IE5ldyBjYXNlIGhhbmRsZWQgZm9yIGVudHJ5LT5oYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VB
Z2VDYXAoKS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgICAgIFRoaXMgaXMgd2hlcmUgdGhlIG5ldyBs
b2dpYyBjb21wYXJlcyB0aGUgaW5jb21pbmcgcmVkaXJlY3Qgd2l0aCB0aGUKKyAgICAgICAgICAg
IGNhY2hlZCBvbmUuIElmIHRoZXkgbWF0Y2gsIHRoZSBjYWNoZSBlbnRyeSBpcyB1cGRhdGVkIHRv
IG5vIGxvbmdlcgorICAgICAgICAgICAgYmUgY2FwcGVkLiBJZiB0aGV5IGRvbid0IG1hdGNoLCBh
IG5ldyBlbnRyeSBpcyBzdG9yZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICAgICBBZGRlZCB0aGUgbV9jYWNoZUVudHJ5Rm9yTWF4
QWdlQ2FwVmFsaWRhdGlvbiBtZW1iZXIuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjptYWtlVXNl
RGVjaXNpb24pOgorICAgICAgICAgICAgUmVzdG9yZWQgdG8gcHJldmlvdXMgYmVoYXZpb3Igd2hp
Y2ggbWVhbnMKKyAgICAgICAgICAgIFVzZURlY2lzaW9uOjpOb0R1ZVRvUHJldmFsZW50UmVzb3Vy
Y2VBZ2VDYXAgd2FzIHJlbW92ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2Fj
aGU6OnJldHJpZXZlKToKKyAgICAgICAgICAgIFJlc3RvcmVkIHRvIHByZXZpb3VzIGJlaGF2aW9y
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZVJlZGlyZWN0KToK
KyAgICAgICAgICAgIE5vdyB0YWtlcyB0aGUgb3B0aW9uYWwgbWF4QWdlQ2FwIGFuZCBjYXBzIHRo
ZSBlbnRyeSdzIG1heCBhZ2UgaWYgaXQncyBzZXQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Q2FjaGU6OnJlcGxhY2VSZWRpcmVjdCk6CisgICAgICAgICAgICBOZXcgZnVuY3Rpb24u
IFJlbW92ZXMgdGhlIGV4aXN0aW5nIGNhY2hlZCByZWRpcmVjdCBhbmQgc3RvcmVzIHRoZQorICAg
ICAgICAgICAgbmV3IG9uZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpoYXNSZWFj
aGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXApOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgICAgIE5vdyBlbmNvZGVzIG1fbWF4
QWdlQ2FwLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9y
YWdlUmVjb3JkKToKKyAgICAgICAgICAgIE5vdyBkZWNvZGVzIG1fbWF4QWdlQ2FwLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpoYXNSZWFjaGVkUHJldmFsZW50UmVzb3Vy
Y2VBZ2VDYXAgY29uc3QpOgorICAgICAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6RW50cnk6OnByZXZpb3VzRW50cnlBbHJlYWR5Q2FwcGVkKToKKyAgICAgICAg
ICAgIEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpjYXBNYXhB
Z2UpOgorICAgICAgICAgICAgQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuaDoKKyAgICAgICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCBtX21h
eEFnZUNhcC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgICAgICBOb3cgZ2V0
cyB0aGUgb3B0aW9uYWwgbWF4IGFnZSBjYXAgZnJvbSB0aGUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
IGFuZCBzZW5kcyBpdAorICAgICAgICAgICAgdG8gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoKS4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpjYWNoZWRFbnRyeVJldXNlRmFpbHVyZVRv
RGlhZ25vc3RpY0tleSk6CisgICAgICAgICAgICBSZW1vdmVkIGhhbmRsaW5nIG9mIFVzZURlY2lz
aW9uOjpOb0R1ZVRvUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAuCisKIDIwMTgtMTEtMDEgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RvcmFnZSBsaW1p
dCBmb3IgSW5kZXhlZERCCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IGFiN2IyZTFkZDQwOTgxZjhmMGY1
NDFjNWZjODhkMzllZTY3ZWUzYzMuLjc2NjcyMTkxNjk4ZjFhNmIzYjBhZTlmYTFkNTA1NDdlMTIz
MzRjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC0yOTYsNiArMjk2LDExIEBAIHZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OnNldEhUVFBTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQogICAgIC8v
IEZJWE1FOiBTaG91bGQgaW52YWxpZGF0ZSBvciB1cGRhdGUgcGxhdGZvcm0gcmVzcG9uc2UgaWYg
cHJlc2VudC4KIH0KIAorYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNSZWRpcmVjdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzUmVkaXJlY3Rpb25TdGF0dXNDb2RlKG1faHR0cFN0YXR1
c0NvZGUpOworfQorCiBjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwU3Rh
dHVzVGV4dCgpIGNvbnN0IAogewogICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgK
aW5kZXggZDhmY2MxNDMxYjUwYmM3YWI2N2YxZDE5NjhiOTFjZTcwZWExNjFlZi4uNmZjYTZiNzUx
ZjU3ZjA4MWY0M2ExMzQzYjJlNTE1MGNlMmZkNjIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtOTEsNyAr
OTEsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgaHR0cFN0YXR1c0NvZGUo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBTdGF0dXNDb2RlKGludCk7
Ci0gICAgYm9vbCBpc1JlZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNSZWRpcmVjdGlvblN0
YXR1c0NvZGUobV9odHRwU3RhdHVzQ29kZSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
UmVkaXJlY3Rpb24oKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmluZyYg
aHR0cFN0YXR1c1RleHQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBT
dGF0dXNUZXh0KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVjYzA0N2ZmNTJhOTg5
ZThkYjM2OWIxZjExZjBjZGEyZTY5Njg2NGQuLjY0ZTM0YTg4ZGExMGIzOTliODUzNDg4NzA0MDVk
ZmM3NTA0OGE1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0hUVFBIZWFkZXJOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUFBhcnNlcnMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0
aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTE1NCw3ICsxNTUsNyBAQCBib29sIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y2FuVXNlQ2FjaGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KSBjb25zdAogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuVXNlQ2FjaGVkUmVk
aXJlY3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewotICAgIGlmICgh
Y2FuVXNlQ2FjaGUocmVxdWVzdCkpCisgICAgaWYgKCFjYW5Vc2VDYWNoZShyZXF1ZXN0KSB8fCBt
X2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgLy8gTGltaXQgY2FjaGVkIHJlZGlyZWN0cyB0byBhdm9pZCBjeWNsZXMgYW5kIG90aGVy
IHRyb3VibGUuCiAgICAgLy8gTmV0d29ya2luZyBsYXllciBmb2xsb3dzIG92ZXIgMzAgcmVkaXJl
Y3RzIGJ1dCBjYWNoaW5nIHRoYXQgbWFueSBzZWVtcyB1bm5lY2Vzc2FyeS4KQEAgLTIxNiw3ICsy
MTcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICBBU1NFUlQoY2FuVXNlQ2FjaGUocmVx
dWVzdCkpOwogCiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyKHRoaXMp
OwotICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVlc3QsIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwgc2Vzc2lvbklEKCksIFt0aGlzLCBsb2FkZXIg
PSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1d
KGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+cmV0cmlldmUo
cmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCB9LCBbdGhpcywgbG9hZGVyID0gV1RGTW92ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgewogICAg
ICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkgewogICAgICAgICAgICAgLy8gVGhlIGxvYWRl
ciBoYXMgYmVlbiBhYm9ydGVkIGFuZCBpcyBvbmx5IGhlbGQgYWxpdmUgYnkgdGhpcyBsYW1iZGEu
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjksNiArMjMwLDE1IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVx
dWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgICAgIGlmIChlbnRyeS0+
aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNo
ZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVz
b3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeUZvck1h
eEFnZUNhcFZhbGlkYXRpb24gPSBXVEZNb3ZlKGVudHJ5KTsKKyAgICAgICAgICAgIFJlc291cmNl
UmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0ID0gb3JpZ2luYWxSZXF1ZXN0KCk7CisgICAgICAg
ICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0
KSwgRmlyc3RMb2FkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5k
aWYKICAgICAgICAgaWYgKGVudHJ5LT5yZWRpcmVjdFJlcXVlc3QoKSkgewogICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBIYW5kbGluZyByZWRp
cmVjdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkp
OwogICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50
cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShlbnRyeSkpOwpAQCAtNTg4LDggKzU5OCwzMiBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogewogICAgICsrbV9yZWRpcmVjdENvdW50OwogCisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBib29sIGV4aXN0aW5nQ2Fj
aGVFbnRyeUlzVmFsaWQgPSBmYWxzZTsKKyAgICBpZiAobV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2Fw
VmFsaWRhdGlvbikgeworICAgICAgICBBU1NFUlQocmVkaXJlY3RSZXNwb25zZS5zb3VyY2UoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOworICAgICAgICBBU1NFUlQocmVk
aXJlY3RSZXNwb25zZS5pc1JlZGlyZWN0aW9uKCkpOworICAgICAgICBpZiAocmVkaXJlY3RSZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKSA9
PSBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uLT5yZXNwb25zZSgpLmh0dHBIZWFk
ZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pKSB7CisgICAgICAgICAg
ICBleGlzdGluZ0NhY2hlRW50cnlJc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY2FjaGVF
bnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24tPnByZXZpb3VzRW50cnlBbHJlYWR5Q2FwcGVkKCk7
CisgICAgICAgICAgICBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uID0gbV9jYWNo
ZS0+cmVwbGFjZVJlZGlyZWN0KHJlcXVlc3QsICptX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxp
ZGF0aW9uLCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6bnVsbG9wdCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9jYWNoZS0+cmVtb3ZlKG1fY2FjaGVFbnRy
eUZvck1heEFnZUNhcFZhbGlkYXRpb24tPmtleSgpKTsKKworICAgICAgICAvLyBXZSdyZSBkb25l
IHNpbmNlIHRoZSBjYWNoZSBlbnRyeSBoYXMgZWl0aGVyIGJlZW4gcmVwbGFjZWQgb3IgcmVtb3Zl
ZC4KKyAgICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbiA9IG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKCFleGlzdGluZ0NhY2hlRW50cnlJc1ZhbGlkICYmIHJlZGlyZWN0
UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrICYm
IGNhblVzZUNhY2hlZFJlZGlyZWN0KHJlcXVlc3QpKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gbWF4QWdlQ2FwOworICAgICAgICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCgpKSkKKyAgICAgICAgICAgIG1heEFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
bWF4QWdlQ2FjaGVDYXAocmVxdWVzdCk7CisgICAgICAgIG1fY2FjaGUtPnN0b3JlUmVkaXJlY3Qo
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBtYXhBZ2VDYXApOwor
ICAgIH0KKyNlbHNlCiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrICYmIGNhblVzZUNhY2hlZFJlZGlyZWN0KHJlcXVl
c3QpKQotICAgICAgICBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7CisgICAgICAgIG1fY2FjaGUtPnN0b3JlUmVkaXJlY3Qo
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBzdGQ6Om51bGxvcHQp
OworI2VuZGlmCiAKICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKICAgICAgICAgbV9u
ZXR3b3JrTG9hZENoZWNrZXItPnN0b3JlUmVkaXJlY3Rpb25JZk5lZWRlZChyZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGFmYjBlOWM3OTU2NjNlYWIwNWVjNGFmNGYzODI1
NGI3N2ZhZWMxZGEuLjFlMTRmMjRkZjYzNGMwOGQxYTkyMmQ3MjQ2NWE1ZDU1NzI5Mjk1ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5ldHdvcmtD
YWNoZTo6Q2FjaGU+IG1fY2FjaGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hl
OjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsK
ICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRp
cmVjdCB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+
IG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWRDaGVja2VyPiBtX25ldHdvcmtMb2FkQ2hlY2tlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAppbmRleCBhYzVlZGY3ZmE2Yzk4MmNlOWM0YmE5OGQ3ZTY2NTBiMzBhZTU3YzUwLi4zZmFl
ZTAwNGUwMzM0OGM2YzZjMmQ2YTRlYzVkYjZkODc3ZGNhZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0xNTIsMTEg
KzE1Miw2IEBAIHN0YXRpYyBib29sIGNhY2hlUG9saWN5QWxsb3dzRXhwaXJlZChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGF0aWMgYm9vbCBoYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgY29u
c3QgU2Vjb25kcyBtYXhBZ2UpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50
QWdlKHJlc3BvbnNlLCB0aW1lc3RhbXApID4gbWF4QWdlOwotfQotCiBzdGF0aWMgYm9vbCByZXNw
b25zZUhhc0V4cGlyZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFdhbGxUaW1lIHRpbWVzdGFtcCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhTdGFsZSkKIHsK
ICAgICBpZiAocmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkpCkBAIC0xODgs
MTEgKzE4Myw4IEBAIHN0YXRpYyBib29sIHJlc3BvbnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCiAgICAgcmV0dXJuIHJlc3BvbnNl
SGFzRXhwaXJlZChyZXNwb25zZSwgdGltZXN0YW1wLCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFs
ZSk7CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lvbiBtYWtlVXNlRGVjaXNpb24oY29uc3QgRW50cnkm
IGVudHJ5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6b3B0
aW9uYWw8U2Vjb25kcz4gbWF4QWdlKQorc3RhdGljIFVzZURlY2lzaW9uIG1ha2VVc2VEZWNpc2lv
bihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBpZiAobWF4QWdlICYmIGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFn
ZUNhcChlbnRyeS5yZXNwb25zZSgpLCBlbnRyeS50aW1lU3RhbXAoKSwgbWF4QWdlLnZhbHVlKCkp
KQotICAgICAgICByZXR1cm4gVXNlRGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFn
ZUNhcDsKLSAgICAKICAgICAvLyBUaGUgcmVxdWVzdCBpcyBjb25kaXRpb25hbCBzbyB3ZSBmb3Jj
ZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0d29yay4gV2UgbWVyZWx5IGNoZWNrIHRoZSBkaXNr
IGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVwZGF0ZSB0aGUgY2FjaGUgZW50cnkuCiAgICAgaWYg
KHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYmICFlbnRyeS5yZWRpcmVjdFJlcXVlc3QoKSkKQEAg
LTI3OSw3ICsyNzEsNyBAQCBzdGF0aWMgU3RvcmVEZWNpc2lvbiBtYWtlU3RvcmVEZWNpc2lvbihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUgogICAgIHJldHVybiBTdG9y
ZURlY2lzaW9uOjpZZXM7CiB9CiAKLXZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFJldHJp
ZXZlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogCkBAIC0zMjMsNyArMzE1
LDcgQEAgdm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3Rv
cmFnZS0+cmV0cmlldmUoc3RvcmFnZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFt
ZUlELCBzZXNzaW9uSURdKGF1dG8gcmVjb3JkLCBhdXRvIHRpbWluZ3MpIG11dGFibGUgeworICAg
IG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFnZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5
LCBmcmFtZUlEXShhdXRvIHJlY29yZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKICAgICAgICAg
aW5mby5zdG9yYWdlVGltaW5ncyA9IHRpbWluZ3M7CiAKICAgICAgICAgaWYgKCFyZWNvcmQpIHsK
QEAgLTM0MCwyMiArMzMyLDEzIEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAg
YXV0byBlbnRyeSA9IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwOwotI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgICAgIGlmIChhdXRvIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgICAgIG1heEFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4
QWdlQ2FjaGVDYXAocmVxdWVzdCk7Ci0jZW5kaWYKLSAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9
IGVudHJ5ID8gbWFrZVVzZURlY2lzaW9uKCplbnRyeSwgcmVxdWVzdCwgbWF4QWdlQ2FwKSA6IFVz
ZURlY2lzaW9uOjpOb0R1ZVRvRGVjb2RlRmFpbHVyZTsKKyAgICAgICAgYXV0byB1c2VEZWNpc2lv
biA9IGVudHJ5ID8gbWFrZVVzZURlY2lzaW9uKCplbnRyeSwgcmVxdWVzdCkgOiBVc2VEZWNpc2lv
bjo6Tm9EdWVUb0RlY29kZUZhaWx1cmU7CiAgICAgICAgIHN3aXRjaCAodXNlRGVjaXNpb24pIHsK
ICAgICAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VXNlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgVXNlRGVjaXNpb246OlZhbGlkYXRlOgogICAgICAgICAgICAgZW50cnktPnNldE5l
ZWRzVmFsaWRhdGlvbih0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFVz
ZURlY2lzaW9uOjpOb0R1ZVRvUHJldmFsZW50UmVzb3VyY2VBZ2VDYXA6Ci0gICAgICAgICAgICBl
bnRyeSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBtX3N0b3JhZ2UtPnJlbW92ZShzdG9yYWdlS2V5
KTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZW50
cnkgPSBudWxscHRyOwogICAgICAgICB9OwpAQCAtNDMwLDcgKzQxMyw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uCiAgICAgcmV0dXJuIGNhY2hlRW50cnk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCitzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBz
dGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcCkKIHsKICAgICBMT0coTmV0d29ya0NhY2hl
LCAiKE5ldHdvcmtQcm9jZXNzKSBzdG9yaW5nIHJlZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51
cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogCkBAIC00NDUsNiArNDI4LDE2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1CiAgICAgfQogCiAgICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVJlZGlyZWN0
RW50cnkocmVxdWVzdCwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7CisKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChtYXhBZ2VDYXApIHsKKyAgICAgICAg
TE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgY2FwcGluZyBtYXggYWdlIGZvciBy
ZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
LCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAg
ICAgY2FjaGVFbnRyeS0+Y2FwTWF4QWdlKG1heEFnZUNhcC52YWx1ZSgpKTsKKyAgICB9CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShtYXhBZ2VDYXApOworI2VuZGlmCisKICAgICBhdXRvIHJlY29y
ZCA9IGNhY2hlRW50cnktPmVuY29kZUFzU3RvcmFnZVJlY29yZCgpOwogCiAgICAgbV9zdG9yYWdl
LT5zdG9yZShyZWNvcmQsIG51bGxwdHIpOwpAQCAtNDcwLDYgKzQ2MywxNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IENhY2hlOjp1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcQogICAgIHJldHVybiB1cGRhdGVFbnRyeTsKIH0KIAorc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6cmVwbGFjZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRW50cnkmIGV4aXN0aW5nRW50cnksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAp
Cit7CisgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgcmVwbGFjaW5nIHJl
ZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCks
IHJlZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworCisgICAg
cmVtb3ZlKGV4aXN0aW5nRW50cnkua2V5KCkpOworICAgIHJldHVybiBzdG9yZVJlZGlyZWN0KHJl
cXVlc3QsIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIG1heEFnZUNhcCk7Cit9CisKIHZvaWQg
Q2FjaGU6OnJlbW92ZShjb25zdCBLZXkmIGtleSkKIHsKICAgICBtX3N0b3JhZ2UtPnJlbW92ZShr
ZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmgKaW5kZXggZjE1YWQ2YmQwYWRjOGM3MzU4YzFhOTQ5OTgwZDg0MDllNjI4MzNhNC4uOGRi
NGUyNzU5NWMxZTFkMmE0MDEwNWUzNjA5YjVhNDMwMWQ5YTk3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9T
ZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTgxLDggKzgyLDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAg
Tm9EdWVUb1ZhcnlpbmdIZWFkZXJNaXNtYXRjaCwKICAgICBOb0R1ZVRvTWlzc2luZ1ZhbGlkYXRv
ckZpZWxkcywKICAgICBOb0R1ZVRvRGVjb2RlRmFpbHVyZSwKLSAgICBOb0R1ZVRvRXhwaXJlZFJl
ZGlyZWN0LAotICAgIE5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcAorICAgIE5vRHVlVG9F
eHBpcmVkUmVkaXJlY3QKIH07CiAKIHVzaW5nIEdsb2JhbEZyYW1lSUQgPSBzdGQ6OnBhaXI8dWlu
dDY0X3QgLyp3ZWJQYWdlSUQqLywgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+OwpAQCAtMTEzLDEx
ICsxMTMsMTEgQEAgcHVibGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICB9OwogICAgIHVzaW5nIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lk
IChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9p
ZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxG
cmFtZUlEJiwgUEFMOjpTZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Cisg
ICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBH
bG9iYWxGcmFtZUlEJiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwotCisgICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiByZXBsYWNlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdHJ1Y3QgVHJhdmVyc2FsRW50cnkgewogICAgICAg
ICBjb25zdCBFbnRyeSYgZW50cnk7CiAgICAgICAgIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8m
IHJlY29yZEluZm87CkBAIC0xNTYsNiArMTU2LDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZHVt
cEZpbGVQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVEdW1wRmlsZSgpOwogCisgICAgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAoRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCk7CisKICAgICBSZWY8U3RvcmFnZT4gbV9zdG9y
YWdlOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAppbmRleCBhZTExODhhZTNhYWQ4ZjgyZDVmYzA2MmY1ZTRmZjQ0ZWQx
MWRlNmQxLi5jNGE1ZTY4YmIzMWZmZDYxNmJiNDFkNDQ0M2E1ZWNhMjliMDUxMjMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcApAQCAtOTUsNiArOTUsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNv
ZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIGlmIChpc1JlZGlyZWN0KQogICAgICAgICBt
X3JlZGlyZWN0UmVxdWVzdC0+ZW5jb2RlV2l0aG91dFBsYXRmb3JtRGF0YShlbmNvZGVyKTsKIAor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgZW5jb2RlciA8PCBtX21h
eEFnZUNhcDsKKyNlbmRpZgorICAgIAogICAgIGVuY29kZXIuZW5jb2RlQ2hlY2tzdW0oKTsKIAog
ICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsK
QEAgLTEzMyw2ICsxMzcsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2Rl
U3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisgICAgZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fbWF4QWdlQ2FwKTsKKyNlbmRpZgor
ICAgIAogICAgIGlmICghZGVjb2Rlci52ZXJpZnlDaGVja3N1bSgpKSB7CiAgICAgICAgIExPRyhO
ZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWls
dXJlXG4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDEsNiArMTQ5LDIzIEBAIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3Rv
cmFnZTo6UmVjb3JkJiBzdG9yYWdlCiAgICAgcmV0dXJuIGVudHJ5OwogfQogCisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK2Jvb2wgRW50cnk6Omhhc1JlYWNoZWRQcmV2YWxl
bnRSZXNvdXJjZUFnZUNhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWF4QWdlQ2FwICYmIFdl
YkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlKCksIHRpbWVTdGFtcCgpKSA+IG1fbWF4
QWdlQ2FwOworfQorCit2b2lkIEVudHJ5OjpwcmV2aW91c0VudHJ5QWxyZWFkeUNhcHBlZCgpCit7
CisgICAgbV9tYXhBZ2VDYXAgPSBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgRW50cnk6OmNhcE1h
eEFnZShjb25zdCBTZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9tYXhBZ2VDYXAgPSBzZWNvbmRz
OworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBFbnRy
eTo6aW5pdGlhbGl6ZVNoYXJlYWJsZVJlc291cmNlSGFuZGxlRnJvbVN0b3JhZ2VSZWNvcmQoKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDUzZWRlZjcwY2MxNzRmZTZjZjA4NjVkNmVkOTU2M2Q2
NWZkNzZmY2UuLmQzODM5YzBhODQwYjY1ZDBiODA3YzUzMmIyZjQyODEzZTU1ZjNhZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDYgKzcx
LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXNKU09OKFN0cmluZ0J1aWxkZXImLCBjb25zdCBT
dG9yYWdlOjpSZWNvcmRJbmZvJikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorICAgIGJvb2wgaGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkg
Y29uc3Q7CisgICAgdm9pZCBwcmV2aW91c0VudHJ5QWxyZWFkeUNhcHBlZCgpOworICAgIHZvaWQg
Y2FwTWF4QWdlKGNvbnN0IFNlY29uZHMpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBp
bml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdDsKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKQpAQCAtODgsNiArOTUsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgU3RvcmFnZTo6UmVjb3JkIG1fc291cmNlU3RvcmFnZVJlY29yZCB7IH07CisgICAgCisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+IG1fbWF4QWdlQ2FwOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKaW5kZXggN2I0MGFiMTJkOTczMDZhMGU2OWMxOGVhNTFmZmIxOGEwNGU2YTlm
Yi4uNTVmMDNkMTM0OTEwZDQ1OTAwZTIyOWU5ZjNlNTZmYzdkMzEzZWM3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtMb2FkLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJTZXNz
aW9uVHJhY2tlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAK
QEAgLTcxLDcgKzcyLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291CiB7CiAgICAgTE9HKE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIlNwZWN1bGF0aXZlIHJlZGlyZWN0ICVz
IC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZWRpcmVjdFJl
cXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX2NhY2hlRW50cnkg
PSBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGly
ZWN0UmVxdWVzdCk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBz
dGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcDsKKyAgICBpZiAoYXV0byBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKQorICAgICAgICBtYXhBZ2VD
YXAgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPm1heEFnZUNhY2hlQ2FwKHJlcXVlc3QpOworICAg
IG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlUmVkaXJlY3QocmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBtYXhBZ2VDYXApOworI2Vsc2UKKyAgICBtX2NhY2hl
RW50cnkgPSBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Us
IHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpudWxsb3B0KTsKKyNlbmRpZgogICAgIC8vIENyZWF0ZSBh
IHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICBpZiAoIW1fY2Fj
aGVFbnRyeSkKICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZVJlZGlyZWN0RW50
cnkocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0YXRpc3RpY3MuY3BwCmluZGV4IGExNTVlOWYyZTNhZTEzODE0NDNhNGEwY2UwYjI0MDc1N2U0
YTY5ZWIuLmEzNzgwYzU1YmM2NDM1NzdiNGQwNzgwMWUxNGM1MWUxZDAwYWU0OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmNwcApAQCAtMjgyLDggKzI4Miw2IEBAIHN0YXRpYyBTdHJpbmcgY2Fj
aGVkRW50cnlSZXVzZUZhaWx1cmVUb0RpYWdub3N0aWNLZXkoVXNlRGVjaXNpb24gZGVjaXNpb24p
CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om1pc3NpbmdW
YWxpZGF0b3JGaWVsZHNLZXkoKTsKICAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVjb2Rl
RmFpbHVyZToKICAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvRXhwaXJlZFJlZGlyZWN0Ogot
ICAgIGNhc2UgVXNlRGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDoKLSAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6b3RoZXJLZXkoKTsK
ICAgICBjYXNlIFVzZURlY2lzaW9uOjpVc2U6CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VmFsaWRh
dGU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc2NGQ5NzNmMzhhZTUz
ZWI1OGJjMjRiOGU5NjE2MzllNWY3NjNlYzAuLmMzZmFiMTYzNzc1OTZkYTAxNGRlZmEyOTBjNmM3
OGI1ZTE2ODAxNDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMS0wNSAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRp
c3RpY3M6IFJlbW92ZSBjYXAgb24gcGFydGl0aW9uZWQgY2FjaGUgbWF4IGFnZSBpZiBpdCBtYXRj
aGVzIGEgbmV0d29yayByZWxvYWQgKHJlZGlyZWN0LW9ubHkpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQ0NjEyMjQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgt
YWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFs
ZW50LXJlc291cmNlLmh0bWw6CisgICAgICAgICAgICBUaGUgdGVzdCBub3cgcGVyZm9ybXM6Cisg
ICAgICAgICAgICAtIGFuIGluaXRpYWwgRmV0Y2ggcmVxdWVzdCB3aXRoIGEgcGVybWFuZW50IHJl
ZGlyZWN0IHRvIElEIDEyMzQuIENhcHBlZCBtYXggYWdlLgorICAgICAgICAgICAgLSBhIHNlY29u
ZCBGZXRjaCByZXF1ZXN0IHdpdGggYSBwZXJtYW5lbnQgcmVkaXJlY3QgdG8gSUQgNDMyMS4gQ2Fw
cGVkIG1heCBhZ2UuCisgICAgICAgICAgICAtIGEgdGhpcmQgRmV0Y2ggcmVxdWVzdCB3aXRoIGEg
cGVybWFuZW50IHJlZGlyZWN0IHRvIGFuZCBlbXB0eSBJRC4gQ2FwcGVkIG1heCBhZ2UuCisgICAg
ICAgICAgICAtIGEgZm91cnRoIEZldGNoIHJlcXVlc3Qgd2l0aCBhIHBlcm1hbmVudCByZWRpcmVj
dCB0byBhbmQgZW1wdHkgSUQuIE1heCBhZ2UgY2FwIHJlbW92ZWQuCisgICAgICAgICAgICAtIGEg
ZmlmdGggRmV0Y2ggcmVxdWVzdCB3aXRoIGEgcGVybWFuZW50IHJlZGlyZWN0IHRvIGFuZCBlbXB0
eSBJRC4gUmVndWxhciBjYWNoZSBoaXQuCisKIDIwMTgtMTEtMDEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBMb2NhdGlvbiBvYmplY3Qgc2FucyBicm93c2luZyBj
b250ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2Fw
LWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQKaW5kZXgg
NjNjNjA2OWY2NDM2NzVkMjAxZGQ2MTE4Njg3M2NhZDUxMDA2ZTdjYi4uMGNjZTVhYTFjMzZhOTRk
NTUwYmRlMjI5YWRlNDQ2ZmY4MzU1YzFjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxl
bnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291
cmNlLWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0LDkgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUK
IAogCiBQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTEyMzQiCitQQVNTIGxv
YWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTQzMjEiCitQQVNTIGxvYWRlZFVybCBpcyAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Vj
aG8tcXVlcnkucGhwP3ZhbHVlPSIKK1BBU1MgbG9hZGVkVXJsIGlzICJodHRwOi8vbG9jYWxob3N0
OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFs
dWU9IgogUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50
LXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCmluZGV4
IDA4YjgyYmJmYjU0NzUwMDU3MjFkZjgzZGFmN2RkODMyYWZkYzg5NTUuLjE3ODAwNGJjZTcxNTZj
ZDU5MDAwZGJjNzNkZDE1YTBlMWExYzk5ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFs
ZW50LXJlc291cmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRt
bApAQCAtMzEsMTAgKzMxLDYzIEBACiAgICAgfQogCiAgICAgZnVuY3Rpb24gc2Vjb25kRmV0Y2go
KSB7Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgc3VjY2Vzc2Z1bCBjYWNo
ZSBoaXQuCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgc3VjY2Vzc2Z1bCBj
YWNoZSBoaXQgYW5kIGluc3RlYWQgY3JlYXRlIGFub3RoZXIgY2FwcGVkIGNhY2hlIGVudHJ5Lgog
ICAgICAgICBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwIiwKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBjYWNoZTogImZvcmNlLWNhY2hlIiwKKyAgICAgICAgICAgICAg
ICBoZWFkZXJzOiB7CisgICAgICAgICAgICAgICAgICAgICJYLVdlYktpdCI6ICI0MzIxIiwKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICkudGhlbihmdW5jdGlvbihy
ZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJsOworICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwiLCAiaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3Zh
bHVlPTQzMjEiKTsKKyAgICAgICAgICAgIHRoaXJkRmV0Y2goKTsKKyAgICAgICAgfSkuY2F0Y2go
ZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoZXJyb3IubWVzc2FnZSk7
CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0aGlyZEZldGNoKCkgeworICAgICAgICAv
LyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIHN1Y2Nlc3NmdWwgY2FjaGUgaGl0IGFuZCBpbnN0
ZWFkIGNyZWF0ZSBhbm90aGVyIGNhcHBlZCBjYWNoZSBlbnRyeS4KKyAgICAgICAgZmV0Y2goImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNo
ZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FjaGU6ICJmb3JjZS1jYWNoZSIsCisgICAgICAgICAgICB9CisgICAgICAgICkudGhlbihm
dW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJs
OworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwiLCAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVl
cnkucGhwP3ZhbHVlPSIpOworICAgICAgICAgICAgZm91cnRoRmV0Y2goKTsKKyAgICAgICAgfSku
Y2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoZXJyb3IubWVz
c2FnZSk7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3Qp
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmb3VydGhGZXRjaCgpIHsKKyAg
ICAgICAgLy8gVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBzdWNjZXNzZnVsIGNhY2hlIGhpdCBi
dXQgY2xlYXIgY2FwcGluZy4KKyAgICAgICAgZmV0Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0
LnBocCIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FjaGU6ICJmb3JjZS1jYWNo
ZSIsCisgICAgICAgICAgICB9CisgICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgewor
ICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIpOworICAg
ICAgICAgICAgZmlmdGhGZXRjaCgpOworICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikg
eworICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGZpZnRoRmV0Y2goKSB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIHRy
aWdnZXIgYSByZWd1bGFyLCBzdWNjZXNzZnVsIGNhY2hlIGhpdC4KKyAgICAgICAgZmV0Y2goImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNo
ZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICAgICAiWC1XZWJLaXQiOiAiMTIzNCIsCisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICApLnRoZW4oZnVuY3Rpb24o
cmVzcG9uc2UpIHsKICAgICAgICAgICAgIGxvYWRlZFVybCA9IHJlc3BvbnNlLnVybDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353896</attachid>
            <date>2018-11-05 11:58:06 -0800</date>
            <delta_ts>2018-11-06 14:28:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189760-20181105115805.patch</filename>
            <type>text/plain</type>
            <size>31032</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdjMWRkYzUwZTYzNTZi
ZDQ1YzU4Mjc3NGVkZmQ0ZjU0MGRlNTg3NS4uMTZjYTk0NThmNmU0MDIyZDU5NDBiOTRhZTYxYzdj
YmI3N2YwMzEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTExLTA1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0
IG1hdGNoZXMgYSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0ZXN0IGZsZXNoZWQgb3V0LgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNSZWRpcmVjdGlvbiBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzUmVkaXJlY3Rpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAgICAgTW92ZWQgdG8gdGhlIGltcGxlbWVudGF0aW9uIGZpbGUg
c28gdGhhdCBJIGNhbiBleHBvcnQgaXQgd2l0aG91dCB3YXJuaW5nLgorCiAyMDE4LTExLTAxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTG9jYXRpb24gb2JqZWN0
IHNhbnMgYnJvd3NpbmcgY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MDYxMTQ3MmVkZGEzMGE0YTFiODIy
NDhiMDIyZTY2NWQyNGRiMzY5Li5iMWU3NDE3ODYyNDhlZjQyZGNhMGFhMGExNmFhNjgwNzcxNzdj
MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTExLTA1ICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGlj
czogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0IG1hdGNoZXMg
YSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBhIHJlZGlyZWN0IGNhY2hlIGVudHJ5IGZvciBhIHByZXZhbGVudCByZXNvdXJjZSBy
ZWFjaGVzIGl0cyBtYXgKKyAgICAgICAgYWdlIGNhcCwgaXQgaXMgbG9hZGVkIGFnYWluIGZyb20g
dGhlIG5ldHdvcmsgYW5kIHRoZSBuZXR3b3JrIHJlc3BvbnNlCisgICAgICAgIGlzIGNvbXBhcmVk
IHdpdGggd2hhdCdzIGluIHRoZSBjYWNoZS4gSWYgaXQncyBhIG1hdGNoLCB0aGUgY2FjaGUgZW50
cnkKKyAgICAgICAgaXMgZnVsbHkgYWNjZXB0ZWQuIElmIG5vdCwgYSBuZXcgY2FwcGVkIGNhY2hl
IGVudHJ5IGlzIGNyZWF0ZWQuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHN0aWxsIG9mZiBi
eSBkZWZhdWx0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VD
YWNoZWRSZWRpcmVjdCBjb25zdCk6CisgICAgICAgICAgICBOb3cgY2hlY2tzIHRoZSBuZXcgbWVt
YmVyIG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24uCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgICAg
IE5ldyBjYXNlIGhhbmRsZWQgZm9yIGVudHJ5LT5oYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VB
Z2VDYXAoKS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgICAgIFRoaXMgaXMgd2hlcmUgdGhlIG5ldyBs
b2dpYyBjb21wYXJlcyB0aGUgaW5jb21pbmcgcmVkaXJlY3Qgd2l0aCB0aGUKKyAgICAgICAgICAg
IGNhY2hlZCBvbmUuIElmIHRoZXkgbWF0Y2gsIHRoZSBjYWNoZSBlbnRyeSBpcyB1cGRhdGVkIHRv
IG5vIGxvbmdlcgorICAgICAgICAgICAgYmUgY2FwcGVkLiBJZiB0aGV5IGRvbid0IG1hdGNoLCBh
IG5ldyBlbnRyeSBpcyBzdG9yZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICAgICBBZGRlZCB0aGUgbV9jYWNoZUVudHJ5Rm9yTWF4
QWdlQ2FwVmFsaWRhdGlvbiBtZW1iZXIuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjptYWtlVXNl
RGVjaXNpb24pOgorICAgICAgICAgICAgUmVzdG9yZWQgdG8gcHJldmlvdXMgYmVoYXZpb3Igd2hp
Y2ggbWVhbnMKKyAgICAgICAgICAgIFVzZURlY2lzaW9uOjpOb0R1ZVRvUHJldmFsZW50UmVzb3Vy
Y2VBZ2VDYXAgd2FzIHJlbW92ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2Fj
aGU6OnJldHJpZXZlKToKKyAgICAgICAgICAgIFJlc3RvcmVkIHRvIHByZXZpb3VzIGJlaGF2aW9y
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZVJlZGlyZWN0KToK
KyAgICAgICAgICAgIE5vdyB0YWtlcyB0aGUgb3B0aW9uYWwgbWF4QWdlQ2FwIGFuZCBjYXBzIHRo
ZSBlbnRyeSdzIG1heCBhZ2UgaWYgaXQncyBzZXQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Q2FjaGU6OnJlcGxhY2VSZWRpcmVjdCk6CisgICAgICAgICAgICBOZXcgZnVuY3Rpb24u
IFJlbW92ZXMgdGhlIGV4aXN0aW5nIGNhY2hlZCByZWRpcmVjdCBhbmQgc3RvcmVzIHRoZQorICAg
ICAgICAgICAgbmV3IG9uZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpoYXNSZWFj
aGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXApOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgICAgIE5vdyBlbmNvZGVzIG1fbWF4
QWdlQ2FwLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9y
YWdlUmVjb3JkKToKKyAgICAgICAgICAgIE5vdyBkZWNvZGVzIG1fbWF4QWdlQ2FwLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpoYXNSZWFjaGVkUHJldmFsZW50UmVzb3Vy
Y2VBZ2VDYXAgY29uc3QpOgorICAgICAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6RW50cnk6OnByZXZpb3VzRW50cnlBbHJlYWR5Q2FwcGVkKToKKyAgICAgICAg
ICAgIEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpjYXBNYXhB
Z2UpOgorICAgICAgICAgICAgQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuaDoKKyAgICAgICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCBtX21h
eEFnZUNhcC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgICAgICBOb3cgZ2V0
cyB0aGUgb3B0aW9uYWwgbWF4IGFnZSBjYXAgZnJvbSB0aGUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
IGFuZCBzZW5kcyBpdAorICAgICAgICAgICAgdG8gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoKS4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpjYWNoZWRFbnRyeVJldXNlRmFpbHVyZVRv
RGlhZ25vc3RpY0tleSk6CisgICAgICAgICAgICBSZW1vdmVkIGhhbmRsaW5nIG9mIFVzZURlY2lz
aW9uOjpOb0R1ZVRvUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAuCisKIDIwMTgtMTEtMDEgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RvcmFnZSBsaW1p
dCBmb3IgSW5kZXhlZERCCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IGFiN2IyZTFkZDQwOTgxZjhmMGY1
NDFjNWZjODhkMzllZTY3ZWUzYzMuLjc2NjcyMTkxNjk4ZjFhNmIzYjBhZTlmYTFkNTA1NDdlMTIz
MzRjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC0yOTYsNiArMjk2LDExIEBAIHZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OnNldEhUVFBTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQogICAgIC8v
IEZJWE1FOiBTaG91bGQgaW52YWxpZGF0ZSBvciB1cGRhdGUgcGxhdGZvcm0gcmVzcG9uc2UgaWYg
cHJlc2VudC4KIH0KIAorYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNSZWRpcmVjdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzUmVkaXJlY3Rpb25TdGF0dXNDb2RlKG1faHR0cFN0YXR1
c0NvZGUpOworfQorCiBjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwU3Rh
dHVzVGV4dCgpIGNvbnN0IAogewogICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgK
aW5kZXggZDhmY2MxNDMxYjUwYmM3YWI2N2YxZDE5NjhiOTFjZTcwZWExNjFlZi4uNmZjYTZiNzUx
ZjU3ZjA4MWY0M2ExMzQzYjJlNTE1MGNlMmZkNjIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtOTEsNyAr
OTEsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgaHR0cFN0YXR1c0NvZGUo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBTdGF0dXNDb2RlKGludCk7
Ci0gICAgYm9vbCBpc1JlZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNSZWRpcmVjdGlvblN0
YXR1c0NvZGUobV9odHRwU3RhdHVzQ29kZSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
UmVkaXJlY3Rpb24oKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmluZyYg
aHR0cFN0YXR1c1RleHQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBT
dGF0dXNUZXh0KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVjYzA0N2ZmNTJhOTg5
ZThkYjM2OWIxZjExZjBjZGEyZTY5Njg2NGQuLjY0ZTM0YTg4ZGExMGIzOTliODUzNDg4NzA0MDVk
ZmM3NTA0OGE1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0hUVFBIZWFkZXJOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUFBhcnNlcnMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0
aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTE1NCw3ICsxNTUsNyBAQCBib29sIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y2FuVXNlQ2FjaGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KSBjb25zdAogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuVXNlQ2FjaGVkUmVk
aXJlY3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewotICAgIGlmICgh
Y2FuVXNlQ2FjaGUocmVxdWVzdCkpCisgICAgaWYgKCFjYW5Vc2VDYWNoZShyZXF1ZXN0KSB8fCBt
X2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgLy8gTGltaXQgY2FjaGVkIHJlZGlyZWN0cyB0byBhdm9pZCBjeWNsZXMgYW5kIG90aGVy
IHRyb3VibGUuCiAgICAgLy8gTmV0d29ya2luZyBsYXllciBmb2xsb3dzIG92ZXIgMzAgcmVkaXJl
Y3RzIGJ1dCBjYWNoaW5nIHRoYXQgbWFueSBzZWVtcyB1bm5lY2Vzc2FyeS4KQEAgLTIxNiw3ICsy
MTcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICBBU1NFUlQoY2FuVXNlQ2FjaGUocmVx
dWVzdCkpOwogCiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyKHRoaXMp
OwotICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVlc3QsIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwgc2Vzc2lvbklEKCksIFt0aGlzLCBsb2FkZXIg
PSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1d
KGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+cmV0cmlldmUo
cmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCB9LCBbdGhpcywgbG9hZGVyID0gV1RGTW92ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgewogICAg
ICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkgewogICAgICAgICAgICAgLy8gVGhlIGxvYWRl
ciBoYXMgYmVlbiBhYm9ydGVkIGFuZCBpcyBvbmx5IGhlbGQgYWxpdmUgYnkgdGhpcyBsYW1iZGEu
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjksNiArMjMwLDE1IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVx
dWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgICAgIGlmIChlbnRyeS0+
aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNo
ZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVz
b3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeUZvck1h
eEFnZUNhcFZhbGlkYXRpb24gPSBXVEZNb3ZlKGVudHJ5KTsKKyAgICAgICAgICAgIFJlc291cmNl
UmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0ID0gb3JpZ2luYWxSZXF1ZXN0KCk7CisgICAgICAg
ICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0
KSwgRmlyc3RMb2FkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5k
aWYKICAgICAgICAgaWYgKGVudHJ5LT5yZWRpcmVjdFJlcXVlc3QoKSkgewogICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBIYW5kbGluZyByZWRp
cmVjdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkp
OwogICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50
cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShlbnRyeSkpOwpAQCAtNTg4LDggKzU5OCwzMiBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogewogICAgICsrbV9yZWRpcmVjdENvdW50OwogCisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBib29sIGV4aXN0aW5nQ2Fj
aGVFbnRyeUlzVmFsaWQgPSBmYWxzZTsKKyAgICBpZiAobV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2Fw
VmFsaWRhdGlvbikgeworICAgICAgICBBU1NFUlQocmVkaXJlY3RSZXNwb25zZS5zb3VyY2UoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOworICAgICAgICBBU1NFUlQocmVk
aXJlY3RSZXNwb25zZS5pc1JlZGlyZWN0aW9uKCkpOworICAgICAgICBpZiAocmVkaXJlY3RSZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKSA9
PSBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uLT5yZXNwb25zZSgpLmh0dHBIZWFk
ZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pKSB7CisgICAgICAgICAg
ICBleGlzdGluZ0NhY2hlRW50cnlJc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY2FjaGVF
bnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24tPnByZXZpb3VzRW50cnlBbHJlYWR5Q2FwcGVkKCk7
CisgICAgICAgICAgICBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uID0gbV9jYWNo
ZS0+cmVwbGFjZVJlZGlyZWN0KHJlcXVlc3QsICptX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxp
ZGF0aW9uLCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6bnVsbG9wdCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9jYWNoZS0+cmVtb3ZlKG1fY2FjaGVFbnRy
eUZvck1heEFnZUNhcFZhbGlkYXRpb24tPmtleSgpKTsKKworICAgICAgICAvLyBXZSdyZSBkb25l
IHNpbmNlIHRoZSBjYWNoZSBlbnRyeSBoYXMgZWl0aGVyIGJlZW4gcmVwbGFjZWQgb3IgcmVtb3Zl
ZC4KKyAgICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbiA9IG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKCFleGlzdGluZ0NhY2hlRW50cnlJc1ZhbGlkICYmIHJlZGlyZWN0
UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrICYm
IGNhblVzZUNhY2hlZFJlZGlyZWN0KHJlcXVlc3QpKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gbWF4QWdlQ2FwOworICAgICAgICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCgpKSkKKyAgICAgICAgICAgIG1heEFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
bWF4QWdlQ2FjaGVDYXAocmVxdWVzdCk7CisgICAgICAgIG1fY2FjaGUtPnN0b3JlUmVkaXJlY3Qo
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBtYXhBZ2VDYXApOwor
ICAgIH0KKyNlbHNlCiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrICYmIGNhblVzZUNhY2hlZFJlZGlyZWN0KHJlcXVl
c3QpKQotICAgICAgICBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7CisgICAgICAgIG1fY2FjaGUtPnN0b3JlUmVkaXJlY3Qo
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBzdGQ6Om51bGxvcHQp
OworI2VuZGlmCiAKICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKICAgICAgICAgbV9u
ZXR3b3JrTG9hZENoZWNrZXItPnN0b3JlUmVkaXJlY3Rpb25JZk5lZWRlZChyZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGFmYjBlOWM3OTU2NjNlYWIwNWVjNGFmNGYzODI1
NGI3N2ZhZWMxZGEuLjFlMTRmMjRkZjYzNGMwOGQxYTkyMmQ3MjQ2NWE1ZDU1NzI5Mjk1ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5ldHdvcmtD
YWNoZTo6Q2FjaGU+IG1fY2FjaGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hl
OjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsK
ICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRp
cmVjdCB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+
IG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWRDaGVja2VyPiBtX25ldHdvcmtMb2FkQ2hlY2tlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAppbmRleCBhYzVlZGY3ZmE2Yzk4MmNlOWM0YmE5OGQ3ZTY2NTBiMzBhZTU3YzUwLi4zZmFl
ZTAwNGUwMzM0OGM2YzZjMmQ2YTRlYzVkYjZkODc3ZGNhZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0xNTIsMTEg
KzE1Miw2IEBAIHN0YXRpYyBib29sIGNhY2hlUG9saWN5QWxsb3dzRXhwaXJlZChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGF0aWMgYm9vbCBoYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgY29u
c3QgU2Vjb25kcyBtYXhBZ2UpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50
QWdlKHJlc3BvbnNlLCB0aW1lc3RhbXApID4gbWF4QWdlOwotfQotCiBzdGF0aWMgYm9vbCByZXNw
b25zZUhhc0V4cGlyZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFdhbGxUaW1lIHRpbWVzdGFtcCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhTdGFsZSkKIHsK
ICAgICBpZiAocmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkpCkBAIC0xODgs
MTEgKzE4Myw4IEBAIHN0YXRpYyBib29sIHJlc3BvbnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCiAgICAgcmV0dXJuIHJlc3BvbnNl
SGFzRXhwaXJlZChyZXNwb25zZSwgdGltZXN0YW1wLCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFs
ZSk7CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lvbiBtYWtlVXNlRGVjaXNpb24oY29uc3QgRW50cnkm
IGVudHJ5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6b3B0
aW9uYWw8U2Vjb25kcz4gbWF4QWdlKQorc3RhdGljIFVzZURlY2lzaW9uIG1ha2VVc2VEZWNpc2lv
bihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBpZiAobWF4QWdlICYmIGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFn
ZUNhcChlbnRyeS5yZXNwb25zZSgpLCBlbnRyeS50aW1lU3RhbXAoKSwgbWF4QWdlLnZhbHVlKCkp
KQotICAgICAgICByZXR1cm4gVXNlRGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFn
ZUNhcDsKLSAgICAKICAgICAvLyBUaGUgcmVxdWVzdCBpcyBjb25kaXRpb25hbCBzbyB3ZSBmb3Jj
ZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0d29yay4gV2UgbWVyZWx5IGNoZWNrIHRoZSBkaXNr
IGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVwZGF0ZSB0aGUgY2FjaGUgZW50cnkuCiAgICAgaWYg
KHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYmICFlbnRyeS5yZWRpcmVjdFJlcXVlc3QoKSkKQEAg
LTI3OSw3ICsyNzEsNyBAQCBzdGF0aWMgU3RvcmVEZWNpc2lvbiBtYWtlU3RvcmVEZWNpc2lvbihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUgogICAgIHJldHVybiBTdG9y
ZURlY2lzaW9uOjpZZXM7CiB9CiAKLXZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFJldHJp
ZXZlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogCkBAIC0zMjMsNyArMzE1
LDcgQEAgdm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3Rv
cmFnZS0+cmV0cmlldmUoc3RvcmFnZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFt
ZUlELCBzZXNzaW9uSURdKGF1dG8gcmVjb3JkLCBhdXRvIHRpbWluZ3MpIG11dGFibGUgeworICAg
IG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFnZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5
LCBmcmFtZUlEXShhdXRvIHJlY29yZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKICAgICAgICAg
aW5mby5zdG9yYWdlVGltaW5ncyA9IHRpbWluZ3M7CiAKICAgICAgICAgaWYgKCFyZWNvcmQpIHsK
QEAgLTM0MCwyMiArMzMyLDEzIEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAg
YXV0byBlbnRyeSA9IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwOwotI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgICAgIGlmIChhdXRvIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgICAgIG1heEFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4
QWdlQ2FjaGVDYXAocmVxdWVzdCk7Ci0jZW5kaWYKLSAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9
IGVudHJ5ID8gbWFrZVVzZURlY2lzaW9uKCplbnRyeSwgcmVxdWVzdCwgbWF4QWdlQ2FwKSA6IFVz
ZURlY2lzaW9uOjpOb0R1ZVRvRGVjb2RlRmFpbHVyZTsKKyAgICAgICAgYXV0byB1c2VEZWNpc2lv
biA9IGVudHJ5ID8gbWFrZVVzZURlY2lzaW9uKCplbnRyeSwgcmVxdWVzdCkgOiBVc2VEZWNpc2lv
bjo6Tm9EdWVUb0RlY29kZUZhaWx1cmU7CiAgICAgICAgIHN3aXRjaCAodXNlRGVjaXNpb24pIHsK
ICAgICAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VXNlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgVXNlRGVjaXNpb246OlZhbGlkYXRlOgogICAgICAgICAgICAgZW50cnktPnNldE5l
ZWRzVmFsaWRhdGlvbih0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFVz
ZURlY2lzaW9uOjpOb0R1ZVRvUHJldmFsZW50UmVzb3VyY2VBZ2VDYXA6Ci0gICAgICAgICAgICBl
bnRyeSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBtX3N0b3JhZ2UtPnJlbW92ZShzdG9yYWdlS2V5
KTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZW50
cnkgPSBudWxscHRyOwogICAgICAgICB9OwpAQCAtNDMwLDcgKzQxMyw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uCiAgICAgcmV0dXJuIGNhY2hlRW50cnk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCitzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBz
dGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcCkKIHsKICAgICBMT0coTmV0d29ya0NhY2hl
LCAiKE5ldHdvcmtQcm9jZXNzKSBzdG9yaW5nIHJlZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51
cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogCkBAIC00NDUsNiArNDI4LDE2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1CiAgICAgfQogCiAgICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVJlZGlyZWN0
RW50cnkocmVxdWVzdCwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7CisKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChtYXhBZ2VDYXApIHsKKyAgICAgICAg
TE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgY2FwcGluZyBtYXggYWdlIGZvciBy
ZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
LCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAg
ICAgY2FjaGVFbnRyeS0+Y2FwTWF4QWdlKG1heEFnZUNhcC52YWx1ZSgpKTsKKyAgICB9CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShtYXhBZ2VDYXApOworI2VuZGlmCisKICAgICBhdXRvIHJlY29y
ZCA9IGNhY2hlRW50cnktPmVuY29kZUFzU3RvcmFnZVJlY29yZCgpOwogCiAgICAgbV9zdG9yYWdl
LT5zdG9yZShyZWNvcmQsIG51bGxwdHIpOwpAQCAtNDcwLDYgKzQ2MywxNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IENhY2hlOjp1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcQogICAgIHJldHVybiB1cGRhdGVFbnRyeTsKIH0KIAorc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6cmVwbGFjZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRW50cnkmIGV4aXN0aW5nRW50cnksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAp
Cit7CisgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgcmVwbGFjaW5nIHJl
ZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCks
IHJlZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworCisgICAg
cmVtb3ZlKGV4aXN0aW5nRW50cnkua2V5KCkpOworICAgIHJldHVybiBzdG9yZVJlZGlyZWN0KHJl
cXVlc3QsIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIG1heEFnZUNhcCk7Cit9CisKIHZvaWQg
Q2FjaGU6OnJlbW92ZShjb25zdCBLZXkmIGtleSkKIHsKICAgICBtX3N0b3JhZ2UtPnJlbW92ZShr
ZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmgKaW5kZXggZjE1YWQ2YmQwYWRjOGM3MzU4YzFhOTQ5OTgwZDg0MDllNjI4MzNhNC4uOGRi
NGUyNzU5NWMxZTFkMmE0MDEwNWUzNjA5YjVhNDMwMWQ5YTk3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9T
ZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTgxLDggKzgyLDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAg
Tm9EdWVUb1ZhcnlpbmdIZWFkZXJNaXNtYXRjaCwKICAgICBOb0R1ZVRvTWlzc2luZ1ZhbGlkYXRv
ckZpZWxkcywKICAgICBOb0R1ZVRvRGVjb2RlRmFpbHVyZSwKLSAgICBOb0R1ZVRvRXhwaXJlZFJl
ZGlyZWN0LAotICAgIE5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcAorICAgIE5vRHVlVG9F
eHBpcmVkUmVkaXJlY3QKIH07CiAKIHVzaW5nIEdsb2JhbEZyYW1lSUQgPSBzdGQ6OnBhaXI8dWlu
dDY0X3QgLyp3ZWJQYWdlSUQqLywgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+OwpAQCAtMTEzLDEx
ICsxMTMsMTEgQEAgcHVibGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICB9OwogICAgIHVzaW5nIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lk
IChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9p
ZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxG
cmFtZUlEJiwgUEFMOjpTZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Cisg
ICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBH
bG9iYWxGcmFtZUlEJiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwotCisgICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiByZXBsYWNlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdHJ1Y3QgVHJhdmVyc2FsRW50cnkgewogICAgICAg
ICBjb25zdCBFbnRyeSYgZW50cnk7CiAgICAgICAgIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8m
IHJlY29yZEluZm87CkBAIC0xNTYsNiArMTU2LDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZHVt
cEZpbGVQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVEdW1wRmlsZSgpOwogCisgICAgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAoRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCk7CisKICAgICBSZWY8U3RvcmFnZT4gbV9zdG9y
YWdlOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAppbmRleCBhZTExODhhZTNhYWQ4ZjgyZDVmYzA2MmY1ZTRmZjQ0ZWQx
MWRlNmQxLi5jMjdlNjczZmE4Y2ViMjQyODk2NWQwMzI5ZjMzN2MzZDI1NmJkMzZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcApAQCAtOTUsNiArOTUsOCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29k
ZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgaWYgKGlzUmVkaXJlY3QpCiAgICAgICAgIG1f
cmVkaXJlY3RSZXF1ZXN0LT5lbmNvZGVXaXRob3V0UGxhdGZvcm1EYXRhKGVuY29kZXIpOwogCisg
ICAgZW5jb2RlciA8PCBtX21heEFnZUNhcDsKKyAgICAKICAgICBlbmNvZGVyLmVuY29kZUNoZWNr
c3VtKCk7CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZl
clNpemUoKSk7CkBAIC0xMzMsNiArMTM1LDggQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRy
eTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGRlY29kZXIuZGVjb2RlKGVu
dHJ5LT5tX21heEFnZUNhcCk7CisgICAgCiAgICAgaWYgKCFkZWNvZGVyLnZlcmlmeUNoZWNrc3Vt
KCkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgY2hlY2tz
dW0gdmVyaWZpY2F0aW9uIGZhaWx1cmVcbiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTE0MSw2ICsxNDUsMjMgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICAgICByZXR1cm4gZW50
cnk7CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorYm9vbCBFbnRy
eTo6aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9tYXhBZ2VDYXAgJiYgV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UoKSwg
dGltZVN0YW1wKCkpID4gbV9tYXhBZ2VDYXA7Cit9CisKK3ZvaWQgRW50cnk6OnByZXZpb3VzRW50
cnlBbHJlYWR5Q2FwcGVkKCkKK3sKKyAgICBtX21heEFnZUNhcCA9IHN0ZDo6bnVsbG9wdDsKK30K
Kwordm9pZCBFbnRyeTo6Y2FwTWF4QWdlKGNvbnN0IFNlY29uZHMgc2Vjb25kcykKK3sKKyAgICBt
X21heEFnZUNhcCA9IHNlY29uZHM7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpCiB2b2lkIEVudHJ5Ojppbml0aWFsaXplU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGVG
cm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5kZXggNTNlZGVmNzBjYzE3
NGZlNmNmMDg2NWQ2ZWQ5NTYzZDY1ZmQ3NmZjZS4uOTBiNzUzZDE5ODdhNDZiNDA3N2UwZmQzMGVj
ZTFjZDA3ZTE1ZGM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
c3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNzAsNiArNzEsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhc0pTT04oU3Ry
aW5nQnVpbGRlciYsIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mKSBjb25zdDsKIAorI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgYm9vbCBoYXNSZWFjaGVkUHJldmFs
ZW50UmVzb3VyY2VBZ2VDYXAoKSBjb25zdDsKKyAgICB2b2lkIHByZXZpb3VzRW50cnlBbHJlYWR5
Q2FwcGVkKCk7CisgICAgdm9pZCBjYXBNYXhBZ2UoY29uc3QgU2Vjb25kcyk7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNv
bnN0OwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw2ICs5NSw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIFN0b3JhZ2U6OlJlY29yZCBtX3NvdXJjZVN0b3JhZ2VSZWNv
cmQgeyB9OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbV9tYXhBZ2VDYXA7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggN2I0MGFiMTJk
OTczMDZhMGU2OWMxOGVhNTFmZmIxOGEwNGU2YTlmYi4uNTVmMDNkMTM0OTEwZDQ1OTAwZTIyOWU5
ZjNlNTZmYzdkMzEzZWM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTcxLDcgKzcyLDE0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlc291CiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9h
ZGluZywgIlNwZWN1bGF0aXZlIHJlZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7CisjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFn
ZUNhcDsKKyAgICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCkpKQorICAgICAgICBtYXhBZ2VDYXAgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
Pm1heEFnZUNhY2hlQ2FwKHJlcXVlc3QpOworICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0
b3JlUmVkaXJlY3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBt
YXhBZ2VDYXApOworI2Vsc2UKKyAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZVJlZGly
ZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpudWxs
b3B0KTsKKyNlbmRpZgogICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3
ZSBjYW4ndCBzdG9yZS4KICAgICBpZiAoIW1fY2FjaGVFbnRyeSkKICAgICAgICAgbV9jYWNoZUVu
dHJ5ID0gbV9jYWNoZS0+bWFrZVJlZGlyZWN0RW50cnkocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSwgcmVkaXJlY3RSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCmluZGV4IGExNTVl
OWYyZTNhZTEzODE0NDNhNGEwY2UwYjI0MDc1N2U0YTY5ZWIuLmEzNzgwYzU1YmM2NDM1NzdiNGQw
NzgwMWUxNGM1MWUxZDAwYWU0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcApAQCAtMjgy
LDggKzI4Miw2IEBAIHN0YXRpYyBTdHJpbmcgY2FjaGVkRW50cnlSZXVzZUZhaWx1cmVUb0RpYWdu
b3N0aWNLZXkoVXNlRGVjaXNpb24gZGVjaXNpb24pCiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ0tleXM6Om1pc3NpbmdWYWxpZGF0b3JGaWVsZHNLZXkoKTsKICAgICBj
YXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVjb2RlRmFpbHVyZToKICAgICBjYXNlIFVzZURlY2lz
aW9uOjpOb0R1ZVRvRXhwaXJlZFJlZGlyZWN0OgotICAgIGNhc2UgVXNlRGVjaXNpb246Ok5vRHVl
VG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdu
b3N0aWNMb2dnaW5nS2V5czo6b3RoZXJLZXkoKTsKICAgICBjYXNlIFVzZURlY2lzaW9uOjpVc2U6
CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VmFsaWRhdGU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDc2NGQ5NzNmMzhhZTUzZWI1OGJjMjRiOGU5NjE2MzllNWY3NjNlYzAu
LmMzZmFiMTYzNzc1OTZkYTAxNGRlZmEyOTBjNmM3OGI1ZTE2ODAxNDUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAxOC0xMS0wNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IFJlbW92ZSBjYXAgb24gcGFydGl0
aW9uZWQgY2FjaGUgbWF4IGFnZSBpZiBpdCBtYXRjaGVzIGEgbmV0d29yayByZWxvYWQgKHJlZGly
ZWN0LW9ubHkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODk3NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0NjEyMjQyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2Ut
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWw6CisgICAgICAg
ICAgICBUaGUgdGVzdCBub3cgcGVyZm9ybXM6CisgICAgICAgICAgICAtIGFuIGluaXRpYWwgRmV0
Y2ggcmVxdWVzdCB3aXRoIGEgcGVybWFuZW50IHJlZGlyZWN0IHRvIElEIDEyMzQuIENhcHBlZCBt
YXggYWdlLgorICAgICAgICAgICAgLSBhIHNlY29uZCBGZXRjaCByZXF1ZXN0IHdpdGggYSBwZXJt
YW5lbnQgcmVkaXJlY3QgdG8gSUQgNDMyMS4gQ2FwcGVkIG1heCBhZ2UuCisgICAgICAgICAgICAt
IGEgdGhpcmQgRmV0Y2ggcmVxdWVzdCB3aXRoIGEgcGVybWFuZW50IHJlZGlyZWN0IHRvIGFuZCBl
bXB0eSBJRC4gQ2FwcGVkIG1heCBhZ2UuCisgICAgICAgICAgICAtIGEgZm91cnRoIEZldGNoIHJl
cXVlc3Qgd2l0aCBhIHBlcm1hbmVudCByZWRpcmVjdCB0byBhbmQgZW1wdHkgSUQuIE1heCBhZ2Ug
Y2FwIHJlbW92ZWQuCisgICAgICAgICAgICAtIGEgZmlmdGggRmV0Y2ggcmVxdWVzdCB3aXRoIGEg
cGVybWFuZW50IHJlZGlyZWN0IHRvIGFuZCBlbXB0eSBJRC4gUmVndWxhciBjYWNoZSBoaXQuCisK
IDIwMTgtMTEtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBM
b2NhdGlvbiBvYmplY3Qgc2FucyBicm93c2luZyBjb250ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2Ut
Zm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVu
dC1yZXNvdXJjZS1leHBlY3RlZC50eHQKaW5kZXggNjNjNjA2OWY2NDM2NzVkMjAxZGQ2MTE4Njg3
M2NhZDUxMDA2ZTdjYi4uMGNjZTVhYTFjMzZhOTRkNTUwYmRlMjI5YWRlNDQ2ZmY4MzU1YzFjYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2Fj
aGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0
LDkgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIGxvYWRlZFVybCBpcyAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8t
cXVlcnkucGhwP3ZhbHVlPTEyMzQiCitQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3Zh
bHVlPTQzMjEiCitQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIKK1BBU1Mg
bG9hZGVkVXJsIGlzICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9IgogUEFTUyBsb2FkZWRVcmwgaXMgImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hv
LXF1ZXJ5LnBocD92YWx1ZT0iCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
YXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9y
LXByZXZhbGVudC1yZXNvdXJjZS5odG1sCmluZGV4IDA4YjgyYmJmYjU0NzUwMDU3MjFkZjgzZGFm
N2RkODMyYWZkYzg5NTUuLjE3ODAwNGJjZTcxNTZjZDU5MDAwZGJjNzNkZDE1YTBlMWExYzk5ZWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgt
YWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbApAQCAtMzEsMTAgKzMxLDYzIEBACiAgICAg
fQogCiAgICAgZnVuY3Rpb24gc2Vjb25kRmV0Y2goKSB7Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxk
IG5vdCB0cmlnZ2VyIGEgc3VjY2Vzc2Z1bCBjYWNoZSBoaXQuCisgICAgICAgIC8vIFRoaXMgc2hv
dWxkIG5vdCB0cmlnZ2VyIGEgc3VjY2Vzc2Z1bCBjYWNoZSBoaXQgYW5kIGluc3RlYWQgY3JlYXRl
IGFub3RoZXIgY2FwcGVkIGNhY2hlIGVudHJ5LgogICAgICAgICBmZXRjaCgiaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5l
bnQtcmVkaXJlY3QucGhwIiwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjYWNoZTog
ImZvcmNlLWNhY2hlIiwKKyAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAg
ICAgICAgICJYLVdlYktpdCI6ICI0MzIxIiwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9h
ZGVkVXJsID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsb2FkZWRVcmwiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTQzMjEiKTsKKyAgICAgICAgICAgIHRo
aXJkRmV0Y2goKTsKKyAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB0aGlyZEZldGNoKCkgeworICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBh
IHN1Y2Nlc3NmdWwgY2FjaGUgaGl0IGFuZCBpbnN0ZWFkIGNyZWF0ZSBhbm90aGVyIGNhcHBlZCBj
YWNoZSBlbnRyeS4KKyAgICAgICAgZmV0Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIs
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FjaGU6ICJmb3JjZS1jYWNoZSIsCisg
ICAgICAgICAgICB9CisgICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAg
ICAgICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJsb2FkZWRVcmwiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIpOworICAgICAgICAg
ICAgZm91cnRoRmV0Y2goKTsKKyAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBmb3VydGhGZXRjaCgpIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IHRy
aWdnZXIgYSBzdWNjZXNzZnVsIGNhY2hlIGhpdCBidXQgY2xlYXIgY2FwcGluZy4KKyAgICAgICAg
ZmV0Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291
cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2FjaGU6ICJmb3JjZS1jYWNoZSIsCisgICAgICAgICAgICB9CisgICAgICAg
ICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVz
cG9uc2UudXJsOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwi
LCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2Vz
L2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIpOworICAgICAgICAgICAgZmlmdGhGZXRjaCgpOworICAg
ICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChl
cnJvci5tZXNzYWdlKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlz
aEpTVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpZnRoRmV0Y2go
KSB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIHRyaWdnZXIgYSByZWd1bGFyLCBzdWNjZXNzZnVs
IGNhY2hlIGhpdC4KKyAgICAgICAgZmV0Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIs
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaGVhZGVyczogeworICAgICAgICAgICAg
ICAgICAgICAiWC1XZWJLaXQiOiAiMTIzNCIsCisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICApLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgIGxv
YWRlZFVybCA9IHJlc3BvbnNlLnVybDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354007</attachid>
            <date>2018-11-06 14:28:42 -0800</date>
            <delta_ts>2018-11-06 14:33:17 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189760-20181106142841.patch</filename>
            <type>text/plain</type>
            <size>31474</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdjMWRkYzUwZTYzNTZi
ZDQ1YzU4Mjc3NGVkZmQ0ZjU0MGRlNTg3NS4uMGQ5MGQ2MmNmMjE1ZjU4OTk5MzdmZDhmODk1NDBi
ZjkwNGY4ZDlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTExLTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0
IG1hdGNoZXMgYSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldCBh
bmQgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0ZXN0
IGZsZXNoZWQgb3V0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNS
ZWRpcmVjdGlvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omlz
UmVkaXJlY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAgICAgTW92ZWQgdG8gdGhlIGlt
cGxlbWVudGF0aW9uIGZpbGUgc28gdGhhdCBJIGNhbiBleHBvcnQgaXQgd2l0aG91dCB3YXJuaW5n
LgorCiAyMDE4LTExLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTG9jYXRpb24gb2JqZWN0IHNhbnMgYnJvd3NpbmcgY29udGV4dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MDYx
MTQ3MmVkZGEzMGE0YTFiODIyNDhiMDIyZTY2NWQyNGRiMzY5Li4xNTJjY2Q2ZmRmOTAyZjM3OWEz
MjkwOWQ1NTQ4Y2VkNTM5ODI1NGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE4LTEx
LTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291
cmNlIExvYWQgU3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXgg
YWdlIGlmIGl0IG1hdGNoZXMgYSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5u
IEZhYmxldCBhbmQgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNhblVzZUNhY2hlZFJlZGlyZWN0IGNvbnN0KToKKyAgICAgICAgICAgIE5vdyBj
aGVja3MgdGhlIG5ldyBtZW1iZXIgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbi4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50
cnkpOgorICAgICAgICAgICAgTmV3IGNhc2UgaGFuZGxlZCBmb3IgZW50cnktPmhhc1JlYWNoZWRQ
cmV2YWxlbnRSZXNvdXJjZUFnZUNhcCgpLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnZhbGlkYXRlQ2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24pOgorICAg
ICAgICAgICAgVGhpcyBpcyB3aGVyZSB0aGUgbmV3IGxvZ2ljIGNvbXBhcmVzIHRoZSBpbmNvbWlu
ZyByZWRpcmVjdCB3aXRoIHRoZQorICAgICAgICAgICAgY2FjaGVkIG9uZS4gSWYgdGhleSBtYXRj
aCwgYW4gdW5jYXBwZWQgZW50cnkgaXMgYWxsb3dlZCB0byBiZSBzdG9yZWQuCisgICAgICAgICAg
ICBJZiB0aGV5IGRvbid0IG1hdGNoLCBhIG5ldyBjYXBwZWQgZW50cnkgd2lsbCBiZSBzdG9yZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdCk6CisgICAgICAgICAgICBOb3cgY2FsbHMgdGhlIG5ldworICAgICAgICAgICAg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxp
ZGF0aW9uKCkKKyAgICAgICAgICAgIGZ1bmN0aW9uLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAgICAgQWRkZWQgdGhlIG1fY2FjaGVF
bnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24gbWVtYmVyLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6bWFrZVVzZURlY2lzaW9uKToKKyAgICAgICAgICAgIFJlc3RvcmVkIHRvIHByZXZpb3VzIGJl
aGF2aW9yIHdoaWNoIG1lYW5zCisgICAgICAgICAgICBVc2VEZWNpc2lvbjo6Tm9EdWVUb1ByZXZh
bGVudFJlc291cmNlQWdlQ2FwIHdhcyByZW1vdmVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkNhY2hlOjpyZXRyaWV2ZSk6CisgICAgICAgICAgICBSZXN0b3JlZCB0byBwcmV2aW91
cyBiZWhhdmlvci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6c3RvcmVS
ZWRpcmVjdCk6CisgICAgICAgICAgICBOb3cgdGFrZXMgdGhlIG9wdGlvbmFsIG1heEFnZUNhcCBh
bmQgY2FwcyB0aGUgZW50cnkncyBtYXggYWdlIGlmIGl0J3Mgc2V0LgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6Omhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29u
c3QpOgorICAgICAgICAgICAgTm93IGVuY29kZXMgbV9tYXhBZ2VDYXAuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAg
ICAgTm93IGRlY29kZXMgbV9tYXhBZ2VDYXAuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6RW50cnk6Omhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCBjb25zdCk6CisgICAg
ICAgICAgICBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6Y2Fw
TWF4QWdlKToKKyAgICAgICAgICAgIEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwg
bV9tYXhBZ2VDYXAuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVj
dWxhdGl2ZUxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAgICAgTm93
IGdldHMgdGhlIG9wdGlvbmFsIG1heCBhZ2UgY2FwIGZyb20gdGhlIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiBhbmQgc2VuZHMgaXQKKyAgICAgICAgICAgIHRvIENhY2hlOjpzdG9yZVJlZGlyZWN0KCku
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Y2FjaGVkRW50cnlSZXVzZUZhaWx1
cmVUb0RpYWdub3N0aWNLZXkpOgorICAgICAgICAgICAgUmVtb3ZlZCBoYW5kbGluZyBvZiBVc2VE
ZWNpc2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdlQ2FwLgorCiAyMDE4LTExLTAxICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIHN0b3JhZ2Ug
bGltaXQgZm9yIEluZGV4ZWREQgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBhYjdiMmUxZGQ0MDk4MWY4
ZjBmNTQxYzVmYzg4ZDM5ZWU2N2VlM2MzLi43NjY3MjE5MTY5OGYxYTZiM2IwYWU5ZmExZDUwNTQ3
ZTEyMzM0Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtMjk2LDYgKzI5NiwxMSBAQCB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKICAg
ICAvLyBGSVhNRTogU2hvdWxkIGludmFsaWRhdGUgb3IgdXBkYXRlIHBsYXRmb3JtIHJlc3BvbnNl
IGlmIHByZXNlbnQuCiB9CiAKK2Jvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzUmVkaXJlY3Rp
b24oKSBjb25zdAoreworICAgIHJldHVybiBpc1JlZGlyZWN0aW9uU3RhdHVzQ29kZShtX2h0dHBT
dGF0dXNDb2RlKTsKK30KKwogY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0
cFN0YXR1c1RleHQoKSBjb25zdCAKIHsKICAgICBsYXp5SW5pdChBbGxGaWVsZHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oCmluZGV4IGQ4ZmNjMTQzMWI1MGJjN2FiNjdmMWQxOTY4YjkxY2U3MGVhMTYxZWYuLjZmY2E2
Yjc1MWY1N2YwODFmNDNhMTM0M2IyZTUxNTBjZTJmZDYyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTkx
LDcgKzkxLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGh0dHBTdGF0dXND
b2RlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIVFRQU3RhdHVzQ29kZShp
bnQpOwotICAgIGJvb2wgaXNSZWRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzUmVkaXJlY3Rp
b25TdGF0dXNDb2RlKG1faHR0cFN0YXR1c0NvZGUpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1JlZGlyZWN0aW9uKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJp
bmcmIGh0dHBTdGF0dXNUZXh0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRI
VFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBlY2MwNDdmZjUy
YTk4OWU4ZGIzNjliMWYxMWYwY2RhMmU2OTY4NjRkLi41NWJiZGNlNmRlZjI4NDRiZmU5Y2UyNTc1
ZTNjNzIyMGI1ODkyZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVFRQSGVhZGVyTmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJz
ZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJv
dGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0ZUluZm8uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC0xNTQsNyArMTU1LDcgQEAgYm9vbCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhblVzZUNhY2hlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkgY29uc3QKIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhblVzZUNhY2hl
ZFJlZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKLSAgICBp
ZiAoIWNhblVzZUNhY2hlKHJlcXVlc3QpKQorICAgIGlmICghY2FuVXNlQ2FjaGUocmVxdWVzdCkg
fHwgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIC8vIExpbWl0IGNhY2hlZCByZWRpcmVjdHMgdG8gYXZvaWQgY3ljbGVzIGFuZCBv
dGhlciB0cm91YmxlLgogICAgIC8vIE5ldHdvcmtpbmcgbGF5ZXIgZm9sbG93cyBvdmVyIDMwIHJl
ZGlyZWN0cyBidXQgY2FjaGluZyB0aGF0IG1hbnkgc2VlbXMgdW5uZWNlc3NhcnkuCkBAIC0yMTYs
NyArMjE3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRy
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKGNhblVzZUNhY2hl
KHJlcXVlc3QpKTsKIAogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGxvYWRlcih0
aGlzKTsKLSAgICBtX2NhY2hlLT5yZXRyaWV2ZShyZXF1ZXN0LCB7IG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEIH0sIHNlc3Npb25JRCgpLCBbdGhpcywgbG9h
ZGVyID0gV1RGTW92ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVz
dCB9XShhdXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgeworICAgIG1fY2FjaGUtPnJldHJp
ZXZlKHJlcXVlc3QsIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQgfSwgW3RoaXMsIGxvYWRlciA9IFdURk1vdmUobG9hZGVyKSwgcmVxdWVzdCA9IFJlc291
cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0byBlbnRyeSwgYXV0byBpbmZvKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGxvYWRlci0+aGFzT25lUmVmKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBs
b2FkZXIgaGFzIGJlZW4gYWJvcnRlZCBhbmQgaXMgb25seSBoZWxkIGFsaXZlIGJ5IHRoaXMgbGFt
YmRhLgogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjI5LDYgKzIzMCwxNSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3Zl
KHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICAgICBpZiAoZW50
cnktPmhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCgpKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIGhhcyBy
ZWFjaGVkIHByZXZhbGVudCByZXNvdXJjZSBhZ2UgY2FwIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFp
blJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnlG
b3JNYXhBZ2VDYXBWYWxpZGF0aW9uID0gV1RGTW92ZShlbnRyeSk7CisgICAgICAgICAgICBSZXNv
dXJjZVJlcXVlc3QgcmV2YWxpZGF0aW9uUmVxdWVzdCA9IG9yaWdpbmFsUmVxdWVzdCgpOworICAg
ICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmV2YWxpZGF0aW9uUmVx
dWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
I2VuZGlmCiAgICAgICAgIGlmIChlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcg
cmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91
cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91
cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNo
ZUVudHJ5KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZW50cnkpKTsKQEAgLTU4NCwxMiArNTk0
LDM1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkQmxv
Y2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKIH0KIAorc3RkOjpvcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnZhbGlkYXRlQ2FjaGVFbnRyeUZvck1heEFnZUNhcFZh
bGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSkKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGJv
b2wgZXhpc3RpbmdDYWNoZUVudHJ5TWF0Y2hlc05ld1Jlc3BvbnNlID0gZmFsc2U7CisgICAgaWYg
KG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24pIHsKKyAgICAgICAgQVNTRVJUKHJl
ZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3
b3JrKTsKKyAgICAgICAgQVNTRVJUKHJlZGlyZWN0UmVzcG9uc2UuaXNSZWRpcmVjdGlvbigpKTsK
KyAgICAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKFdlYkNvcmU6OkhU
VFBIZWFkZXJOYW1lOjpMb2NhdGlvbikgPT0gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRh
dGlvbi0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6
OkxvY2F0aW9uKSkKKyAgICAgICAgICAgIGV4aXN0aW5nQ2FjaGVFbnRyeU1hdGNoZXNOZXdSZXNw
b25zZSA9IHRydWU7CisKKyAgICAgICAgbV9jYWNoZS0+cmVtb3ZlKG1fY2FjaGVFbnRyeUZvck1h
eEFnZUNhcFZhbGlkYXRpb24tPmtleSgpKTsKKyAgICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdl
Q2FwVmFsaWRhdGlvbiA9IG51bGxwdHI7CisgICAgfQorICAgIAorICAgIGlmICghZXhpc3RpbmdD
YWNoZUVudHJ5TWF0Y2hlc05ld1Jlc3BvbnNlKSB7CisgICAgICAgIGlmIChhdXRvIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKCkpKQorICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi0+bWF4QWdlQ2FjaGVDYXAocmVxdWVzdCk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKK30KKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSkKIHsKICAgICArK21fcmVkaXJlY3RDb3VudDsKIAorICAgIGF1dG8gbWF4QWdlQ2FwID0gdmFs
aWRhdGVDYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbihyZXF1ZXN0LCByZWRpcmVjdFJl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlLnNvdXJj
ZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayAmJiBjYW5Vc2VDYWNoZWRS
ZWRpcmVjdChyZXF1ZXN0KSkKLSAgICAgICAgbV9jYWNoZS0+c3RvcmVSZWRpcmVjdChyZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOworICAgICAgICBtX2NhY2hlLT5z
dG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwg
bWF4QWdlQ2FwKTsKIAogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikgewogICAgICAgICBt
X25ldHdvcmtMb2FkQ2hlY2tlci0+c3RvcmVSZWRpcmVjdGlvbklmTmVlZGVkKHJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggYWZiMGU5Yzc5NTY2M2VhYjA1ZWM0YWY0ZjM4
MjU0Yjc3ZmFlYzFkYS4uMmY2N2VhZWZiNjY2NTA0YWRlNjFlOTFkNjdjZWJiZjVjNzFmZTJhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oCkBAIC0xNzQsNiArMTc0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbG9nU2xv
d0NhY2hlUmV0cmlldmVJZk5lZWRlZChjb25zdCBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpSZXRyaWV2
ZUluZm8mKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdmFsaWRhdGVDYWNoZUVudHJ5
Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworCiAgICAgY29uc3QgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CkBAIC0yMDIsNiArMjA0LDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhB
Z2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVx
dWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IG1fbmV0
d29ya0xvYWRDaGVja2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IGFjNWVkZjdmYTZjOTgyY2U5YzRiYTk4ZDdlNjY1
MGIzMGFlNTdjNTAuLmFiZTk4ZWYzZDBkMDA0ZGFmYjdhZjBhZWU4ODNmZjBmYTIxOWY3ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKQEAgLTE1MiwxMSArMTUyLDYgQEAgc3RhdGljIGJvb2wgY2FjaGVQb2xpY3lBbGxvd3NF
eHBpcmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJj
ZUFnZUNhcChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgV2FsbFRp
bWUgdGltZXN0YW1wLCBjb25zdCBTZWNvbmRzIG1heEFnZSkKLXsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UsIHRpbWVzdGFtcCkgPiBtYXhBZ2U7Ci19Ci0K
IHN0YXRpYyBib29sIHJlc3BvbnNlSGFzRXhwaXJlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgV2FsbFRpbWUgdGltZXN0YW1wLCBzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+IG1heFN0YWxlKQogewogICAgIGlmIChyZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05v
Q2FjaGUoKSkKQEAgLTE4OCwxMSArMTgzLDggQEAgc3RhdGljIGJvb2wgcmVzcG9uc2VOZWVkc1Jl
dmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAg
ICByZXR1cm4gcmVzcG9uc2VIYXNFeHBpcmVkKHJlc3BvbnNlLCB0aW1lc3RhbXAsIHJlcXVlc3RE
aXJlY3RpdmVzLm1heFN0YWxlKTsKIH0KIAotc3RhdGljIFVzZURlY2lzaW9uIG1ha2VVc2VEZWNp
c2lvbihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2UpCitzdGF0aWMgVXNlRGVjaXNp
b24gbWFrZVVzZURlY2lzaW9uKGNvbnN0IEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChtYXhBZ2UgJiYgaGFzUmVhY2hlZFBy
ZXZhbGVudFJlc291cmNlQWdlQ2FwKGVudHJ5LnJlc3BvbnNlKCksIGVudHJ5LnRpbWVTdGFtcCgp
LCBtYXhBZ2UudmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBVc2VEZWNpc2lvbjo6Tm9EdWVUb1By
ZXZhbGVudFJlc291cmNlQWdlQ2FwOwotICAgIAogICAgIC8vIFRoZSByZXF1ZXN0IGlzIGNvbmRp
dGlvbmFsIHNvIHdlIGZvcmNlIHJldmFsaWRhdGlvbiBmcm9tIHRoZSBuZXR3b3JrLiBXZSBtZXJl
bHkgY2hlY2sgdGhlIGRpc2sgY2FjaGUKICAgICAvLyBzbyB3ZSBjYW4gdXBkYXRlIHRoZSBjYWNo
ZSBlbnRyeS4KICAgICBpZiAocmVxdWVzdC5pc0NvbmRpdGlvbmFsKCkgJiYgIWVudHJ5LnJlZGly
ZWN0UmVxdWVzdCgpKQpAQCAtMjc5LDcgKzI3MSw3IEBAIHN0YXRpYyBTdG9yZURlY2lzaW9uIG1h
a2VTdG9yZURlY2lzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
CiAgICAgcmV0dXJuIFN0b3JlRGVjaXNpb246OlllczsKIH0KIAotdm9pZCBDYWNoZTo6cmV0cmll
dmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxG
cmFtZUlEJiBmcmFtZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2FjaGU6OnJldHJpZXZlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJ
RCYgZnJhbWVJRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7
CiAKQEAgLTMyMyw3ICszMTUsNyBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSQogICAgIH0KICNl
bmRpZgogCi0gICAgbV9zdG9yYWdlLT5yZXRyaWV2ZShzdG9yYWdlS2V5LCBwcmlvcml0eSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdCwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgaW5mbyA9IFdURk1vdmUoaW5mbyks
IHN0b3JhZ2VLZXksIGZyYW1lSUQsIHNlc3Npb25JRF0oYXV0byByZWNvcmQsIGF1dG8gdGltaW5n
cykgbXV0YWJsZSB7CisgICAgbV9zdG9yYWdlLT5yZXRyaWV2ZShzdG9yYWdlS2V5LCBwcmlvcml0
eSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdCwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgaW5mbyA9IFdURk1vdmUo
aW5mbyksIHN0b3JhZ2VLZXksIGZyYW1lSURdKGF1dG8gcmVjb3JkLCBhdXRvIHRpbWluZ3MpIG11
dGFibGUgewogICAgICAgICBpbmZvLnN0b3JhZ2VUaW1pbmdzID0gdGltaW5nczsKIAogICAgICAg
ICBpZiAoIXJlY29yZCkgewpAQCAtMzQwLDIyICszMzIsMTMgQEAgdm9pZCBDYWNoZTo6cmV0cmll
dmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxG
cmFtZUkKIAogICAgICAgICBhdXRvIGVudHJ5ID0gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQo
KnJlY29yZCk7CiAKLSAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXA7Ci0j
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICAgICAgaWYgKGF1dG8gbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgbWF4QWdlQ2FwID0gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5tYXhBZ2VDYWNoZUNhcChyZXF1ZXN0KTsKLSNlbmRpZgotICAgICAgICBh
dXRvIHVzZURlY2lzaW9uID0gZW50cnkgPyBtYWtlVXNlRGVjaXNpb24oKmVudHJ5LCByZXF1ZXN0
LCBtYXhBZ2VDYXApIDogVXNlRGVjaXNpb246Ok5vRHVlVG9EZWNvZGVGYWlsdXJlOworICAgICAg
ICBhdXRvIHVzZURlY2lzaW9uID0gZW50cnkgPyBtYWtlVXNlRGVjaXNpb24oKmVudHJ5LCByZXF1
ZXN0KSA6IFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVjb2RlRmFpbHVyZTsKICAgICAgICAgc3dpdGNo
ICh1c2VEZWNpc2lvbikgewogICAgICAgICBjYXNlIFVzZURlY2lzaW9uOjpVc2U6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VmFsaWRhdGU6CiAgICAgICAg
ICAgICBlbnRyeS0+c2V0TmVlZHNWYWxpZGF0aW9uKHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVXNlRGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNh
cDoKLSAgICAgICAgICAgIGVudHJ5ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIG1fc3RvcmFnZS0+
cmVtb3ZlKHN0b3JhZ2VLZXkpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBlbnRyeSA9IG51bGxwdHI7CiAgICAgICAgIH07CkBAIC00MzAsNyArNDEz
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb24KICAgICByZXR1cm4gY2FjaGVFbnRyeTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0
UmVxdWVzdCkKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKQogewogICAg
IExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHN0b3JpbmcgcmVkaXJlY3QgJXMg
LT4gJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgcmVkaXJlY3RS
ZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAKQEAgLTQ0NSw2ICs0Mjgs
MTYgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXUKICAgICB9CiAKICAgICBhdXRvIGNhY2hlRW50
cnkgPSBtYWtlUmVkaXJlY3RFbnRyeShyZXF1ZXN0LCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0
KTsKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKG1heEFn
ZUNhcCkgeworICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBjYXBw
aW5nIG1heCBhZ2UgZm9yIHJlZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCksIHJlZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOworICAgICAgICBjYWNoZUVudHJ5LT5jYXBNYXhBZ2UobWF4QWdlQ2FwLnZhbHVl
KCkpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1heEFnZUNhcCk7CisjZW5kaWYK
KwogICAgIGF1dG8gcmVjb3JkID0gY2FjaGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7
CiAKICAgICBtX3N0b3JhZ2UtPnN0b3JlKHJlY29yZCwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCBmMTVhZDZi
ZDBhZGM4YzczNThjMWE5NDk5ODBkODQwOWU2MjgzM2E0Li5iNjZlMzJkMjkwZmU0NDU5ZjMzMDE3
ZTc5NzBhMzI1ZjdjZWJmM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODEsOCAr
ODIsNyBAQCBlbnVtIGNsYXNzIFVzZURlY2lzaW9uIHsKICAgICBOb0R1ZVRvVmFyeWluZ0hlYWRl
ck1pc21hdGNoLAogICAgIE5vRHVlVG9NaXNzaW5nVmFsaWRhdG9yRmllbGRzLAogICAgIE5vRHVl
VG9EZWNvZGVGYWlsdXJlLAotICAgIE5vRHVlVG9FeHBpcmVkUmVkaXJlY3QsCi0gICAgTm9EdWVU
b1ByZXZhbGVudFJlc291cmNlQWdlQ2FwCisgICAgTm9EdWVUb0V4cGlyZWRSZWRpcmVjdAogfTsK
IAogdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBhZ2VJRCov
LCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47CkBAIC0xMTMsOSArMTEzLDkgQEAgcHVibGljOgog
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5nIFJldHJp
ZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUEFMOjpTZXNzaW9u
SUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCByZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUmV0cmll
dmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3Jl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lk
IChNYXBwZWRCb2R5Jik+JiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRp
cmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFt
ZUlEJiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiB2YWxp
ZGF0aW5nUmVzcG9uc2UpOwogCiAgICAgc3RydWN0IFRyYXZlcnNhbEVudHJ5IHsKQEAgLTE1Niw2
ICsxNTYsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBkdW1wRmlsZVBhdGgoKSBjb25zdDsKICAg
ICB2b2lkIGRlbGV0ZUR1bXBGaWxlKCk7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1h
eEFnZUNhcChFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vz
c2lvbklEKTsKKwogICAgIFJlZjxTdG9yYWdlPiBtX3N0b3JhZ2U7CiAKICNpZiBFTkFCTEUoTkVU
V09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4
IGFlMTE4OGFlM2FhZDhmODJkNWZjMDYyZjVlNGZmNDRlZDExZGU2ZDEuLjIyNmE0MjFhODQ3ZGM2
NThhYmZkOTc1M2ZmNjM4MjYzNzUxNGFmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC05NSw2ICs5
NSw4IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29u
c3QKICAgICBpZiAoaXNSZWRpcmVjdCkKICAgICAgICAgbV9yZWRpcmVjdFJlcXVlc3QtPmVuY29k
ZVdpdGhvdXRQbGF0Zm9ybURhdGEoZW5jb2Rlcik7CiAKKyAgICBlbmNvZGVyIDw8IG1fbWF4QWdl
Q2FwOworICAgIAogICAgIGVuY29kZXIuZW5jb2RlQ2hlY2tzdW0oKTsKIAogICAgIERhdGEgaGVh
ZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKQEAgLTEzMyw2ICsx
MzUsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3Jk
KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCisgICAgZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fbWF4QWdlQ2FwKTsKKyAg
ICAKICAgICBpZiAoIWRlY29kZXIudmVyaWZ5Q2hlY2tzdW0oKSkgewogICAgICAgICBMT0coTmV0
d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbHVy
ZVxuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQxLDYgKzE0NSwxOCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3Jh
Z2U6OlJlY29yZCYgc3RvcmFnZQogICAgIHJldHVybiBlbnRyeTsKIH0KIAorI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitib29sIEVudHJ5OjpoYXNSZWFjaGVkUHJldmFsZW50
UmVzb3VyY2VBZ2VDYXAoKSBjb25zdAoreworICAgIHJldHVybiBtX21heEFnZUNhcCAmJiBXZWJD
b3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSgpLCB0aW1lU3RhbXAoKSkgPiBtX21heEFn
ZUNhcDsKK30KKwordm9pZCBFbnRyeTo6Y2FwTWF4QWdlKGNvbnN0IFNlY29uZHMgc2Vjb25kcykK
K3sKKyAgICBtX21heEFnZUNhcCA9IHNlY29uZHM7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCiB2b2lkIEVudHJ5Ojppbml0aWFsaXplU2hhcmVhYmxlUmVzb3Vy
Y2VIYW5kbGVGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5kZXggNTNl
ZGVmNzBjYzE3NGZlNmNmMDg2NWQ2ZWQ5NTYzZDY1ZmQ3NmZjZS4uZGVkYTg2YTQ0YjYxODQ5ZDZk
YmIzZDAxZDM0MjAxOTJlNzcyOTk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNzAsNiArNzEsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
c0pTT04oU3RyaW5nQnVpbGRlciYsIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mKSBjb25zdDsK
IAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgYm9vbCBoYXNSZWFj
aGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoKSBjb25zdDsKKyAgICB2b2lkIGNhcE1heEFnZShj
b25zdCBTZWNvbmRzKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUJ1
ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNP
VVJDRSkKQEAgLTg4LDYgKzk0LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RvcmFnZTo6
UmVjb3JkIG1fc291cmNlU3RvcmFnZVJlY29yZCB7IH07CisgICAgCisgICAgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiBtX21heEFnZUNhcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcAppbmRleCA3YjQwYWIxMmQ5NzMwNmEwZTY5YzE4ZWE1MWZmYjE4YTA0ZTZhOWZi
Li42ZmFkODU5MDIwMWUwYzAwYWZiZTJhMmZkNmU4MWMwZmZhOGE4ZmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0
d29ya0xvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNlc3Np
b25UcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4K
ICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApA
QCAtNzEsNyArNzIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OndpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3UKIHsKICAgICBMT0coTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiU3BlY3VsYXRpdmUgcmVkaXJlY3QgJXMg
LT4gJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZGlyZWN0UmVx
dWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fY2FjaGVFbnRyeSA9
IG1fY2FjaGUtPnN0b3JlUmVkaXJlY3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVkaXJl
Y3RSZXF1ZXN0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcDsKKyNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChhdXRvIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpCisgICAgICAgIG1heEFnZUNh
cCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4QWdlQ2FjaGVDYXAocmVxdWVzdCk7CisjZW5k
aWYKKyAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgbWF4QWdlQ2FwKTsKICAgICAvLyBDcmVh
dGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgaWYgKCFt
X2NhY2hlRW50cnkpCiAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VSZWRpcmVj
dEVudHJ5KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBhMTU1ZTlmMmUzYWUxMzgxNDQzYTRhMGNlMGIyNDA3
NTdlNGE2OWViLi5hMzc4MGM1NWJjNjQzNTc3YjRkMDc4MDFlMTRjNTFlMWQwMGFlNDk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI4Miw4ICsyODIsNiBAQCBzdGF0aWMgU3RyaW5n
IGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KFVzZURlY2lzaW9uIGRlY2lz
aW9uKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjptaXNz
aW5nVmFsaWRhdG9yRmllbGRzS2V5KCk7CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6Tm9EdWVUb0Rl
Y29kZUZhaWx1cmU6CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6Tm9EdWVUb0V4cGlyZWRSZWRpcmVj
dDoKLSAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvUHJldmFsZW50UmVzb3VyY2VBZ2VDYXA6
Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om90aGVyS2V5
KCk7CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VXNlOgogICAgIGNhc2UgVXNlRGVjaXNpb246OlZh
bGlkYXRlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NjRkOTczZjM4
YWU1M2ViNThiYzI0YjhlOTYxNjM5ZTVmNzYzZWMwLi4yNjU0Y2E5NTdiYjI5NmJjNTllMmY4ZmY3
ZWJlNTMyNTc4ZTVjNjYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMTEtMDYgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBT
dGF0aXN0aWNzOiBSZW1vdmUgY2FwIG9uIHBhcnRpdGlvbmVkIGNhY2hlIG1heCBhZ2UgaWYgaXQg
bWF0Y2hlcyBhIG5ldHdvcmsgcmVsb2FkIChyZWRpcmVjdC1vbmx5KQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzYwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80NDYxMjI0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0IGFu
ZCBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNh
Y2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sOgorICAgICAgICAgICAgVGhl
IHRlc3Qgbm93IHBlcmZvcm1zOgorICAgICAgICAgICAgLSBhbiBpbml0aWFsIEZldGNoIHJlcXVl
c3Qgd2l0aCBhIHBlcm1hbmVudCByZWRpcmVjdCB0byBJRCAxMjM0LiBDYXBwZWQgbWF4IGFnZS4K
KyAgICAgICAgICAgIC0gYSBzZWNvbmQgRmV0Y2ggcmVxdWVzdCB3aXRoIGEgcGVybWFuZW50IHJl
ZGlyZWN0IHRvIElEIDQzMjEuIENhcHBlZCBtYXggYWdlLgorICAgICAgICAgICAgLSBhIHRoaXJk
IEZldGNoIHJlcXVlc3Qgd2l0aCBhIHBlcm1hbmVudCByZWRpcmVjdCB0byBhbmQgZW1wdHkgSUQu
IENhcHBlZCBtYXggYWdlLgorICAgICAgICAgICAgLSBhIGZvdXJ0aCBGZXRjaCByZXF1ZXN0IHdp
dGggYSBwZXJtYW5lbnQgcmVkaXJlY3QgdG8gYW5kIGVtcHR5IElELiBNYXggYWdlIGNhcCByZW1v
dmVkLgorICAgICAgICAgICAgLSBhIGZpZnRoIEZldGNoIHJlcXVlc3Qgd2l0aCBhIHBlcm1hbmVu
dCByZWRpcmVjdCB0byBhbmQgZW1wdHkgSUQuIFJlZ3VsYXIgY2FjaGUgaGl0LgorICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1h
bmVudC1yZWRpcmVjdC5waHA6CisgICAgICAgICAgICBOb3cgcmV0dXJucyBhbiBIVFRQIDUwMCBp
ZiB0aGUgcmVxdWVzdCBjb250YWlucyB2YWxpZGF0aW9uIGhlYWRlcnMuCisKIDIwMTgtMTEtMDEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBMb2NhdGlvbiBvYmpl
Y3Qgc2FucyBicm93c2luZyBjb250ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVu
dC1yZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1l
eHBlY3RlZC50eHQKaW5kZXggNjNjNjA2OWY2NDM2NzVkMjAxZGQ2MTE4Njg3M2NhZDUxMDA2ZTdj
Yi4uMGNjZTVhYTFjMzZhOTRkNTUwYmRlMjI5YWRlNDQ2ZmY4MzU1YzFjYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1t
YXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1m
b3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0LDkgQEAgT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3Zh
bHVlPTEyMzQiCitQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTQzMjEiCitQ
QVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIKK1BBU1MgbG9hZGVkVXJsIGlz
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMv
ZWNoby1xdWVyeS5waHA/dmFsdWU9IgogUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92
YWx1ZT0iCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4
LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1y
ZXNvdXJjZS5odG1sCmluZGV4IDA4YjgyYmJmYjU0NzUwMDU3MjFkZjgzZGFmN2RkODMyYWZkYzg5
NTUuLjE3ODAwNGJjZTcxNTZjZDU5MDAwZGJjNzNkZDE1YTBlMWExYzk5ZWIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUt
bWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2
YWxlbnQtcmVzb3VyY2UuaHRtbApAQCAtMzEsMTAgKzMxLDYzIEBACiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gc2Vjb25kRmV0Y2goKSB7Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0cmlnZ2Vy
IGEgc3VjY2Vzc2Z1bCBjYWNoZSBoaXQuCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0cmln
Z2VyIGEgc3VjY2Vzc2Z1bCBjYWNoZSBoaXQgYW5kIGluc3RlYWQgY3JlYXRlIGFub3RoZXIgY2Fw
cGVkIGNhY2hlIGVudHJ5LgogICAgICAgICBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJlY3Qu
cGhwIiwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjYWNoZTogImZvcmNlLWNhY2hl
IiwKKyAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAgICAgICAgICJYLVdl
YktpdCI6ICI0MzIxIiwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVz
cG9uc2UudXJsOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwi
LCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2Vz
L2VjaG8tcXVlcnkucGhwP3ZhbHVlPTQzMjEiKTsKKyAgICAgICAgICAgIHRoaXJkRmV0Y2goKTsK
KyAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBm
aW5pc2hKU1Rlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0aGlyZEZl
dGNoKCkgeworICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIHN1Y2Nlc3NmdWwg
Y2FjaGUgaGl0IGFuZCBpbnN0ZWFkIGNyZWF0ZSBhbm90aGVyIGNhcHBlZCBjYWNoZSBlbnRyeS4K
KyAgICAgICAgZmV0Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FjaGU6ICJmb3JjZS1jYWNoZSIsCisgICAgICAgICAgICB9
CisgICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVk
VXJsID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJs
b2FkZWRVcmwiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIpOworICAgICAgICAgICAgZm91cnRoRmV0
Y2goKTsKKyAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZh
bHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBm
b3VydGhGZXRjaCgpIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBzdWNj
ZXNzZnVsIGNhY2hlIGhpdCBidXQgY2xlYXIgY2FwcGluZy4KKyAgICAgICAgZmV0Y2goImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQt
cGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FjaGU6ICJmb3JjZS1jYWNoZSIsCisgICAgICAgICAgICB9CisgICAgICAgICkudGhlbihmdW5j
dGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJsOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRVcmwiLCAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnku
cGhwP3ZhbHVlPSIpOworICAgICAgICAgICAgZmlmdGhGZXRjaCgpOworICAgICAgICB9KS5jYXRj
aChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJvci5tZXNzYWdl
KTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpZnRoRmV0Y2goKSB7CisgICAgICAg
IC8vIFRoaXMgc2hvdWxkIHRyaWdnZXIgYSByZWd1bGFyLCBzdWNjZXNzZnVsIGNhY2hlIGhpdC4K
KyAgICAgICAgZmV0Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICAgICAiWC1X
ZWJLaXQiOiAiMTIzNCIsCisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICApLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgIGxvYWRlZFVybCA9IHJl
c3BvbnNlLnVybDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHAgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Nh
Y2hlZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwCmluZGV4IDk0N2VkM2I5Zjg0YjA5Zjk5YjYwNjhi
ZGZlNTQyNTAzMWYwM2ZiN2QuLjdkMmQwNGFmMzY4ZGQ3ZmM5ZWI1NGFkN2Y5N2ZlZDAxNDMxMjI4
NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHAKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQt
cGVybWFuZW50LXJlZGlyZWN0LnBocApAQCAtMSwxMSArMSwxNSBAQAogPD9waHAKK2lmIChpc3Nl
dCgkX1NFUlZFUlsiSFRUUF9JRl9OT05FX01BVENIIl0pIHx8IGlzc2V0KCRfU0VSVkVSWyJIVFRQ
X0lGX01PRElGSUVEX1NJTkNFIl0pKSB7CisgICAgaGVhZGVyKCRfU0VSVkVSWyJTRVJWRVJfUFJP
VE9DT0wiXSAuICIgNTAwIEludGVybmFsIFNlcnZlciBFcnJvciIsIHRydWUsIDUwMCk7CisgICAg
ZXhpdDsKK30KIGhlYWRlcigiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRwOi8vMTI3
LjAuMC4xOjgwMDAiKTsKIGhlYWRlcigiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVyczogWC1X
ZWJLaXQiKTsKIGlmICgkX1NFUlZFUlsiUkVRVUVTVF9NRVRIT0QiXSA9PSAiT1BUSU9OUyIgJiYg
aXNzZXQoJF9TRVJWRVJbIkhUVFBfQUNDRVNTX0NPTlRST0xfUkVRVUVTVF9NRVRIT0QiXSkgJiYg
JF9TRVJWRVJbIkhUVFBfQUNDRVNTX0NPTlRST0xfUkVRVUVTVF9NRVRIT0QiXSA9PSAiR0VUIikg
ewotICBleGl0OworICAgIGV4aXQ7CiB9CiAkaGVhZGVyU3RyaW5nVmFsdWUgPSAkX1NFUlZFUlsi
SFRUUF9YX1dFQktJVCJdOwotaGVhZGVyKCJIVFRQLzEuMSAzMDEgTW92ZWQgUGVybWFuZW50bHki
KTsKK2hlYWRlcigkX1NFUlZFUlsiU0VSVkVSX1BST1RPQ09MIl0gLiAiIDMwMSBNb3ZlZCBQZXJt
YW5lbnRseSIsIHRydWUsIDMwMSk7CiBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHByaXZhdGUsIG1h
eC1hZ2U9MzE1MzYwMDAiLCB0cnVlKTsKIGhlYWRlcignRVRhZzogIldlYktpdFRlc3QiJywgdHJ1
ZSk7CiBoZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9IiAuICRoZWFkZXJTdHJp
bmdWYWx1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354009</attachid>
            <date>2018-11-06 14:33:19 -0800</date>
            <delta_ts>2018-11-06 15:10:46 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189760-20181106143318.patch</filename>
            <type>text/plain</type>
            <size>31835</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdjMWRkYzUwZTYzNTZi
ZDQ1YzU4Mjc3NGVkZmQ0ZjU0MGRlNTg3NS4uMGQ5MGQ2MmNmMjE1ZjU4OTk5MzdmZDhmODk1NDBi
ZjkwNGY4ZDlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTExLTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlIGlmIGl0
IG1hdGNoZXMgYSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldCBh
bmQgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0ZXN0
IGZsZXNoZWQgb3V0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNS
ZWRpcmVjdGlvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omlz
UmVkaXJlY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAgICAgTW92ZWQgdG8gdGhlIGlt
cGxlbWVudGF0aW9uIGZpbGUgc28gdGhhdCBJIGNhbiBleHBvcnQgaXQgd2l0aG91dCB3YXJuaW5n
LgorCiAyMDE4LTExLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTG9jYXRpb24gb2JqZWN0IHNhbnMgYnJvd3NpbmcgY29udGV4dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MDYx
MTQ3MmVkZGEzMGE0YTFiODIyNDhiMDIyZTY2NWQyNGRiMzY5Li5hY2RiZDk2YjBjYjlmOTU5Njcy
OWM5M2MxOGI2ODFiNjY0NmJkODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTEx
LTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291
cmNlIExvYWQgU3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXgg
YWdlIGlmIGl0IG1hdGNoZXMgYSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25seSkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5u
IEZhYmxldCBhbmQgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgV2hlbiBhIHJlZGlyZWN0IGNh
Y2hlIGVudHJ5IGZvciBhIHByZXZhbGVudCByZXNvdXJjZSByZWFjaGVzIGl0cyBtYXgKKyAgICAg
ICAgYWdlIGNhcCwgaXQgaXMgbG9hZGVkIGFnYWluIGZyb20gdGhlIG5ldHdvcmsgYW5kIHRoZSBu
ZXR3b3JrIHJlc3BvbnNlCisgICAgICAgIGlzIGNvbXBhcmVkIHdpdGggd2hhdCdzIGluIHRoZSBj
YWNoZS4gSWYgaXQncyBhIG1hdGNoLCB0aGUgY2FjaGUgZW50cnkKKyAgICAgICAgaXMgZnVsbHkg
YWNjZXB0ZWQuIElmIG5vdCwgYSBuZXcgY2FwcGVkIGNhY2hlIGVudHJ5IGlzIGNyZWF0ZWQuCisK
KyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHN0aWxsIG9mZiBieSBkZWZhdWx0LgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VDYWNoZWRSZWRpcmVjdCBjb25zdCk6
CisgICAgICAgICAgICBOb3cgY2hlY2tzIHRoZSBuZXcgbWVtYmVyIG1fY2FjaGVFbnRyeUZvck1h
eEFnZUNhcFZhbGlkYXRpb24uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgICAgIE5ldyBjYXNlIGhhbmRsZWQgZm9y
IGVudHJ5LT5oYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoKS4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VD
YXBWYWxpZGF0aW9uKToKKyAgICAgICAgICAgIFRoaXMgaXMgd2hlcmUgdGhlIG5ldyBsb2dpYyBj
b21wYXJlcyB0aGUgaW5jb21pbmcgcmVkaXJlY3Qgd2l0aCB0aGUKKyAgICAgICAgICAgIGNhY2hl
ZCBvbmUuIElmIHRoZXkgbWF0Y2gsIGFuIHVuY2FwcGVkIGVudHJ5IGlzIGFsbG93ZWQgdG8gYmUg
c3RvcmVkLgorICAgICAgICAgICAgSWYgdGhleSBkb24ndCBtYXRjaCwgYSBuZXcgY2FwcGVkIGVu
dHJ5IHdpbGwgYmUgc3RvcmVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAgICAgTm93IGNhbGxzIHRo
ZSBuZXcKKyAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dmFsaWRhdGVDYWNoZUVu
dHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbigpCisgICAgICAgICAgICBmdW5jdGlvbi4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgICAg
IEFkZGVkIHRoZSBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uIG1lbWJlci4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6Om1ha2VVc2VEZWNpc2lvbik6CisgICAgICAgICAgICBSZXN0
b3JlZCB0byBwcmV2aW91cyBiZWhhdmlvciB3aGljaCBtZWFucworICAgICAgICAgICAgVXNlRGVj
aXNpb246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCB3YXMgcmVtb3ZlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAgICAgICAgICAg
UmVzdG9yZWQgdG8gcHJldmlvdXMgYmVoYXZpb3IuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Q2FjaGU6OnN0b3JlUmVkaXJlY3QpOgorICAgICAgICAgICAgTm93IHRha2VzIHRoZSBv
cHRpb25hbCBtYXhBZ2VDYXAgYW5kIGNhcHMgdGhlIGVudHJ5J3MgbWF4IGFnZSBpZiBpdCdzIHNl
dC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpoYXNSZWFjaGVkUHJldmFsZW50UmVz
b3VyY2VBZ2VDYXApOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2Rl
QXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgICAgIE5vdyBlbmNvZGVzIG1fbWF4QWdl
Q2FwLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdl
UmVjb3JkKToKKyAgICAgICAgICAgIE5vdyBkZWNvZGVzIG1fbWF4QWdlQ2FwLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpoYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VB
Z2VDYXAgY29uc3QpOgorICAgICAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RW50cnk6OmNhcE1heEFnZSk6CisgICAgICAgICAgICBBZGRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAgICAg
QWRkZWQgdGhlIG9wdGlvbmFsIG1fbWF4QWdlQ2FwLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KToKKyAgICAgICAgICAgIE5vdyBnZXRzIHRoZSBvcHRpb25hbCBtYXggYWdlIGNhcCBmcm9tIHRo
ZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gYW5kIHNlbmRzIGl0CisgICAgICAgICAgICB0byBDYWNo
ZTo6c3RvcmVSZWRpcmVjdCgpLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmNh
Y2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KToKKyAgICAgICAgICAgIFJlbW92
ZWQgaGFuZGxpbmcgb2YgVXNlRGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNh
cC4KKwogMjAxOC0xMS0wMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYSBzdG9yYWdlIGxpbWl0IGZvciBJbmRleGVkREIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5k
ZXggYWI3YjJlMWRkNDA5ODFmOGYwZjU0MWM1ZmM4OGQzOWVlNjdlZTNjMy4uNzY2NzIxOTE2OThm
MWE2YjNiMGFlOWZhMWQ1MDU0N2UxMjMzNGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTI5Niw2
ICsyOTYsMTEgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c0NvZGUo
aW50IHN0YXR1c0NvZGUpCiAgICAgLy8gRklYTUU6IFNob3VsZCBpbnZhbGlkYXRlIG9yIHVwZGF0
ZSBwbGF0Zm9ybSByZXNwb25zZSBpZiBwcmVzZW50LgogfQogCitib29sIFJlc291cmNlUmVzcG9u
c2VCYXNlOjppc1JlZGlyZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNSZWRpcmVjdGlv
blN0YXR1c0NvZGUobV9odHRwU3RhdHVzQ29kZSk7Cit9CisKIGNvbnN0IFN0cmluZyYgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0dXNUZXh0KCkgY29uc3QgCiB7CiAgICAgbGF6eUluaXQo
QWxsRmllbGRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCBkOGZjYzE0MzFiNTBiYzdhYjY3ZjFkMTk2OGI5
MWNlNzBlYTE2MWVmLi42ZmNhNmI3NTFmNTdmMDgxZjQzYTEzNDNiMmU1MTUwY2UyZmQ2MjFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBodHRwU3RhdHVzQ29kZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0SFRUUFN0YXR1c0NvZGUoaW50KTsKLSAgICBib29sIGlzUmVkaXJlY3Rpb24oKSBjb25zdCB7
IHJldHVybiBpc1JlZGlyZWN0aW9uU3RhdHVzQ29kZShtX2h0dHBTdGF0dXNDb2RlKTsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNSZWRpcmVjdGlvbigpIGNvbnN0OwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgU3RyaW5nJiBodHRwU3RhdHVzVGV4dCgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SFRUUFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggZWNjMDQ3ZmY1MmE5ODllOGRiMzY5YjFmMTFmMGNkYTJlNjk2ODY0ZC4uNTViYmRj
ZTZkZWYyODQ0YmZlOWNlMjU3NWUzYzcyMjBiNTg5MmUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTEs
NiArNTEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlck5hbWVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRN
ZXRyaWNzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ft
ZVNpdGVJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtMTU0
LDcgKzE1NSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VDYWNoZShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiAKIGJvb2wgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpjYW5Vc2VDYWNoZWRSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKKyAgICBpZiAoIWNh
blVzZUNhY2hlKHJlcXVlc3QpIHx8IG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBMaW1pdCBjYWNoZWQgcmVkaXJlY3RzIHRv
IGF2b2lkIGN5Y2xlcyBhbmQgb3RoZXIgdHJvdWJsZS4KICAgICAvLyBOZXR3b3JraW5nIGxheWVy
IGZvbGxvd3Mgb3ZlciAzMCByZWRpcmVjdHMgYnV0IGNhY2hpbmcgdGhhdCBtYW55IHNlZW1zIHVu
bmVjZXNzYXJ5LgpAQCAtMjE2LDcgKzIxNyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAg
IEFTU0VSVChjYW5Vc2VDYWNoZShyZXF1ZXN0KSk7CiAKICAgICBSZWZQdHI8TmV0d29ya1Jlc291
cmNlTG9hZGVyPiBsb2FkZXIodGhpcyk7Ci0gICAgbV9jYWNoZS0+cmV0cmlldmUocmVxdWVzdCwg
eyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCB9LCBzZXNz
aW9uSUQoKSwgW3RoaXMsIGxvYWRlciA9IFdURk1vdmUobG9hZGVyKSwgcmVxdWVzdCA9IFJlc291
cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0byBlbnRyeSwgYXV0byBpbmZvKSBtdXRhYmxlIHsK
KyAgICBtX2NhY2hlLT5yZXRyaWV2ZShyZXF1ZXN0LCB7IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQs
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEIH0sIFt0aGlzLCBsb2FkZXIgPSBXVEZNb3ZlKGxvYWRl
ciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnksIGF1
dG8gaW5mbykgbXV0YWJsZSB7CiAgICAgICAgIGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7CiAg
ICAgICAgICAgICAvLyBUaGUgbG9hZGVyIGhhcyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkgaGVs
ZCBhbGl2ZSBieSB0aGlzIGxhbWJkYS4KICAgICAgICAgICAgIHJldHVybjsKQEAgLTIyOSw2ICsy
MzAsMTUgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0
TmV0d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKyAgICAgICAgaWYgKGVudHJ5LT5oYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAo
KSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVu
dHJ5OiBSZXNvdXJjZSBoYXMgcmVhY2hlZCBwcmV2YWxlbnQgcmVzb3VyY2UgYWdlIGNhcCAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAg
ICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbiA9IFdURk1vdmUoZW50cnkp
OworICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBvcmln
aW5hbFJlcXVlc3QoKTsKKyAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZN
b3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBpZiAoZW50cnktPnJlZGlyZWN0UmVx
dWVzdCgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IEhhbmRsaW5nIHJlZGlyZWN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNl
ID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291
cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPmRpc3BhdGNoV2ls
bFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGVudHJ5
KSk7CkBAIC01ODQsMTIgKzU5NCwzNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
QmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CiB9CiAKK3N0
ZDo6b3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1Jlc291cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hl
RW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKKyAgICBib29sIGV4aXN0aW5nQ2FjaGVFbnRyeU1hdGNoZXNOZXdSZXNwb25z
ZSA9IGZhbHNlOworICAgIGlmIChtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKSB7
CisgICAgICAgIEFTU0VSVChyZWRpcmVjdFJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVz
cG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CisgICAgICAgIEFTU0VSVChyZWRpcmVjdFJlc3BvbnNl
LmlzUmVkaXJlY3Rpb24oKSk7CisgICAgICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pID09IG1fY2FjaGVFbnRy
eUZvck1heEFnZUNhcFZhbGlkYXRpb24tPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKFdlYkNv
cmU6OkhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbikpCisgICAgICAgICAgICBleGlzdGluZ0NhY2hl
RW50cnlNYXRjaGVzTmV3UmVzcG9uc2UgPSB0cnVlOworCisgICAgICAgIG1fY2FjaGUtPnJlbW92
ZShtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uLT5rZXkoKSk7CisgICAgICAgIG1f
Y2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24gPSBudWxscHRyOworICAgIH0KKyAgICAK
KyAgICBpZiAoIWV4aXN0aW5nQ2FjaGVFbnRyeU1hdGNoZXNOZXdSZXNwb25zZSkgeworICAgICAg
ICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCgpKSkKKyAgICAgICAgICAgIHJldHVy
biBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPm1heEFnZUNhY2hlQ2FwKHJlcXVlc3QpOworICAgIH0K
KyNlbmRpZgorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgKyttX3JlZGlyZWN0Q291bnQ7CiAKKyAgICBh
dXRvIG1heEFnZUNhcCA9IHZhbGlkYXRlQ2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24o
cmVxdWVzdCwgcmVkaXJlY3RSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICBpZiAocmVk
aXJlY3RSZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdv
cmsgJiYgY2FuVXNlQ2FjaGVkUmVkaXJlY3QocmVxdWVzdCkpCi0gICAgICAgIG1fY2FjaGUtPnN0
b3JlUmVkaXJlY3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0KTsK
KyAgICAgICAgbV9jYWNoZS0+c3RvcmVSZWRpcmVjdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
LCByZWRpcmVjdFJlcXVlc3QsIG1heEFnZUNhcCk7CiAKICAgICBpZiAobV9uZXR3b3JrTG9hZENo
ZWNrZXIpIHsKICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnN0b3JlUmVkaXJlY3Rpb25J
Zk5lZWRlZChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGFmYjBlOWM3
OTU2NjNlYWIwNWVjNGFmNGYzODI1NGI3N2ZhZWMxZGEuLjJmNjdlYWVmYjY2NjUwNGFkZTYxZTkx
ZDY3Y2ViYmY1YzcxZmUyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTc0LDYgKzE3NCw4IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGxvZ1Nsb3dDYWNoZVJldHJpZXZlSWZOZWVkZWQoY29uc3QgTmV0d29ya0Nh
Y2hlOjpDYWNoZTo6UmV0cmlldmVJbmZvJik7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+
IHZhbGlkYXRlQ2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVj
dFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKwogICAgIGNvbnN0
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAgIFJlZjxO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwpAQCAtMjAyLDYgKzIw
NCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNo
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5n
Q29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CiAgICAg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeVdhaXRpbmdG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a0xvYWRDaGVja2VyPiBtX25ldHdvcmtMb2FkQ2hlY2tlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBhYzVlZGY3ZmE2
Yzk4MmNlOWM0YmE5OGQ3ZTY2NTBiMzBhZTU3YzUwLi5hYmU5OGVmM2QwZDAwNGRhZmI3YWYwYWVl
ODgzZmYwZmEyMTlmN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0xNTIsMTEgKzE1Miw2IEBAIHN0YXRpYyBib29s
IGNhY2hlUG9saWN5QWxsb3dzRXhwaXJlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeSBwb2xpY3kpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBoYXNSZWFj
aGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgY29uc3QgU2Vjb25kcyBtYXhBZ2UpCi17
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlLCB0aW1lc3Rh
bXApID4gbWF4QWdlOwotfQotCiBzdGF0aWMgYm9vbCByZXNwb25zZUhhc0V4cGlyZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhTdGFsZSkKIHsKICAgICBpZiAocmVzcG9uc2UuY2Fj
aGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkpCkBAIC0xODgsMTEgKzE4Myw4IEBAIHN0YXRpYyBi
b29sIHJlc3BvbnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsCiAgICAgcmV0dXJuIHJlc3BvbnNlSGFzRXhwaXJlZChyZXNwb25zZSwg
dGltZXN0YW1wLCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFsZSk7CiB9CiAKLXN0YXRpYyBVc2VE
ZWNpc2lvbiBtYWtlVXNlRGVjaXNpb24oY29uc3QgRW50cnkmIGVudHJ5LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdl
KQorc3RhdGljIFVzZURlY2lzaW9uIG1ha2VVc2VEZWNpc2lvbihjb25zdCBFbnRyeSYgZW50cnks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAobWF4
QWdlICYmIGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcChlbnRyeS5yZXNwb25zZSgp
LCBlbnRyeS50aW1lU3RhbXAoKSwgbWF4QWdlLnZhbHVlKCkpKQotICAgICAgICByZXR1cm4gVXNl
RGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDsKLSAgICAKICAgICAvLyBU
aGUgcmVxdWVzdCBpcyBjb25kaXRpb25hbCBzbyB3ZSBmb3JjZSByZXZhbGlkYXRpb24gZnJvbSB0
aGUgbmV0d29yay4gV2UgbWVyZWx5IGNoZWNrIHRoZSBkaXNrIGNhY2hlCiAgICAgLy8gc28gd2Ug
Y2FuIHVwZGF0ZSB0aGUgY2FjaGUgZW50cnkuCiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25h
bCgpICYmICFlbnRyeS5yZWRpcmVjdFJlcXVlc3QoKSkKQEAgLTI3OSw3ICsyNzEsNyBAQCBzdGF0
aWMgU3RvcmVEZWNpc2lvbiBtYWtlU3RvcmVEZWNpc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUgogICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpZZXM7CiB9CiAK
LXZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkpOwogCkBAIC0zMjMsNyArMzE1LDcgQEAgdm9pZCBDYWNoZTo6cmV0
cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9i
YWxGcmFtZUkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFn
ZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
cXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGlu
Zm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFtZUlELCBzZXNzaW9uSURdKGF1dG8g
cmVjb3JkLCBhdXRvIHRpbWluZ3MpIG11dGFibGUgeworICAgIG1fc3RvcmFnZS0+cmV0cmlldmUo
c3RvcmFnZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFtZUlEXShhdXRvIHJlY29y
ZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKICAgICAgICAgaW5mby5zdG9yYWdlVGltaW5ncyA9
IHRpbWluZ3M7CiAKICAgICAgICAgaWYgKCFyZWNvcmQpIHsKQEAgLTM0MCwyMiArMzMyLDEzIEBA
IHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5Ojpk
ZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbWF4QWdlQ2FwOwotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgICAgIGlmIChhdXRvIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIG1h
eEFnZUNhcCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4QWdlQ2FjaGVDYXAocmVxdWVzdCk7
Ci0jZW5kaWYKLSAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gbWFrZVVzZURlY2lz
aW9uKCplbnRyeSwgcmVxdWVzdCwgbWF4QWdlQ2FwKSA6IFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVj
b2RlRmFpbHVyZTsKKyAgICAgICAgYXV0byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gbWFrZVVzZURl
Y2lzaW9uKCplbnRyeSwgcmVxdWVzdCkgOiBVc2VEZWNpc2lvbjo6Tm9EdWVUb0RlY29kZUZhaWx1
cmU7CiAgICAgICAgIHN3aXRjaCAodXNlRGVjaXNpb24pIHsKICAgICAgICAgY2FzZSBVc2VEZWNp
c2lvbjo6VXNlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVXNlRGVjaXNpb246
OlZhbGlkYXRlOgogICAgICAgICAgICAgZW50cnktPnNldE5lZWRzVmFsaWRhdGlvbih0cnVlKTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvUHJl
dmFsZW50UmVzb3VyY2VBZ2VDYXA6Ci0gICAgICAgICAgICBlbnRyeSA9IG51bGxwdHI7Ci0gICAg
ICAgICAgICBtX3N0b3JhZ2UtPnJlbW92ZShzdG9yYWdlS2V5KTsKLSAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZW50cnkgPSBudWxscHRyOwogICAgICAg
ICB9OwpAQCAtNDMwLDcgKzQxMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0
b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uCiAgICAgcmV0
dXJuIGNhY2hlRW50cnk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3Jl
UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hl
OjpzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+
IG1heEFnZUNhcCkKIHsKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBz
dG9yaW5nIHJlZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCksIHJlZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkp
OwogCkBAIC00NDUsNiArNDI4LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0
b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAgICAgfQog
CiAgICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVJlZGlyZWN0RW50cnkocmVxdWVzdCwgcmVzcG9u
c2UsIHJlZGlyZWN0UmVxdWVzdCk7CisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQorICAgIGlmIChtYXhBZ2VDYXApIHsKKyAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihO
ZXR3b3JrUHJvY2VzcykgY2FwcGluZyBtYXggYWdlIGZvciByZWRpcmVjdCAlcyAtPiAlcyIsIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAgY2FjaGVFbnRyeS0+Y2FwTWF4
QWdlKG1heEFnZUNhcC52YWx1ZSgpKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSht
YXhBZ2VDYXApOworI2VuZGlmCisKICAgICBhdXRvIHJlY29yZCA9IGNhY2hlRW50cnktPmVuY29k
ZUFzU3RvcmFnZVJlY29yZCgpOwogCiAgICAgbV9zdG9yYWdlLT5zdG9yZShyZWNvcmQsIG51bGxw
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmgKaW5kZXggZjE1YWQ2YmQwYWRjOGM3MzU4YzFhOTQ5OTgwZDg0MDllNjI4MzNhNC4uYjY2
ZTMyZDI5MGZlNDQ1OWYzMzAxN2U3OTcwYTMyNWY3Y2ViZjNlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9T
ZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTgxLDggKzgyLDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAg
Tm9EdWVUb1ZhcnlpbmdIZWFkZXJNaXNtYXRjaCwKICAgICBOb0R1ZVRvTWlzc2luZ1ZhbGlkYXRv
ckZpZWxkcywKICAgICBOb0R1ZVRvRGVjb2RlRmFpbHVyZSwKLSAgICBOb0R1ZVRvRXhwaXJlZFJl
ZGlyZWN0LAotICAgIE5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcAorICAgIE5vRHVlVG9F
eHBpcmVkUmVkaXJlY3QKIH07CiAKIHVzaW5nIEdsb2JhbEZyYW1lSUQgPSBzdGQ6OnBhaXI8dWlu
dDY0X3QgLyp3ZWJQYWdlSUQqLywgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+OwpAQCAtMTEzLDkg
KzExMyw5IEBAIHB1YmxpYzoKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
fTsKICAgICB1c2luZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZCAo
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+OwotICAgIHZvaWQg
cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJh
bWVJRCYsIFBBTDo6U2Vzc2lvbklELCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAg
IHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xv
YmFsRnJhbWVJRCYsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0
b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVk
aXJlY3RSZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcCk7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIAogICAgIHN0cnVjdCBUcmF2ZXJz
YWxFbnRyeSB7CkBAIC0xNTYsNiArMTU2LDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZHVtcEZp
bGVQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVEdW1wRmlsZSgpOwogCisgICAgc3RkOjpv
cHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAoRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCk7CisKICAgICBSZWY8U3RvcmFnZT4gbV9zdG9yYWdl
OwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcAppbmRleCBhZTExODhhZTNhYWQ4ZjgyZDVmYzA2MmY1ZTRmZjQ0ZWQxMWRl
NmQxLi4yMjZhNDIxYTg0N2RjNjU4YWJmZDk3NTNmZjYzODI2Mzc1MTRhZjg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmNwcApAQCAtOTUsNiArOTUsOCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFz
U3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgaWYgKGlzUmVkaXJlY3QpCiAgICAgICAgIG1fcmVk
aXJlY3RSZXF1ZXN0LT5lbmNvZGVXaXRob3V0UGxhdGZvcm1EYXRhKGVuY29kZXIpOwogCisgICAg
ZW5jb2RlciA8PCBtX21heEFnZUNhcDsKKyAgICAKICAgICBlbmNvZGVyLmVuY29kZUNoZWNrc3Vt
KCk7CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNp
emUoKSk7CkBAIC0xMzMsNiArMTM1LDggQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6
ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGRlY29kZXIuZGVjb2RlKGVudHJ5
LT5tX21heEFnZUNhcCk7CisgICAgCiAgICAgaWYgKCFkZWNvZGVyLnZlcmlmeUNoZWNrc3VtKCkp
IHsKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgY2hlY2tzdW0g
dmVyaWZpY2F0aW9uIGZhaWx1cmVcbiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0
MSw2ICsxNDUsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3RvcmFn
ZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICAgICByZXR1cm4gZW50cnk7
CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorYm9vbCBFbnRyeTo6
aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9tYXhBZ2VDYXAgJiYgV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UoKSwgdGlt
ZVN0YW1wKCkpID4gbV9tYXhBZ2VDYXA7Cit9CisKK3ZvaWQgRW50cnk6OmNhcE1heEFnZShjb25z
dCBTZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9tYXhBZ2VDYXAgPSBzZWNvbmRzOworfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBFbnRyeTo6aW5pdGlh
bGl6ZVNoYXJlYWJsZVJlc291cmNlSGFuZGxlRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5oCmluZGV4IDUzZWRlZjcwY2MxNzRmZTZjZjA4NjVkNmVkOTU2M2Q2NWZkNzZmY2Uu
LmRlZGE4NmE0NGI2MTg0OWQ2ZGJiM2QwMWQzNDIwMTkyZTc3Mjk5NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDYgKzcxLDExIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYXNKU09OKFN0cmluZ0J1aWxkZXImLCBjb25zdCBTdG9yYWdlOjpS
ZWNvcmRJbmZvJikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQorICAgIGJvb2wgaGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkgY29uc3Q7Cisg
ICAgdm9pZCBjYXBNYXhBZ2UoY29uc3QgU2Vjb25kcyk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICB2b2lkIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0OwogI2lmIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw2ICs5NCw4IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIFN0b3JhZ2U6OlJlY29yZCBtX3NvdXJjZVN0b3JhZ2VSZWNvcmQgeyB9OworICAg
IAorICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbV9tYXhBZ2VDYXA7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggN2I0MGFiMTJkOTczMDZhMGU2OWMx
OGVhNTFmZmIxOGEwNGU2YTlmYi4uNmZhZDg1OTAyMDFlMGMwMGFmYmUyYTJmZDZlODFjMGZmYThh
OGZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24u
aCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTcxLDcgKzcyLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
Ojp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJl
c291CiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIlNwZWN1
bGF0aXZlIHJlZGlyZWN0ICVzIC0+ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
LSAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCk7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRz
PiBtYXhBZ2VDYXA7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBp
ZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
KQorICAgICAgICBtYXhBZ2VDYXAgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPm1heEFnZUNhY2hl
Q2FwKHJlcXVlc3QpOworI2VuZGlmCisgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmVS
ZWRpcmVjdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIG1heEFn
ZUNhcCk7CiAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0
IHN0b3JlLgogICAgIGlmICghbV9jYWNoZUVudHJ5KQogICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5tYWtlUmVkaXJlY3RFbnRyeShyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRp
cmVjdFJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKaW5kZXggYTE1NWU5ZjJlM2Fl
MTM4MTQ0M2E0YTBjZTBiMjQwNzU3ZTRhNjllYi4uYTM3ODBjNTViYzY0MzU3N2I0ZDA3ODAxZTE0
YzUxZTFkMDBhZTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCkBAIC0yODIsOCArMjgy
LDYgQEAgc3RhdGljIFN0cmluZyBjYWNoZWRFbnRyeVJldXNlRmFpbHVyZVRvRGlhZ25vc3RpY0tl
eShVc2VEZWNpc2lvbiBkZWNpc2lvbikKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nS2V5czo6bWlzc2luZ1ZhbGlkYXRvckZpZWxkc0tleSgpOwogICAgIGNhc2UgVXNl
RGVjaXNpb246Ok5vRHVlVG9EZWNvZGVGYWlsdXJlOgogICAgIGNhc2UgVXNlRGVjaXNpb246Ok5v
RHVlVG9FeHBpcmVkUmVkaXJlY3Q6Ci0gICAgY2FzZSBVc2VEZWNpc2lvbjo6Tm9EdWVUb1ByZXZh
bGVudFJlc291cmNlQWdlQ2FwOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjpvdGhlcktleSgpOwogICAgIGNhc2UgVXNlRGVjaXNpb246OlVzZToKICAgICBj
YXNlIFVzZURlY2lzaW9uOjpWYWxpZGF0ZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNzY0ZDk3M2YzOGFlNTNlYjU4YmMyNGI4ZTk2MTYzOWU1Zjc2M2VjMC4uMjY1NGNh
OTU3YmIyOTZiYzU5ZTJmOGZmN2ViZTUzMjU3OGU1YzY2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDE4LTExLTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogUmVtb3ZlIGNhcCBvbiBwYXJ0aXRpb25lZCBj
YWNoZSBtYXggYWdlIGlmIGl0IG1hdGNoZXMgYSBuZXR3b3JrIHJlbG9hZCAocmVkaXJlY3Qtb25s
eSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTc2
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQ2MTIyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWW91ZW5uIEZhYmxldCBhbmQgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVu
dC1yZXNvdXJjZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRt
bDoKKyAgICAgICAgICAgIFRoZSB0ZXN0IG5vdyBwZXJmb3JtczoKKyAgICAgICAgICAgIC0gYW4g
aW5pdGlhbCBGZXRjaCByZXF1ZXN0IHdpdGggYSBwZXJtYW5lbnQgcmVkaXJlY3QgdG8gSUQgMTIz
NC4gQ2FwcGVkIG1heCBhZ2UuCisgICAgICAgICAgICAtIGEgc2Vjb25kIEZldGNoIHJlcXVlc3Qg
d2l0aCBhIHBlcm1hbmVudCByZWRpcmVjdCB0byBJRCA0MzIxLiBDYXBwZWQgbWF4IGFnZS4KKyAg
ICAgICAgICAgIC0gYSB0aGlyZCBGZXRjaCByZXF1ZXN0IHdpdGggYSBwZXJtYW5lbnQgcmVkaXJl
Y3QgdG8gYW5kIGVtcHR5IElELiBDYXBwZWQgbWF4IGFnZS4KKyAgICAgICAgICAgIC0gYSBmb3Vy
dGggRmV0Y2ggcmVxdWVzdCB3aXRoIGEgcGVybWFuZW50IHJlZGlyZWN0IHRvIGFuZCBlbXB0eSBJ
RC4gTWF4IGFnZSBjYXAgcmVtb3ZlZC4KKyAgICAgICAgICAgIC0gYSBmaWZ0aCBGZXRjaCByZXF1
ZXN0IHdpdGggYSBwZXJtYW5lbnQgcmVkaXJlY3QgdG8gYW5kIGVtcHR5IElELiBSZWd1bGFyIGNh
Y2hlIGhpdC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVz
b3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwOgorICAgICAgICAgICAgTm93IHJl
dHVybnMgYW4gSFRUUCA1MDAgaWYgdGhlIHJlcXVlc3QgY29udGFpbnMgdmFsaWRhdGlvbiBoZWFk
ZXJzLgorCiAyMDE4LTExLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgTG9jYXRpb24gb2JqZWN0IHNhbnMgYnJvd3NpbmcgY29udGV4dApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1t
YXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1w
cmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0CmluZGV4IDYzYzYwNjlmNjQzNjc1ZDIwMWRk
NjExODY4NzNjYWQ1MTAwNmU3Y2IuLjBjY2U1YWExYzM2YTk0ZDU1MGJkZTIyOWFkZTQ0NmZmODM1
NWMxY2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAg
LTQsNiArNCw5IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBsb2FkZWRVcmwg
aXMgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNl
cy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0xMjM0IgorUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5
LnBocD92YWx1ZT00MzIxIgorUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0i
CitQQVNTIGxvYWRlZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIKIFBBU1MgbG9hZGVkVXJs
IGlzICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJj
ZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgt
YWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbAppbmRleCAwOGI4MmJiZmI1NDc1MDA1NzIx
ZGY4M2RhZjdkZDgzMmFmZGM4OTU1Li4xNzgwMDRiY2U3MTU2Y2Q1OTAwMGRiYzczZGQxNWEwZTFh
MWM5OWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2Fj
aGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKQEAgLTMxLDEwICszMSw2MyBA
QAogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNlY29uZEZldGNoKCkgewotICAgICAgICAvLyBUaGlz
IHNob3VsZCBub3QgdHJpZ2dlciBhIHN1Y2Nlc3NmdWwgY2FjaGUgaGl0LgorICAgICAgICAvLyBU
aGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIHN1Y2Nlc3NmdWwgY2FjaGUgaGl0IGFuZCBpbnN0ZWFk
IGNyZWF0ZSBhbm90aGVyIGNhcHBlZCBjYWNoZSBlbnRyeS4KICAgICAgICAgZmV0Y2goImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQt
cGVybWFuZW50LXJlZGlyZWN0LnBocCIsCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Y2FjaGU6ICJmb3JjZS1jYWNoZSIsCisgICAgICAgICAgICAgICAgaGVhZGVyczogeworICAgICAg
ICAgICAgICAgICAgICAiWC1XZWJLaXQiOiAiNDMyMSIsCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICApLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAg
ICAgIGxvYWRlZFVybCA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygibG9hZGVkVXJsIiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT00MzIxIik7CisgICAgICAg
ICAgICB0aGlyZEZldGNoKCk7CisgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7Cisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKGVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdGhpcmRGZXRjaCgpIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IHRy
aWdnZXIgYSBzdWNjZXNzZnVsIGNhY2hlIGhpdCBhbmQgaW5zdGVhZCBjcmVhdGUgYW5vdGhlciBj
YXBwZWQgY2FjaGUgZW50cnkuCisgICAgICAgIGZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwMDAv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVj
dC5waHAiLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhY2hlOiAiZm9yY2UtY2Fj
aGUiLAorICAgICAgICAgICAgfQorICAgICAgICApLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsK
KyAgICAgICAgICAgIGxvYWRlZFVybCA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygibG9hZGVkVXJsIiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iKTsKKyAg
ICAgICAgICAgIGZvdXJ0aEZldGNoKCk7CisgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9y
KSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKGVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZm91cnRoRmV0Y2goKSB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxk
IG5vdCB0cmlnZ2VyIGEgc3VjY2Vzc2Z1bCBjYWNoZSBoaXQgYnV0IGNsZWFyIGNhcHBpbmcuCisg
ICAgICAgIGZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHAiLAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhY2hlOiAiZm9yY2UtY2FjaGUiLAorICAgICAgICAgICAgfQor
ICAgICAgICApLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGxvYWRlZFVy
bCA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibG9h
ZGVkVXJsIiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jl
c291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iKTsKKyAgICAgICAgICAgIGZpZnRoRmV0Y2go
KTsKKyAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNl
LCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaWZ0
aEZldGNoKCkgeworICAgICAgICAvLyBUaGlzIHNob3VsZCB0cmlnZ2VyIGEgcmVndWxhciwgc3Vj
Y2Vzc2Z1bCBjYWNoZSBoaXQuCisgICAgICAgIGZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwMDAv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVj
dC5waHAiLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKKyAgICAg
ICAgICAgICAgICAgICAgIlgtV2ViS2l0IjogIjEyMzQiLAorICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgICAg
ICAgICBsb2FkZWRVcmwgPSByZXNwb25zZS51cmw7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5l
bnQtcmVkaXJlY3QucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocAppbmRleCA5NDdl
ZDNiOWY4NGIwOWY5OWI2MDY4YmRmZTU0MjUwMzFmMDNmYjdkLi43ZDJkMDRhZjM2OGRkN2ZjOWVi
NTRhZDdmOTdmZWQwMTQzMTIyODQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJl
Y3QucGhwCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHAKQEAgLTEsMTEgKzEsMTUg
QEAKIDw/cGhwCitpZiAoaXNzZXQoJF9TRVJWRVJbIkhUVFBfSUZfTk9ORV9NQVRDSCJdKSB8fCBp
c3NldCgkX1NFUlZFUlsiSFRUUF9JRl9NT0RJRklFRF9TSU5DRSJdKSkgeworICAgIGhlYWRlcigk
X1NFUlZFUlsiU0VSVkVSX1BST1RPQ09MIl0gLiAiIDUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3Ii
LCB0cnVlLCA1MDApOworICAgIGV4aXQ7Cit9CiBoZWFkZXIoIkFjY2Vzcy1Db250cm9sLUFsbG93
LU9yaWdpbjogaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CiBoZWFkZXIoIkFjY2Vzcy1Db250cm9s
LUFsbG93LUhlYWRlcnM6IFgtV2ViS2l0Iik7CiBpZiAoJF9TRVJWRVJbIlJFUVVFU1RfTUVUSE9E
Il0gPT0gIk9QVElPTlMiICYmIGlzc2V0KCRfU0VSVkVSWyJIVFRQX0FDQ0VTU19DT05UUk9MX1JF
UVVFU1RfTUVUSE9EIl0pICYmICRfU0VSVkVSWyJIVFRQX0FDQ0VTU19DT05UUk9MX1JFUVVFU1Rf
TUVUSE9EIl0gPT0gIkdFVCIpIHsKLSAgZXhpdDsKKyAgICBleGl0OwogfQogJGhlYWRlclN0cmlu
Z1ZhbHVlID0gJF9TRVJWRVJbIkhUVFBfWF9XRUJLSVQiXTsKLWhlYWRlcigiSFRUUC8xLjEgMzAx
IE1vdmVkIFBlcm1hbmVudGx5Iik7CitoZWFkZXIoJF9TRVJWRVJbIlNFUlZFUl9QUk9UT0NPTCJd
IC4gIiAzMDEgTW92ZWQgUGVybWFuZW50bHkiLCB0cnVlLCAzMDEpOwogaGVhZGVyKCJDYWNoZS1D
b250cm9sOiBwcml2YXRlLCBtYXgtYWdlPTMxNTM2MDAwIiwgdHJ1ZSk7CiBoZWFkZXIoJ0VUYWc6
ICJXZWJLaXRUZXN0IicsIHRydWUpOwogaGVhZGVyKCJMb2NhdGlvbjogaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3Zh
bHVlPSIgLiAkaGVhZGVyU3RyaW5nVmFsdWUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>