<?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>218778</bug_id>
          
          <creation_ts>2020-11-10 16:03:07 -0800</creation_ts>
          <short_desc>Can&apos;t login to Microsoft Teams</short_desc>
          <delta_ts>2020-11-13 16:55:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1706268</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-10 16:03:07 -0800</bug_when>
    <thetext>Users can&apos;t login to Microsoft Teams on Safari because the login flow relies on 3rd party cookies. We should call the Storage Access API for the site.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706269</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-10 16:04:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/36331568&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706281</commentid>
    <comment_count>2</comment_count>
      <attachid>413756</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-10 16:29:08 -0800</bug_when>
    <thetext>Created attachment 413756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706289</commentid>
    <comment_count>3</comment_count>
      <attachid>413756</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-11-10 16:44:46 -0800</bug_when>
    <thetext>Comment on attachment 413756
Patch

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

&gt; Source/WebCore/page/Quirks.cpp:1022
&gt; +        // Microsoft Teams login case.

Can you add a FIXME comment to remove this quirk, and open a Bugzilla to remove the Quirk once Microsoft completes their migration work?

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1268
&gt; +

Mystery whitespace change!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706300</commentid>
    <comment_count>4</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-10 17:26:35 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #3)
&gt; Comment on attachment 413756 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=413756&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Quirks.cpp:1022
&gt; &gt; +        // Microsoft Teams login case.
&gt; 
&gt; Can you add a FIXME comment to remove this quirk, and open a Bugzilla to
&gt; remove the Quirk once Microsoft completes their migration work?
&gt; 

I added one in NetworkStorageSession, but I think you&apos;re right it makes more sense here so I will move it.

&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1268
&gt; &gt; +
&gt; 
&gt; Mystery whitespace change!

I noticed a space was missing between functions so I slipped it in! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706302</commentid>
    <comment_count>5</comment_count>
      <attachid>413759</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-10 17:30:23 -0800</bug_when>
    <thetext>Created attachment 413759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706306</commentid>
    <comment_count>6</comment_count>
      <attachid>413759</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-11-10 17:59:48 -0800</bug_when>
    <thetext>Comment on attachment 413759
Patch

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

Please test manually that a microsoftonline.com iframe under microsoft.com has access to document.cookie after the user grants storage access. The JavaScript side of cookie access has special plumbing.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Can&apos;t login to Microsoft Teams

I think a more description title is &quot;Call the Storage Access API on behalf of microsoftonline.com to allow Microsoft Teams login.&quot;

&gt; Source/WebCore/ChangeLog:14
&gt; +        Create a quirk to call the Storage Access API on behalf of microsoft.

Microsoft with capital M. :)

&gt; Source/WebKit/ChangeLog:14
&gt; +        Create a quirk to call the Storage Access API on behalf of microsoft.

Ditto.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2108
&gt; +HashMap&lt;RegistrableDomain, RegistrableDomain&gt; ResourceLoadStatisticsDatabaseStore::domainsWithStorageAccess() const

Shouldn&apos;t this function filter based on domains on the quirks list?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706307</commentid>
    <comment_count>7</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-11-10 18:18:47 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #6)
&gt; Comment on attachment 413759 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=413759&amp;action=review
&gt; 
&gt; Please test manually that a microsoftonline.com iframe under microsoft.com
&gt; has access to document.cookie after the user grants storage access. The
&gt; JavaScript side of cookie access has special plumbing.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Can&apos;t login to Microsoft Teams
&gt; 
&gt; I think a more description title is &quot;Call the Storage Access API on behalf
&gt; of microsoftonline.com to allow Microsoft Teams login.&quot;

*descriptive

&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        Create a quirk to call the Storage Access API on behalf of microsoft.
&gt; 
&gt; Microsoft with capital M. :)
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; +        Create a quirk to call the Storage Access API on behalf of microsoft.
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2108
&gt; &gt; +HashMap&lt;RegistrableDomain, RegistrableDomain&gt; ResourceLoadStatisticsDatabaseStore::domainsWithStorageAccess() const
&gt; 
&gt; Shouldn&apos;t this function filter based on domains on the quirks list?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706450</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-11 07:17:08 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #6)
&gt; Comment on attachment 413759 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=413759&amp;action=review
&gt; 
&gt; Please test manually that a microsoftonline.com iframe under microsoft.com
&gt; has access to document.cookie after the user grants storage access. The
&gt; JavaScript side of cookie access has special plumbing.
&gt; 

Will do.

&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Can&apos;t login to Microsoft Teams
&gt; 
&gt; I think a more description title is &quot;Call the Storage Access API on behalf
&gt; of microsoftonline.com to allow Microsoft Teams login.&quot;
&gt; 

I thought bugzilla titles were supposed to highlight the bug, not the solution. That is why I titled it this way. Perhaps this is a special case?

&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        Create a quirk to call the Storage Access API on behalf of microsoft.
&gt; 
&gt; Microsoft with capital M. :)
&gt; 

Good catch, will change!

&gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; +        Create a quirk to call the Storage Access API on behalf of microsoft.
&gt; 
&gt; Ditto.
&gt; 

Ditto, will fix.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2108
&gt; &gt; +HashMap&lt;RegistrableDomain, RegistrableDomain&gt; ResourceLoadStatisticsDatabaseStore::domainsWithStorageAccess() const
&gt; 
&gt; Shouldn&apos;t this function filter based on domains on the quirks list?

The filtering happens in WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesFor() before the domains are sent to the web process or stored in NetworkStorageSession (line 1263-4). I did it here because that is where I saw the filtering for the existing user interaction quirks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706511</commentid>
    <comment_count>9</comment_count>
      <attachid>413759</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-11-11 10:27:41 -0800</bug_when>
    <thetext>Comment on attachment 413759
Patch

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

&gt; Source/WebCore/page/Quirks.cpp:1023
&gt; +        // FIXME: Remove this quirk once the microsoft.com login flow works (https://bugs.webkit.org/show_bug.cgi?id=218779).

We write this like so (and a suggested revision of the comment)

// FIXME(218779): Remove this quirk once microsoft.com completes their login flow redesign.

&gt; Source/WebCore/page/Quirks.cpp:1026
&gt; +            if (classNames.contains(&quot;glyph_signIn_circle&quot;) || classNames.contains(&quot;mectrl_headertext&quot;) || classNames.contains(&quot;mectrl_header&quot;)) {

This might be easier for others to understand with a helper function (or lambda), just like the &apos;isKinjaLoginAvatarElement&apos; implementation.

static bool isMicrosoftLoginElement(const Element&amp; element)
{
    if (!element.hasClass())
        return false;

    auto&amp; classNames = element.classNames();
    return classNames.contains(&quot;glyph_signIn_circle&quot;) || classNames.contains(&quot;mectrl_headertext&quot;) || classNames.contains(&quot;mectrl_header&quot;)
}

Then this line would just be:

if (domain == microsoftDomain &amp;&amp; isMicrosoftLoginElement(element)) {
    ... do stuff

&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:393
&gt; +    if (loginDomain)

if (auto login domain = loginDomain...

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1327
&gt; +        if (!NetworkStorageSession::canRequestStorageAccessForLoginPurposesWithoutPriorUserInteraction(subFrameDomain, topFrameDomain))

If the only purpose of this test is to ASSERT, I propose placing it inside &quot;#if ASSERT_ENABLED&quot; so we don&apos;t perform these functions if no assert can be generated.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1352
&gt; +        if (!NetworkStorageSession::canRequestStorageAccessForLoginPurposesWithoutPriorUserInteraction(subFrameDomain, topFrameDomain))

Ditto.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1264
&gt; +            if (loginDomain &amp;&amp; topDomain == loginDomain)

You repeat this pattern a lot. I wonder if a helper function would make things clearer:

if (WebCore::NetworkStorageSession::loginDomainMatchesFirstParty(topDomain))
   ... do stuff

And the implementation of &quot;loginDomainMatchesFirstParty&quot; would just be:

WebCore {
bool NetworkStorageSession::loginDomainMatchesFirstParty(const RegistrableDomain&amp; firstParty)
{
    auto loginDomain = WebCore::NetworkStorageSession::loginDomainForFirstParty(firstParty);
    return loginDomain &amp;&amp; firstParty == loginDomain;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706619</commentid>
    <comment_count>10</comment_count>
      <attachid>413864</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-11 14:11:53 -0800</bug_when>
    <thetext>Created attachment 413864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706623</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-11 14:13:38 -0800</bug_when>
    <thetext>Thanks Brent! I made those changes. 

John, I also tested document.cookie and found the logic you were talking about in WebCookieJar::shouldBlockCookies. I fixed that in this patch and confirmed it is working.

Lastly, as I was testing I realized I did not handle the case in which a user goes straight to login.microsoftonline.com or login.live.com without going through the Microsoft sign in page first. I am not sure how frequent this case is, but I should probably adjust the quirk to handle this case too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706651</commentid>
    <comment_count>12</comment_count>
      <attachid>413864</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-11-11 15:57:23 -0800</bug_when>
    <thetext>Comment on attachment 413864
Patch

Thank you for making the changes -- I think this looks good now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706709</commentid>
    <comment_count>13</comment_count>
      <attachid>413893</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-11 17:46:22 -0800</bug_when>
    <thetext>Created attachment 413893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706710</commentid>
    <comment_count>14</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-11 17:47:26 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #13)
&gt; Created attachment 413893 [details]
&gt; Patch

This adjusts the quirk to also call the prompt if the user takes a different login path for Microsoft Teams via login.live.com.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707380</commentid>
    <comment_count>15</comment_count>
      <attachid>413893</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-11-13 13:59:42 -0800</bug_when>
    <thetext>Comment on attachment 413893
Patch

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

r=me with comments.

&gt; Source/WebCore/dom/DocumentStorageAccess.cpp:269
&gt; +    auto topDomain = NetworkStorageSession::mapToTopDomain(RegistrableDomain::uncheckedCreateFromHost(m_document.topDocument().securityOrigin().host()));

Why not use the RegistrableDomain(const URL&amp; url) constructor? We should use the unchecked* calls as little as possible.

&gt; Source/WebCore/page/Quirks.cpp:960
&gt; +    static NeverDestroyed&lt;RegistrableDomain&gt; microsoftLiveDomain = RegistrableDomain::uncheckedCreateFromRegistrableDomainString(&quot;live.com&quot;_s);

I would call these microsoftDotCom and liveDotCom since both are Microsoft domains and your function is called isMicrosoftDomain().

&gt; Source/WebCore/page/Quirks.h:30
&gt; +#include &lt;wtf/Optional.h&gt;

There doesn&apos;t seem to be any new usage of these two in this header file. Could these includes be moved to the implementation file?

&gt; Source/WebKit/Shared/WebProcessDataStoreParameters.h:80
&gt; +    encoder &lt;&lt; domainsWithStorageAccessQuirk;

It&apos;s not just that these have a quirk, right? They also have cross-page access. See below for comments on naming. I think it&apos;s kind of leaking in abstraction here. These lower layers don&apos;t really have to know naming-wise that this is a quirk. Here you can probably name things for what they are. The code higher up that actually reasons about quirks, accessing the hardcoded domains, can call things quirky. This is mostly infrastructure to support the quirk in my view.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:203
&gt; +    void setDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt;&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);

See below on naming.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:51
&gt; +    SetDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt; domains) -&gt; () Async

Ditto.

&gt; Source/WebKit/UIProcess/WebProcessPool.h:464
&gt; +    void setDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt;&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);

It looks strange adding this. One wonders why this wasn&apos;t needed before. Isn&apos;t it the case here that you need this because these domains have *persistent* or at least *cross-page* storage access? That should go into the function name such as setDomainsWithCrossPageStorageAccess(). I would also like some syntactic sugar with &quot;using&quot; here so that you can make it clear in the header which of the domains is the first party and which is the third party.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.h:66
&gt; +    void setDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt;&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;) final;

Same thing here with function naming. I believe this is needed for the extended scope of the access because the same WebProcess will be used for all matching webpages.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.h:87
&gt; +    HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt; m_domainsWithStorageAccess;

Ditto with naming.

&gt; Source/WebKit/WebProcess/WebProcess.cpp:2011
&gt; +void WebProcess::setDomainsWithStorageAccess(HashMap&lt;RegistrableDomain, RegistrableDomain&gt;&amp;&amp; domains, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)

Ditto.

&gt; Source/WebKit/WebProcess/WebProcess.h:499
&gt; +    void setDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt;&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);

Ditto.

&gt; Source/WebKit/WebProcess/WebProcess.messages.in:166
&gt; +    SetDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt; domains) -&gt; () Async

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707403</commentid>
    <comment_count>16</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-13 15:06:42 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #15)
&gt; Comment on attachment 413893 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=413893&amp;action=review
&gt; 
&gt; r=me with comments.
&gt; 
Thanks!

&gt; &gt; Source/WebCore/dom/DocumentStorageAccess.cpp:269
&gt; &gt; +    auto topDomain = NetworkStorageSession::mapToTopDomain(RegistrableDomain::uncheckedCreateFromHost(m_document.topDocument().securityOrigin().host()));
&gt; 
&gt; Why not use the RegistrableDomain(const URL&amp; url) constructor? We should use
&gt; the unchecked* calls as little as possible.
&gt; 

I noticed it was done this way in the non-quirk call to requestStorageAccess(), and assumed it was intentional. I don&apos;t see a reason to not use the url constructor, though, so I will change it.

&gt; &gt; Source/WebCore/page/Quirks.cpp:960
&gt; &gt; +    static NeverDestroyed&lt;RegistrableDomain&gt; microsoftLiveDomain = RegistrableDomain::uncheckedCreateFromRegistrableDomainString(&quot;live.com&quot;_s);
&gt; 
&gt; I would call these microsoftDotCom and liveDotCom since both are Microsoft
&gt; domains and your function is called isMicrosoftDomain().
&gt; 

Will change.

&gt; &gt; Source/WebCore/page/Quirks.h:30
&gt; &gt; +#include &lt;wtf/Optional.h&gt;
&gt; 
&gt; There doesn&apos;t seem to be any new usage of these two in this header file.
&gt; Could these includes be moved to the implementation file?
&gt; 

Yep, these were accidentally left in from previous drafts. They can be removed completely.

&gt; &gt; Source/WebKit/Shared/WebProcessDataStoreParameters.h:80
&gt; &gt; +    encoder &lt;&lt; domainsWithStorageAccessQuirk;
&gt; 
&gt; It&apos;s not just that these have a quirk, right? They also have cross-page
&gt; access. See below for comments on naming. I think it&apos;s kind of leaking in
&gt; abstraction here. These lower layers don&apos;t really have to know naming-wise
&gt; that this is a quirk. Here you can probably name things for what they are.
&gt; The code higher up that actually reasons about quirks, accessing the
&gt; hardcoded domains, can call things quirky. This is mostly infrastructure to
&gt; support the quirk in my view.

Good point, I will update the names based on your comments.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:203
&gt; &gt; +    void setDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt;&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; See below on naming.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:51
&gt; &gt; +    SetDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt; domains) -&gt; () Async
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.h:464
&gt; &gt; +    void setDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt;&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; It looks strange adding this. One wonders why this wasn&apos;t needed before.
&gt; Isn&apos;t it the case here that you need this because these domains have
&gt; *persistent* or at least *cross-page* storage access? That should go into
&gt; the function name such as setDomainsWithCrossPageStorageAccess(). I would
&gt; also like some syntactic sugar with &quot;using&quot; here so that you can make it
&gt; clear in the header which of the domains is the first party and which is the
&gt; third party.
&gt; 

Very good point, this can get confusing. I&apos;ll change the naming and utilize some more descriptive type aliases.

&gt; &gt; Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.h:66
&gt; &gt; +    void setDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt;&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;) final;
&gt; 
&gt; Same thing here with function naming. I believe this is needed for the
&gt; extended scope of the access because the same WebProcess will be used for
&gt; all matching webpages.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.h:87
&gt; &gt; +    HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt; m_domainsWithStorageAccess;
&gt; 
&gt; Ditto with naming.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebProcess.cpp:2011
&gt; &gt; +void WebProcess::setDomainsWithStorageAccess(HashMap&lt;RegistrableDomain, RegistrableDomain&gt;&amp;&amp; domains, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebProcess.h:499
&gt; &gt; +    void setDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt;&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebProcess.messages.in:166
&gt; &gt; +    SetDomainsWithStorageAccess(HashMap&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain&gt; domains) -&gt; () Async
&gt; 
&gt; Ditto.

I&apos;ll fix these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707409</commentid>
    <comment_count>17</comment_count>
      <attachid>414099</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-11-13 15:44:48 -0800</bug_when>
    <thetext>Created attachment 414099
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707439</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-13 16:55:28 -0800</bug_when>
    <thetext>Committed r269807: &lt;https://trac.webkit.org/changeset/269807&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414099.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413756</attachid>
            <date>2020-11-10 16:29:08 -0800</date>
            <delta_ts>2020-11-10 18:07:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218778-20201110162907.patch</filename>
            <type>text/plain</type>
            <size>47291</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc4ZGNiMjQxYmZiNzVh
MWZjNGI5MWEwMDM1NWQ0MGI3YzJmNGE2OS4uNmUxOTVlOGJhMTQ5NThkNTFjZDU2MzE4NzMyNDA1
YzA1YWZmMDQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTExLTEwICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbid0IGxv
Z2luIHRvIE1pY3Jvc29mdCBUZWFtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4Nzc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjMzMTU2OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlz
IGEgdGVtcG9yYXJ5IHF1aXJrIHRvIGFzc2lzdCBhIGhpZ2gtdHJhZmZpYyB3ZWJzaXRlIHdoaWxl
IHRoZXkKKyAgICAgICAgY29tcGxldGUgdGhlIGxhcmdlIHRhc2sgb2YgbWlncmF0aW5nIGF3YXkg
ZnJvbSBsb2dpbiBmbG93cyB0aGF0CisgICAgICAgIHJlcXVpcmUgdGhpcmQgcGFydHkgY29va2ll
cy4gVGhpcyBxdWlyayB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUgc2l0ZQorICAgICAgICBpcyB1
cGRhdGVkLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJrIHRvIGNhbGwgdGhlIFN0b3JhZ2UgQWNj
ZXNzIEFQSSBvbiBiZWhhbGYgb2YgbWljcm9zb2Z0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
c2l0ZS1zcGVjaWZpYyBxdWlyay4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudCk6CisgICAgICAgIFBhc3Mg
YWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGFibGUgdG8gZGlzcGF0Y2ggYSBzeW50aGV0aWMg
Y2xpY2sKKyAgICAgICAgaWYgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZC4KKworICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aGFzU3RvcmFnZUFjY2Vzc0ZvclF1aXJrIGNv
bnN0KToKKyAgICAgICAgU3RvcmUgZG9tYWlucyBpbiB0aGUgd2ViIHByb2Nlc3MgdG8gYXZvaWQg
YXN5bmMgY2FsbHMgdG8gdGhlIG5ldHdvcmsKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAq
IHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6dHJpZ2dlck9wdGlv
bmFsU3RvcmFnZUFjY2Vzc1F1aXJrIGNvbnN0KToKKyAgICAgICAgVGhpcyBpcyB0aGUgcXVpcmsu
CisKKyAgICAgICAgKiBwYWdlL1F1aXJrcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFF1aXJrUGFpclN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdl
QWNjZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6cmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VBY2Nlc3NRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVy
cG9zZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbkZvckZpcnN0UGFydHkpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgIEluIG9y
ZGVyIGZvciB0aGUgdXNlciB0byBzdGF5IGxvZ2dlZCBpbiBiZXR3ZWVuIHNlc3Npb25zLCB3ZSBz
aG91bGQKKyAgICAgICAgdXBkYXRlIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBncmFudCBzdG9y
YWdlIGFjY2VzcyBiYXNlZCBvbiB2YWx1ZXMKKyAgICAgICAgc3RvcmVkIGluIHRoZSBJVFAgZGF0
YWJhc2UgZm9yIHF1aXJrIGRvbWFpbnMuCisKIDIwMjAtMTEtMDIgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNjkyMjcpIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZmVy
cmVyLXRvcGxldmVsLXNjcmlwdC1mZXRjaC5odHRwcy5odG1sIGlzIGEgZmxha3kgY3Jhc2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggOWYyZGQ0Nzg0NTdkZDUyZDgxMGQzY2U0ZGQxYjhkNGVlMDgyMzI5MC4uYzk1NDRj
NmNiOGIzNzA2OGIyYzE2MTM1ZGNjMzY0MDY2MmI3YTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
NSBAQAorMjAyMC0xMS0xMCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNv
bT4KKworICAgICAgICBDYW4ndCBsb2dpbiB0byBNaWNyb3NvZnQgVGVhbXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc3OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzYzMzE1Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHRlbXBvcmFyeSBxdWlyayB0byBhc3Npc3QgYSBoaWdo
LXRyYWZmaWMgd2Vic2l0ZSB3aGlsZSB0aGV5CisgICAgICAgIGNvbXBsZXRlIHRoZSBsYXJnZSB0
YXNrIG9mIG1pZ3JhdGluZyBhd2F5IGZyb20gbG9naW4gZmxvd3MgdGhhdAorICAgICAgICByZXF1
aXJlIHRoaXJkIHBhcnR5IGNvb2tpZXMuIFRoaXMgcXVpcmsgd2lsbCBiZSByZW1vdmVkIHdoZW4g
dGhlIHNpdGUKKyAgICAgICAgaXMgdXBkYXRlZC4KKworICAgICAgICBDcmVhdGUgYSBxdWlyayB0
byBjYWxsIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkgb24gYmVoYWxmIG9mIG1pY3Jvc29mdC4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKToKKyAgICAgICAgUmVsYXggdGhlIHJlcXVpcmVtZW50IGZvciB1c2VyIGludGVyYWN0
aW9uIGZvciBhIHNwZWNpZmljIHRoaXJkIHBhcnR5CisgICAgICAgIG5lZWRpbmcgY29va2llcyBm
b3IgYXV0aGVudGljYXRpb24gcHVycG9zZXMuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyk6CisgICAgICAg
IFJlbGF4IHRoZSByZXF1aXJlbWVudCBmb3IgdXNlciBpbnRlcmFjdGlvbiBmb3IgYSBzcGVjaWZp
YyB0aGlyZCBwYXJ0eQorICAgICAgICBuZWVkaW5nIGNvb2tpZXMgZm9yIGF1dGhlbnRpY2F0aW9u
IHB1cnBvc2VzLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlQ29va2llQmxv
Y2tpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnVwZGF0ZUNvb2tp
ZUJsb2NraW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwpOgorICAg
ICAgICBSZWxheCB1c2VyIGludGVyYWN0aW9uIGZvciByZWFzb25zIGFib3ZlLgorCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZh
bGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAg
ICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldERv
bWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERv
bWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVy
OjpoYXNTdG9yYWdlQWNjZXNzRm9yUXVpcmsgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKyAgICAgICAgRm9yd2FyZCBkb21haW5zIHdpdGggdGhlIHN0b3JhZ2Ug
YWNjZXNzIHF1aXJrIHRvIHRoZSB3ZWIgcHJvY2VzcyB0bworICAgICAgICBhdm9pZCBhbiBhc3lu
YyBjYWxsIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisKIDIwMjAtMTEtMDIgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIGd1YXJkIFVJU2NyaWJibGVJbnRlcmFj
dGlvbiBjbGFzcyBwcm9wZXJ0eSBvYnNlcnZpbmcgYmVoaW5kIGEgTE9BIGNoZWNrCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggOGQ2NzI3NTkyYTE1OTQ2MjA5YWFkOGU0ZjYzNjgwOGFkZDZkZDFl
Yi4uMjZiNDY5MTE3YTkwMWE2N2FkMzIwYzg5YTRmYzQyMDBjZDE3M2ViNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3Vz
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCwgY29uc3QKICAg
ICBpZiAoZGlzcGF0Y2hQb2ludGVyRXZlbnRJZk5lZWRlZCgqdGhpcywgbW91c2VFdmVudC5nZXQo
KSwgcGxhdGZvcm1FdmVudCwgZGlkTm90U3dhbGxvd0V2ZW50KSA9PSBTaG91bGRJZ25vcmVNb3Vz
ZUV2ZW50OjpZZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChRdWlya3M6OlN0
b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50ID09IGRvY3VtZW50KCkucXVpcmtz
KCkudHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKCp0aGlzLCBldmVudFR5cGUpKQor
ICAgIGlmIChRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50ID09
IGRvY3VtZW50KCkucXVpcmtzKCkudHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKCp0
aGlzLCBwbGF0Zm9ybUV2ZW50LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRhcmdldCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVCghbW91c2VFdmVudC0+dGFyZ2V0KCkg
fHwgbW91c2VFdmVudC0+dGFyZ2V0KCkgIT0gcmVsYXRlZFRhcmdldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IDNlOWMwZjg0ZjI1Y2ZkMWFi
MDA5YmU3YzJhY2UyMDBlNGE1Nzk3ZWMuLmI3NmQ4MjA1ZjlmYmY0N2E1NWIxN2I0MWE4ZjJlYjJl
NDQ0Y2VjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5oCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzU3RhdGlz
dGljcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFJl
Z2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvclF1aXJrKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVp
cmtzLmNwcAppbmRleCAzYzZmMzU3NmQ4MTI4MzAyYTA3NjNhNTliNTg4ZjA1MTlkNzU4ODZiLi4z
ZWMxOGY1NmQ0ZjAyMTYwNTRiY2QzNzA2NTlkZDZhNDMyOTZlOTI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWly
a3MuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgorI2luY2x1
ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZE9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNW
R1BhdGhFbGVtZW50LmgiCkBAIC05NDUsNyArOTQ2LDcgQEAgc3RhdGljIGJvb2wgaXNLaW5qYUxv
Z2luQXZhdGFyRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogfQogI2VuZGlmCiAKLVF1
aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VB
Y2Nlc3NRdWlyayhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUpIGNvbnN0CitRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2Vy
T3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IGludCBkZXRhaWwsIEVsZW1lbnQqIHJlbGF0ZWRUYXJnZXQpIGNvbnN0CiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIW5lZWRzUXVpcmtzKCkpCkBAIC05
NzIsNyArOTczLDkgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dl
ck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKGNvbnN0IEVsZW0KICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVnaXN0cmFibGVEb21haW4+IGtpbmphRG9tYWluIHsga2luamFVUkwgfTsKIAog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWdpc3RyYWJsZURvbWFpbj4geW91VHViZURvbWFp
biA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21h
aW5TdHJpbmcoInlvdXR1YmUuY29tIl9zKTsKLSAgICAKKworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZWdpc3RyYWJsZURvbWFpbj4gbWljcm9zb2Z0RG9tYWluID0gUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0
LmNvbSJfcyk7CisKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBsb2dpblBvcHVw
V2luZG93RmVhdHVyZVN0cmluZyA9ICJ0b29sYmFyPW5vLGxvY2F0aW9uPXllcyxkaXJlY3Rvcmll
cz1ubyxzdGF0dXM9bm8sbWVudWJhcj1ubyxzY3JvbGxiYXJzPXllcyxyZXNpemFibGU9eWVzLGNv
cHloaXN0b3J5PW5vLHdpZHRoPTU5OSxoZWlnaHQ9NjAwLHRvcD00MjAsbGVmdD05ODAuNSJfczsK
IAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBraW5qYUxvZ2luVXNlclNj
cmlwdCB7ICJmdW5jdGlvbiB0cmlnZ2VyTG9naW5Gb3JtKCkgeyBsZXQgZWxlbWVudHMgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdqc19oZWFkZXItdXNlcmJ1dHRvbicpOyBpZiAo
ZWxlbWVudHMgJiYgZWxlbWVudHNbMF0pIHsgZWxlbWVudHNbMF0uY2xpY2soKTsgY2xlYXJJbnRl
cnZhbChpbnRlcnZhbCk7IH0gfSBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0cmlnZ2VyTG9n
aW5Gb3JtLCAyMDApOyIsIFVSTChhYm91dEJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBW
ZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90
aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgfTsKQEAgLTEwMTUsMTAgKzEwMTgsMzYgQEAg
UXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFn
ZUFjY2Vzc1F1aXJrKGNvbnN0IEVsZW0KICAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQorCisgICAgICAgIC8vIE1pY3Jvc29mdCBUZWFtcyBsb2dpbiBjYXNlLgorICAgICAg
ICBpZiAoZWxlbWVudC5oYXNDbGFzcygpICYmIGRvbWFpbiA9PSBtaWNyb3NvZnREb21haW4pIHsK
KyAgICAgICAgICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFtZXMoKTsKKyAg
ICAgICAgICAgIGlmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJnbHlwaF9zaWduSW5fY2lyY2xlIikg
fHwgY2xhc3NOYW1lcy5jb250YWlucygibWVjdHJsX2hlYWRlcnRleHQiKSB8fCBjbGFzc05hbWVz
LmNvbnRhaW5zKCJtZWN0cmxfaGVhZGVyIikpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHRvcERv
bWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChtX2RvY3Vt
ZW50LT50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIGxvZ2luRG9tYWluID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFp
bkZvckZpcnN0UGFydHkodG9wRG9tYWluKTsKKyAgICAgICAgICAgICAgICBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiBkb21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzOworICAgICAgICAgICAg
ICAgIGlmIChsb2dpbkRvbWFpbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIVJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNTdG9yYWdlQWNjZXNzRm9yUXVpcmsoKmxvZ2luRG9t
YWluLCB0b3BEb21haW4pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTm9uRG9jdW1lbnRRdWlyaygqbV9kb2N1
bWVudCwgV1RGTW92ZSgqbG9naW5Eb21haW4pLCBbdG9wRG9tYWluID0gV1RGTW92ZSh0b3BEb21h
aW4pLCBsb2dpbkRvbWFpbiwgJmVsZW1lbnQsIHBsYXRmb3JtRXZlbnQsIGV2ZW50VHlwZSwgZGV0
YWlsLCByZWxhdGVkVGFyZ2V0XShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBzdG9yYWdlQWNjZXNz
R3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0b3Jh
Z2VBY2Nlc3NHcmFudGVkID09IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgp
LnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyh7eyB0b3BEb21haW4sICpsb2dpbkRvbWFpbiB9
fSwgWyZlbGVtZW50LCBwbGF0Zm9ybUV2ZW50LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRh
cmdldF0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5kaXNw
YXRjaE1vdXNlRXZlbnQocGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJlbGF0ZWRU
YXJnZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3Vs
ZENhbmNlbEV2ZW50OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3Vs
ZE5vdENhbmNlbEV2ZW50OworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CisgICAgVU5VU0VEX1BBUkFNKHBsYXRmb3JtRXZl
bnQpOwogICAgIFVOVVNFRF9QQVJBTShldmVudFR5cGUpOworICAgIFVOVVNFRF9QQVJBTShkZXRh
aWwpOworICAgIFVOVVNFRF9QQVJBTShyZWxhdGVkVGFyZ2V0KTsKICNlbmRpZgogICAgIHJldHVy
biBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUXVpcmtzLmgKaW5kZXggMmY1NDBlZmJiYTI2NmUwMjM4MDVlMjk5OTM1Yzg5YjFlNzlh
ZWJkZS4uMTJhMmY4MjIxMzI4YmQ5NWEzMDdmYzU0YTUwMTk4OTJkMjJjMzg1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1F1aXJrcy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV2
ZW50LmgiCisjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKKyNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zNyw2ICszOSw3IEBAIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgSFRNTEVsZW1lbnQ7
CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgTGF5b3V0VW5pdDsKK2NsYXNzIFBsYXRm
b3JtTW91c2VFdmVudDsKIAogY2xhc3MgUXVpcmtzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShRdWlya3MpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTExMiw3ICsxMTUsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzaG91bGRBdm9pZFBhc3RpbmdJbWFnZXNBc1dlYkNvbnRlbnQoKSBj
b25zdDsKIAogICAgIGVudW0gU3RvcmFnZUFjY2Vzc1Jlc3VsdCA6IGJvb2wgeyBTaG91bGROb3RD
YW5jZWxFdmVudCwgU2hvdWxkQ2FuY2VsRXZlbnQgfTsKLSAgICBTdG9yYWdlQWNjZXNzUmVzdWx0
IHRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhjb25zdCBFbGVtZW50JiwgY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKKyAgICBTdG9yYWdlQWNjZXNzUmVzdWx0IHRy
aWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBpbnQsIEVsZW1lbnQqKSBj
b25zdDsKIAogICAgIGJvb2wgbmVlZHNWUDlGdWxsUmFuZ2VGbGFnUXVpcmsoKSBjb25zdDsKICAg
ICBib29sIG5lZWRzSERSUGl4ZWxEZXB0aFF1aXJrKCkgY29uc3Q7CkBAIC0xNTQsNCArMTU3LDQg
QEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fbmVlZHNCbGFja0Z1bGxz
Y3JlZW5CYWNrZ3JvdW5kUXVpcms7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5jcHAKaW5kZXggODQ2MThjZTQxMTkxMjFiN2RhOTU1ODcwOGEyZjk0YjFlNGVi
ZTQ5YS4uNjNiZjA5NDRhMzJkZWMyZDY0NmZjZjljNGU4YTA4OWRmYmFjYjk4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmNwcApAQCAtMjA5LDYgKzIwOSwxOCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoY29uc3QgVmVjdAog
ICAgIG1fcmVnaXN0cmFibGVEb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eS5h
ZGQoZG9tYWlucy5iZWdpbigpLCBkb21haW5zLmVuZCgpKTsKIH0KIAordm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKGNvbnN0IEhhc2hN
YXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKK3sKKyAg
ICBtX3F1aXJrUGFpcnNHcmFudGVkU3RvcmFnZUFjY2Vzcy5jbGVhcigpOworICAgIGZvciAoYXV0
byYgdG9wRG9tYWluIDogZG9tYWlucy5rZXlzKCkpCisgICAgICAgIGdyYW50UXVpcmtQYWlyU3Rv
cmFnZUFjY2Vzcyh0b3BEb21haW4sIGRvbWFpbnMuZ2V0KHRvcERvbWFpbikpOworfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRRdWlya1BhaXJTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVzb3VyY2VEb21haW4pCit7CisgICAgbV9xdWlya1BhaXJzR3JhbnRlZFN0b3JhZ2VB
Y2Nlc3MuYWRkKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKTsKK30KKwogYm9vbCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lSUQpIHsKQEAgLTIyNyw2ICsyMzksMTAg
QEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlRG8KICAgICAgICAgICAgIGlmIChpdCAhPSBwYWdlc0dy
YW50ZWRJdGVyYXRvci0+dmFsdWUuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlc291cmNlRG9tYWlu
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CisKKyAgICAgICAgYXV0
byBpdCA9IG1fcXVpcmtQYWlyc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQoZmlyc3RQYXJ0eURv
bWFpbik7CisgICAgICAgIGlmIChpdCAhPSBtX3F1aXJrUGFpcnNHcmFudGVkU3RvcmFnZUFjY2Vz
cy5lbmQoKSAmJiBpdC0+dmFsdWUgPT0gcmVzb3VyY2VEb21haW4pCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDQsNiArMjYwLDEzIEBA
IFZlY3RvcjxTdHJpbmc+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXMoKSBjb25zdAogICAgIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKKyAgICBhdXRvIGxv
Z2luRG9tYWluID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbkZvckZpcnN0UGFy
dHkoZmlyc3RQYXJ0eURvbWFpbik7CisKKyAgICBpZiAobG9naW5Eb21haW4gJiYgbG9naW5Eb21h
aW4gPT0gcmVzb3VyY2VEb21haW4pIHsKKyAgICAgICAgZ3JhbnRRdWlya1BhaXJTdG9yYWdlQWNj
ZXNzKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIGlmICghZnJhbWVJRCkgewogICAgICAgICBpZiAoZmlyc3RQYXJ0eURvbWFp
bi5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTcsNiArMzIwLDcgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoKQogewogICAg
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5jbGVhcigpOwogICAgIG1fZnJhbWVzR3JhbnRl
ZFN0b3JhZ2VBY2Nlc3MuY2xlYXIoKTsKKyAgICBtX3F1aXJrUGFpcnNHcmFudGVkU3RvcmFnZUFj
Y2Vzcy5jbGVhcigpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbmRzKQpAQCAtMzUzLDQg
KzM3NywzMyBAQCBPcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVu
dFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEbwogfQogI2VuZGlmIC8vIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKK0hhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJl
Z2lzdHJhYmxlRG9tYWluPiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlQWNjZXNzUXVp
cmtzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWdpc3RyYWJsZURv
bWFpbiwgUmVnaXN0cmFibGVEb21haW4+PiBtYXAgPSBbXSB7CisgICAgICAgIEhhc2hNYXA8UmVn
aXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiBtYXA7CisgICAgICAgIAorICAgICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgcXVpcmsgb25jZSB0aGUgbWljcm9zb2Z0LmNvbSBsb2dp
biBmbG93IHdvcmtzIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
Nzc5KS4KKyAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJtaWNyb3NvZnQuY29tIiksCisgICAgICAgICAg
ICBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWlu
U3RyaW5nKCJtaWNyb3NvZnRvbmxpbmUuY29tIl9zKSk7CisgICAgICAgIHJldHVybiBtYXA7Cisg
ICAgfSgpOworICAgIHJldHVybiBtYXAuZ2V0KCk7Cit9CisKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJp
b3JVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4pCit7CisgICAgYXV0byBs
b2dpbkRvbWFpbiA9IGxvZ2luRG9tYWluRm9yRmlyc3RQYXJ0eSh0b3BGcmFtZURvbWFpbik7Cisg
ICAgaWYgKGxvZ2luRG9tYWluKQorICAgICAgICByZXR1cm4gbG9naW5Eb21haW4udmFsdWUoKSA9
PSBzdWJGcmFtZURvbWFpbjsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPFJlZ2lz
dHJhYmxlRG9tYWluPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluRm9yRmlyc3RQ
YXJ0eShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbikKK3sKKyAgICBh
dXRvIGl0ID0gc3RvcmFnZUFjY2Vzc1F1aXJrcygpLmZpbmQoZmlyc3RQYXJ0eURvbWFpbik7Cisg
ICAgaWYgKGl0ICE9IHN0b3JhZ2VBY2Nlc3NRdWlya3MoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJu
IGl0LT52YWx1ZTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aAppbmRleCA1N2ViYTBmYTNiYmM5ZGRiYjQwNjgxMDMxYjMzNWNlMWFiOGMxMDAyLi4xZDE2ZTk3
ZjYzMzczNDEyZjFmZGJlMTIzZjgzYzgzZDlmOGJjY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTE5
OCw2ICsxOTgsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxl
bnREb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWlu
c1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
bkFzRmlyc3RQYXJ0eShjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyayhjb25zdCBI
YXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdyYW50UXVpcmtQYWlyU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
c291cmNlRG9tYWluKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVu
dFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiwgUGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3RvcjxTdHJpbmc+IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7CkBAIC0y
MTgsNiArMjIwLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0QXBw
Qm91bmREb21haW5zKCk7CiAjZW5kaWYKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNo
TWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mIHN0b3JhZ2VBY2Nlc3NR
dWlya3MoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjYW5SZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxS
ZWdpc3RyYWJsZURvbWFpbj4gbG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJik7CisKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBJ
bmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9u
bHkgfTsKQEAgLTI3MCw2ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQ
YXJ0eTsKICAgICBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBIYXNoTWFwPEZyYW1lSWRlbnRpZmll
ciwgUmVnaXN0cmFibGVEb21haW4+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwogICAg
IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lz
dHJhYmxlRG9tYWluPj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiBtX3F1aXJrUGFpcnNHcmFudGVk
U3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2NhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2FnZUNhcEZv
ckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2FnZUNhcEZv
ckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNGU3YzYwOTllZDAyZWNjZTJk
ZDA2YTFkZGJmMzcxZjVhMDRjYmQ5MC4uM2M3ODc0ZWUyNzI0YzkzZDg2OTE3NGNkMTQxY2RmODNh
MzQxZmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwCkBAIC0xMzI0LDcgKzEzMjQsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4m
JiBzdQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChzdWJG
cmFtZVN0YXR1cy5maXJzdCA9PSBBZGRlZFJlY29yZDo6Tm8pOwotICAgICAgICBBU1NFUlQoaGFz
SGFkVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6
TG9uZykpOworICAgICAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0
b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1
YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbikpCisgICAgICAgICAgICBBU1NFUlQoaGFzSGFk
VXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9u
ZykpOwogICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KHN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWluc1F1ZXJ5LCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPih7IHRv
cEZyYW1lRG9tYWluIH0pLCAqc3ViRnJhbWVTdGF0dXMuc2Vjb25kKTsKICAgICB9CiAKQEAgLTEz
NDgsNyArMTM0OSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdHVzLmZpcnN0ID09IEFk
ZGVkUmVjb3JkOjpObyk7Ci0gICAgICAgIEFTU0VSVChoYXNIYWRVc2VySW50ZXJhY3Rpb24oc3Vi
RnJhbWVEb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSk7CisgICAgICAgIGlmICgh
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVy
cG9zZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1l
RG9tYWluKSkKKyAgICAgICAgICAgIEFTU0VSVChoYXNIYWRVc2VySW50ZXJhY3Rpb24oc3ViRnJh
bWVEb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSk7CiAgICAgICAgIEFTU0VSVCho
YXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KCpzdWJGcmFtZVN0YXR1cy5z
ZWNvbmQsIHRvcEZyYW1lRG9tYWluKSA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Olll
cyk7CiAjZW5kaWYKICAgICAgICAgc2V0VXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0
cnVlLCBXYWxsVGltZTo6bm93KCkpOwpAQCAtMjAwMyw3ICsyMDA1LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXAKICAgICByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CiAKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVD
b29raWVzRm9yID0gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCk7Ci0gICAg
UmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyByZWdp
c3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgeyB9LCB7IH0gfTsKKyAg
ICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJl
Z2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0sIHsgfSwgeyB9
IH07CiAgICAgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKGRvbWFpbnNUb0Jsb2NrLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCkBAIC0yMDM2LDcgKzIwMzgsNyBAQCBDb29r
aWVBY2Nlc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vz
cyhjb25zdCBTdWJSZXNvdXJjZQogICAgIGlmICghYXJlQWxsVGhpcmRQYXJ0eUNvb2tpZXNCbG9j
a2VkVW5kZXIodG9wRnJhbWVEb21haW4pICYmICFpc1ByZXZhbGVudCkKICAgICAgICAgcmV0dXJu
IENvb2tpZUFjY2Vzczo6QmFzZWRPbkNvb2tpZVBvbGljeTsKIAotICAgIGlmICghaGFkVXNlcklu
dGVyYWN0aW9uKQorICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24oc3Vi
cmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluKSAmJiAhaGFkVXNlckludGVyYWN0aW9uKQog
ICAgICAgICByZXR1cm4gQ29va2llQWNjZXNzOjpDYW5ub3RSZXF1ZXN0OwogCiAgICAgcmV0dXJu
IENvb2tpZUFjY2Vzczo6T25seUlmR3JhbnRlZDsKQEAgLTIxMDMsNiArMjEwNSwyMiBAQCBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojpkb21haW5zV2l0aFVzZXJJbgogICAgIHJldHVybiByZXN1bHRzOwogfQogCitIYXNoTWFwPFJl
Z2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcygpIGNvbnN0Cit7CisgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gcmVzdWx0czsKKyAgICBT
UUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1Qgc3ViRnJhbWVEb21h
aW4sIHJlZ2lzdHJhYmxlRG9tYWluIEZST00gKFNFTEVDVCBvLnJlZ2lzdHJhYmxlRG9tYWluIGFz
IHN1YkZyYW1lRG9tYWluLCBzLnRvcExldmVsRG9tYWluSUQgYXMgdG9wTGV2ZWxEb21haW5JRCBG
Uk9NIE9ic2VydmVkRG9tYWlucyBhcyBvIElOTkVSIEpPSU4gU3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVEb21haW5zIGFzIHMgV0hFUkUgby5kb21haW5JRCA9IHMuZG9tYWluSUQpIGFzIHogSU5O
RVIgSk9JTiBPYnNlcnZlZERvbWFpbnMgT04gZG9tYWluSUQgPSB6LnRvcExldmVsRG9tYWluSUQ7
Il9zKTsKKworICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdHM7CisKKyAgICB3aGlsZSAoc3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJ
VEVfUk9XKQorICAgICAgICByZXN1bHRzLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0
KDEpKSwgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURv
bWFpblN0cmluZyhzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOworCisgICAgcmV0dXJuIHJl
c3VsdHM7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVw
ZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTIxMTAsMTMg
KzIxMjgsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBk
YXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXIKICAgICBhdXRvIGRvbWFpbnNUb0Js
b2NrQW5kRGVsZXRlQ29va2llc0ZvciA9IHRoaXMtPmRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29v
a2llc0ZvcigpOwogICAgIGF1dG8gZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciA9IHRo
aXMtPmRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoKTsKICAgICBhdXRvIGRvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5ID0gdGhpcy0+ZG9tYWluc1dpdGhVc2VySW50
ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoKTsKKyAgICBhdXRvIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vz
cyA9IHRoaXMtPmRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcygpOwogCi0gICAgaWYgKGRvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2tCdXRL
ZWVwQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0Zp
cnN0UGFydHkuaXNFbXB0eSgpKSB7CisgICAgaWYgKGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29v
a2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc0Vt
cHR5KCkgJiYgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkuaXNFbXB0eSgp
ICYmIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcy5pc0VtcHR5KCkpIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2NrIHsgZG9tYWluc1RvQmxvY2tB
bmREZWxldGVDb29raWVzRm9yLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLCBkb21h
aW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSB9OworICAgIFJlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2NrIHsgZG9tYWluc1RvQmxvY2tBbmRE
ZWxldGVDb29raWVzRm9yLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLCBkb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSwgZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNz
IH07CiAKICAgICBpZiAoZGVidWdMb2dnaW5nRW5hYmxlZCgpICYmICghZG9tYWluc1RvQmxvY2tB
bmREZWxldGVDb29raWVzRm9yLmlzRW1wdHkoKSB8fCAhZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29v
a2llc0Zvci5pc0VtcHR5KCkpKQogICAgICAgICBkZWJ1Z0xvZ0RvbWFpbnNJbkJhdGNoZXMoIkFw
cGx5aW5nIGNyb3NzLXNpdGUgdHJhY2tpbmcgcmVzdHJpY3Rpb25zIiwgZG9tYWluc1RvQmxvY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aAppbmRleCBkNTU1MjM3YmRkMTJjZGNkYmQxM2NjMTFhMGVmNGQ2ZDc5MTJjMjA4Li5hMGNiNzY0
YmNiYmZlZWYzZjFmZjE0YTc0NjlhMGVlMmI4ZjA5ZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMTU5LDYgKzE1OSw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0Fu
ZERlbGV0ZUNvb2tpZXNGb3IoKSBjb25zdDsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoKSBjb25zdDsKICAgICBWZWN0b3I8UmVn
aXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KCkg
Y29uc3Q7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcygpIGNvbnN0OwogCiAg
ICAgc3RydWN0IERvbWFpbkRhdGEgewogICAgICAgICB1bnNpZ25lZCBkb21haW5JRDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXgg
ZTQ0NTYwMzVlMTgyYWFlYjRhZGUyYjg2ZGIxYTY5YWIyODQxNDhiYy4uODIzMWFlNGI3NTg3ZThl
Zjg4YTk1NTM1MzI1YmZmYmQwYWYyZDhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZQogICAgIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoW2NhbGxiYWNrQWdn
cmVnYXRvcl0geyB9KTsKIAogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERl
bGV0ZUNvb2tpZXNGb3IgPSBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKTsK
LSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7
IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0sIHsgfSB9
OworICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2Nr
IHsgcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIHsgfSwgeyB9
LCB7IH19OwogICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9j
aywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIApAQCAtODM4LDcgKzgzOCw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2lu
ZyhDb21wbGV0aW9uSGFuZGxlcjx2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWdp
c3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IGRvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zv
ciwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkgfTsKKyAgICBSZWdpc3Ry
YWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IGRvbWFpbnNUb0Js
b2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvciwg
ZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHksIHsgfSB9OwogCiAgICAgaWYg
KGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSAmJiAoIWRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2ll
c0Zvci5pc0VtcHR5KCkgfHwgIWRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0
eSgpKSkKICAgICAgICAgZGVidWdMb2dEb21haW5zSW5CYXRjaGVzKCJBcHBseWluZyBjcm9zcy1z
aXRlIHRyYWNraW5nIHJlc3RyaWN0aW9ucyIsIGRvbWFpbnNUb0Jsb2NrKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZDVhOTY1MjVjYmFl
NmRlYTc3MzBjMmU5NDI3YzU0OWZkMTZiNmQxNy4uYmE0MzQ3N2ZkMTJkOWY3NzQzNTMxYzczZmJk
MWNjNjBjOTY2Y2I4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoY29uc3QgUmVnaXN0cgog
ewogICAgIEFTU0VSVChpc0VwaGVtZXJhbCgpKTsKIAotICAgIGlmICghbV9uZXR3b3JrU2Vzc2lv
biB8fCAhbV9kb21haW5zV2l0aEVwaGVtZXJhbFVzZXJJbnRlcmFjdGlvbi5jb250YWlucyhzdWJG
cmFtZURvbWFpbikpCisgICAgaWYgKCFtX25ldHdvcmtTZXNzaW9uIHx8ICghbV9kb21haW5zV2l0
aEVwaGVtZXJhbFVzZXJJbnRlcmFjdGlvbi5jb250YWlucyhzdWJGcmFtZURvbWFpbikgJiYgIU5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBv
c2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURv
bWFpbikpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIHNjb3BlLCB0
b3BGcmFtZURvbWFpbiwgc3ViRnJhbWVEb21haW4gfSk7CiAKICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiByZXF1ZXN0Q29uZmlybWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJGcmFtZURvbWFpbiwgdG9wRnJh
bWVEb21haW4sIGZyYW1lSUQsIHdlYlBhZ2VJRCwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgbXV0
YWJsZSB7CkBAIC0xMjU3LDYgKzEyNTcsMjMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IKICAg
ICAgICAgICAgIG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25RdWlyayA9IGRvbWFpbnNXaXRo
VXNlckludGVyYWN0aW9uUXVpcms7CiAgICAgICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5uZXR3
b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKGRvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uUXVpcmspLCAwKTsKICAgICAgICAgfQorCisgICAgICAgIEhhc2hN
YXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFN0b3Jh
Z2VBY2Nlc3NRdWlyazsKKyAgICAgICAgZm9yIChhdXRvJiB0b3BEb21haW4gOiBkb21haW5zVG9C
bG9jay5kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3Mua2V5cygpKSB7CisgICAgICAgICAgICBhdXRv
IGxvZ2luRG9tYWluID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFp
bkZvckZpcnN0UGFydHkodG9wRG9tYWluKTsKKyAgICAgICAgICAgIGlmIChsb2dpbkRvbWFpbiAm
JiB0b3BEb21haW4gPT0gbG9naW5Eb21haW4pCisgICAgICAgICAgICAgICAgZG9tYWluc1dpdGhT
dG9yYWdlQWNjZXNzUXVpcmsuYWRkKHRvcERvbWFpbiwgKmxvZ2luRG9tYWluKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChtX2RvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrICE9IGRvbWFp
bnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKSB7CisgICAgICAgICAgICBpZiAobV9uZXR3b3JrU2Vz
c2lvbikgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0
d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICAgICAgICAgICAg
ICBzdG9yYWdlU2Vzc2lvbi0+c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmsoZG9tYWlu
c1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspOworICAgICAgICAgICAgICAgIG1fbmV0d29ya1Nlc3Np
b24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXREb21haW5zV2l0aFN0
b3JhZ2VBY2Nlc3MoZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspLCBbdGhpcywgZG9tYWlu
c1dpdGhTdG9yYWdlQWNjZXNzUXVpcmtdICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAg
ICBtX2RvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrID0gZG9tYWluc1dpdGhTdG9yYWdlQWNj
ZXNzUXVpcms7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDIxM2M4ZDBlZDBhNGRkZWZjMzliODA0MmUw
NThmODAyNmFmYjY4NTQuLmQyYWRiNjkyYjRjOGE0NWUxYTAyOWVmZTIyNjlkZTg5ZDVhZDA2MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTcy
LDcgKzcyLDggQEAgc3RydWN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIHsK
ICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQW5k
RGVsZXRlQ29va2llc0ZvcjsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eTsK
LSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBpc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc29sYXRl
ZENvcHkoKSwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc29sYXRlZENvcHkoKSwg
ZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkuaXNvbGF0ZWRDb3B5KCkgfTsg
fQorICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3M7CisgICAgUmVnaXN0cmFibGVE
b21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBk
b21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNU
b0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoVXNlcklu
dGVyYWN0aW9uQXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0aFN0b3JhZ2VB
Y2Nlc3MgfTsgfQogfTsKIHN0cnVjdCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJp
Y3RXZWJzaXRlRGF0YUZvciB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiBkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yOwpAQCAtMzMwLDYgKzMzMSw3IEBAIHByaXZh
dGU6CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aEVwaGVtZXJh
bFVzZXJJbnRlcmFjdGlvbjsKIAogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fZG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb25RdWlyazsKKyAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsK
IAogICAgIGJvb2wgbV9oYXNTY2hlZHVsZWRQcm9jZXNzU3RhdHMgeyBmYWxzZSB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMu
aAppbmRleCBlNjI2MzQyNDRlODFhOWVjNWU3NjdjYjcyYWYwNzFlZGUzNWRmOTUzLi5hMjhjYjM5
MTJlY2JlNDVhZTVlN2YxZGFlMWZkZjdkMDRmMzRiMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTQ5LDYgKzQ5
LDggQEAgc3RydWN0IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBk
b21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKKwogI2VuZGlmCiAgICAgYm9vbCByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07CiAKQEAgLTc1LDYgKzc3LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBlbmNvZGVy
IDw8IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgZW5jb2RlciA8PCBkb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBlbmNvZGVyIDw8IGRvbWFpbnNXaXRoU3RvcmFnZUFj
Y2Vzc1F1aXJrOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZDsKIH0KQEAgLTE1MSw2ICsxNTQsMTEgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnM+IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUK
ICAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogICAgIGlmICghZG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgCisgICAgT3B0aW9uYWw8SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsK
KyAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrOworICAgIGlmICgh
ZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAjZW5kaWYKIAogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBm
YWxzZTsKQEAgLTE3NCw2ICsxODIsNyBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICp0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlLAogICAgICAgICBXVEZNb3ZlKCpkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
biksCisgICAgICAgIFdURk1vdmUoKmRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKSwKICNl
bmRpZgogICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAogICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAppbmRleCA2ZWUyNmQwNDZiMGIyMTg4NzA3M2U2ZWU3MzQ5ODQzZGFkMzM1YWZhLi5l
NjI1ZjA4YmUyOTUzNWVlNGI0NGE3ZDkwNmI0ZGUyZmRhMmI4NjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
QEAgLTEyNjUsMTEgKzEyNjUsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGly
ZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3MKIHsKICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaGlyZFBhcnR5
Q05BTUVEb21haW5Gb3JUZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldERvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYg
ZG9tYWlucykKIHsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6
OmFsbFByb2Nlc3NQb29scygpKQogICAgICAgICBwcm9jZXNzUG9vbC0+c2V0RG9tYWluc1dpdGhV
c2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4geyBkb21h
aW5zIH0pOwogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldERvbWFpbnNXaXRoU3Rv
cmFnZUFjY2VzcyhIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4m
JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7ICAgIAorICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9y
OjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIAorICAgIGZvciAoYXV0
byogcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCisgICAg
ICAgIHByb2Nlc3NQb29sLT5zZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+IHsgZG9tYWlucyB9LCBbY2FsbGJhY2tB
Z2dyZWdhdG9yXSB7IH0pOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBZENsaWNrQXR0cmlidXRp
b25EZWJ1Z01vZGUoYm9vbCBkZWJ1Z01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGQwMzA0M2Y3OGQwMjEz
MmY0MzkzMTFkMjYyN2IwOGMzYzdkYWFkMjIuLjcxMzM3YjZlOWRmMDU4YmUxZmU2YjMzMTliYjU5
ZmI3YTM1YjQzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMDAsNiArMjAwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhvc3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBjbmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNl
dFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+JiYpOworICAgIHZvaWQgc2V0RG9tYWluc1dpdGhTdG9yYWdlQWNj
ZXNzKEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAg
ICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCAyYWVhZmYzNGM3YTgwZTM5YzFhYzJkMzNmN2M0YTExNTJk
MTg4ZDc0Li43OGQ2YmY2NGE3M2ZlN2ZiODcxNjE4NmU5YTk4ZmFlZmQ3MmEwOGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00OCw2ICs0OCw3IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgRGVs
ZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5
cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlv
bnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgLT4gKEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVj
b3JkcykgQXN5bmMKICAgICBEaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZy
b21QcmV2YWxlbnRSZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlE
KQogICAgIFNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IGRvbWFpbnMpCisgICAgU2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNz
KEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBkb21haW5zKSAtPiAoKSBBc3luYwogI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKICAgICBDb250ZW50RXh0ZW5zaW9uUnVsZXMoV2ViS2l0OjpVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZTA0NTFmYjQ4YjJkMjc3ODBhMWFkZTljZjNkMTJm
NjZiNGU0NGU0Yi4uNzQyMTIxNWZhNjJhMmM0NDA0MzYyMGQwMDkxZjkyZTA0YzJjNWVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNzM0LDYgKzcz
NCw3IEBAIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS50aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlKCksCiAgICAgICAgIG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24sCisgICAg
ICAgIG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmssCiAjZW5kaWYKICAgICAgICAgd2Vi
c2l0ZURhdGFTdG9yZS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpCiAgICAgfTsKQEAg
LTE5ODUsNiArMTk4NiwxNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRAogICAgIG1fZG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb24gPSBXVEZNb3ZlKGRvbWFpbnMpOwogfQogCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreyAgICAKKyAgICBhdXRvIGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQorICAgICAg
ICBwcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldERv
bWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyhkb21haW5zKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKKworICAgIGZvciAoYXV0byYgdG9wRG9tYWluIDogZG9tYWlucy5rZXlzKCkpCisgICAgICAg
IG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmsuYWRkKHRvcERvbWFpbiwgZG9tYWlucy5n
ZXQodG9wRG9tYWluKSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlZWRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wg
c2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxi
YWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRlMmU5YTUyM2U0NmVlNDQ3
NDdjZTM1MDJhZTk1MGU1OGY5OTUwMmUuLjRkMmNiNWI3NmZlMmQ1NjFlZTJjM2M0OTU4ZDc3YTIz
MjI5MWVjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAt
NDYxLDYgKzQ2MSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKKyAgICB2b2lkIHNldERvbWFpbnNXaXRoU3Rv
cmFnZUFjY2VzcyhIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmlj
YXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZW5kUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogI2VuZGlmCkBAIC03NjksNiArNzcwLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21h
aW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggNDc3MjdjMzA0ZmVkNWIwZWFhZDAyMzJiMmQ3ZTRi
OWI1YzMwNTE3OC4uZGQ1ZGE0ZmEwMDExMTQzYWZjNGFlNDY4OGVlMWNiMmFlN2YzZTZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291
cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00MTgsNiArNDE4LDI0IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZ0ZvclRl
c3RpbmcoY29uc3QgUmVnaXN0cmFibGVECiAgICAgICAgIG1fbm90aWZpY2F0aW9uVGltZXIuc3Rv
cCgpOwogfQogCitib29sIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNTdG9yYWdlQWNjZXNz
Rm9yUXVpcmsoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkRvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcERvbWFpbikgY29uc3QKK3sKKyAgICBhdXRvIGl0ID0gbV9kb21haW5z
V2l0aFN0b3JhZ2VBY2Nlc3MuZmluZCh0b3BEb21haW4pOworCisgICAgaWYgKGl0ICE9IG1fZG9t
YWluc1dpdGhTdG9yYWdlQWNjZXNzLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlID09
IHN1YkRvbWFpbjsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8UmVnaXN0cmFi
bGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBmb3IgKGF1dG8mIHRvcERvbWFp
biA6IGRvbWFpbnMua2V5cygpKQorICAgICAgICBtX2RvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcy5h
ZGQodG9wRG9tYWluLCBkb21haW5zLmdldCh0b3BEb21haW4pKTsKKworICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVy
LmgKaW5kZXggZGNjMWJhYjM5Y2Q0ODNiMzg1YTFlY2YwZTQ4YjUzYjJkZTdhMGZhYS4uNjBlNTcx
YmI5MzUxMjM3YmYwODU2MmM1NGQ0MGFkMTBjZWExMzEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZE9ic2VydmVyLmgKQEAgLTYzLDcgKzYzLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1N0
YXRpc3RpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAu
aXNFbXB0eSgpOyB9CiAKICAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykgZmluYWwgeyBtX2Rv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uID0gV1RGTW92ZShkb21haW5zKTsgfQorICAgIHZvaWQg
c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwogICAgIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBoYXNTdG9y
YWdlQWNjZXNzRm9yUXVpcmsoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0IGZpbmFsOworCiBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Jik7CiAgICAgdm9pZCBzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCk7CkBAIC04MSw2ICs4
NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub3RpZmljYXRpb25UaW1lcjsK
IAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhV
c2VySW50ZXJhY3Rpb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzOwog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHVpbnQ2NF90IG1fbG9nZ2luZ0NvdW50ZXIg
eyAwIH07CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nVXNlckludGVyYWN0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRmYTU3YzY1NWFkYTdjZjk3MTg5
Yjc1N2M1OWFhOTAxOTUwYWE5ZTguLmY1NjBlOWE5NmIyZTY1NDFiZTg5Y2U5MTc3NzY3NjYxNmJi
NWNhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTUyOCw2
ICs1MjgsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
KFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcAogICAgICAgICBpZiAoIVJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4aXN0cygpKQogICAgICAgICAgICAgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNldFNoYXJlZCgqbmV3IFdlYlJlc291cmNlTG9hZE9ic2VydmVyKHBhcmFtZXRl
cnMuc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
SXNFcGhlbWVyYWw6Ok5vKSk7CiAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQo
KS5zZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihXVEZNb3ZlKHBhcmFtZXRlcnMuZG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb24pKTsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLnNlc3Npb25J
RC5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHBhcmFtZXRlcnMuZG9tYWlu
c1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspLCBbXSB7IH0pOwogICAgIH0KICAgICAKICNlbmRpZgpA
QCAtMjAwNiw2ICsyMDA4LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RG9tYWluc1dpdGhVc2Vy
SW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpCiAgICAgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKFdU
Rk1vdmUoZG9tYWlucykpOwogfQogCit2b2lkIFdlYlByb2Nlc3M6OnNldERvbWFpbnNXaXRoU3Rv
cmFnZUFjY2VzcyhIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4m
JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoU3Rv
cmFnZUFjY2VzcyhXVEZNb3ZlKGRvbWFpbnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKIHZvaWQgV2ViUHJvY2Vzczo6c2VuZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhSW1t
ZWRpYXRlbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS51cGRhdGVDZW50cmFsU3RhdGlz
dGljc1N0b3JlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU4OTQ4ZTkxN2NlMjk1NDdlNGUwMTdhMTVlNGEyMDBkZjEz
OTgxNzMuLjU4MTg1YWQxNDg4NmU3NTYzYzAxN2ZkNDU1OWQ5MzcxOGY3MDc5NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDkyLDYgKzQ5Miw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldERvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYp
OworICAgIHZvaWQgc2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2VuZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhSW1tZWRpYXRlbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDI0OTZjOWRhYzEzMmQ4ZDNjYzQxZmQ0NTE1NjA4ZmRmNzkwY2I1NmQuLjg1MTMyOGExMGQy
YWI2ZWE2MzA5ZTFiNTJkMmEyOWUyYmMzM2Q5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNjUsNiArMTY1LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBTZWVk
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZmlyc3RQYXJ0eURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGhpcmRQYXJ0
eURvbWFpbiwgYm9vbCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbikgLT4gKCkgQXN5bmMKICAg
ICBTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKGVudW06dWludDhfdCBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICAg
ICBTZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW5zKQorICAgIFNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNo
TWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gZG9tYWlucykgLT4gKCkgQXN5bmMKICAgICBTZW5kUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFJbW1lZGlhdGVseSgpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAo=
</data>
<flag name="commit-queue"
          id="430427"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413759</attachid>
            <date>2020-11-10 17:30:23 -0800</date>
            <delta_ts>2020-11-11 14:11:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218778-20201110173022.patch</filename>
            <type>text/plain</type>
            <size>47325</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc4ZGNiMjQxYmZiNzVh
MWZjNGI5MWEwMDM1NWQ0MGI3YzJmNGE2OS4uNmUxOTVlOGJhMTQ5NThkNTFjZDU2MzE4NzMyNDA1
YzA1YWZmMDQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTExLTEwICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbid0IGxv
Z2luIHRvIE1pY3Jvc29mdCBUZWFtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4Nzc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjMzMTU2OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlz
IGEgdGVtcG9yYXJ5IHF1aXJrIHRvIGFzc2lzdCBhIGhpZ2gtdHJhZmZpYyB3ZWJzaXRlIHdoaWxl
IHRoZXkKKyAgICAgICAgY29tcGxldGUgdGhlIGxhcmdlIHRhc2sgb2YgbWlncmF0aW5nIGF3YXkg
ZnJvbSBsb2dpbiBmbG93cyB0aGF0CisgICAgICAgIHJlcXVpcmUgdGhpcmQgcGFydHkgY29va2ll
cy4gVGhpcyBxdWlyayB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUgc2l0ZQorICAgICAgICBpcyB1
cGRhdGVkLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJrIHRvIGNhbGwgdGhlIFN0b3JhZ2UgQWNj
ZXNzIEFQSSBvbiBiZWhhbGYgb2YgbWljcm9zb2Z0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
c2l0ZS1zcGVjaWZpYyBxdWlyay4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudCk6CisgICAgICAgIFBhc3Mg
YWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGFibGUgdG8gZGlzcGF0Y2ggYSBzeW50aGV0aWMg
Y2xpY2sKKyAgICAgICAgaWYgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZC4KKworICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aGFzU3RvcmFnZUFjY2Vzc0ZvclF1aXJrIGNv
bnN0KToKKyAgICAgICAgU3RvcmUgZG9tYWlucyBpbiB0aGUgd2ViIHByb2Nlc3MgdG8gYXZvaWQg
YXN5bmMgY2FsbHMgdG8gdGhlIG5ldHdvcmsKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAq
IHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6dHJpZ2dlck9wdGlv
bmFsU3RvcmFnZUFjY2Vzc1F1aXJrIGNvbnN0KToKKyAgICAgICAgVGhpcyBpcyB0aGUgcXVpcmsu
CisKKyAgICAgICAgKiBwYWdlL1F1aXJrcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFF1aXJrUGFpclN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdl
QWNjZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6cmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VBY2Nlc3NRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVy
cG9zZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbkZvckZpcnN0UGFydHkpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgIEluIG9y
ZGVyIGZvciB0aGUgdXNlciB0byBzdGF5IGxvZ2dlZCBpbiBiZXR3ZWVuIHNlc3Npb25zLCB3ZSBz
aG91bGQKKyAgICAgICAgdXBkYXRlIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBncmFudCBzdG9y
YWdlIGFjY2VzcyBiYXNlZCBvbiB2YWx1ZXMKKyAgICAgICAgc3RvcmVkIGluIHRoZSBJVFAgZGF0
YWJhc2UgZm9yIHF1aXJrIGRvbWFpbnMuCisKIDIwMjAtMTEtMDIgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNjkyMjcpIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZmVy
cmVyLXRvcGxldmVsLXNjcmlwdC1mZXRjaC5odHRwcy5odG1sIGlzIGEgZmxha3kgY3Jhc2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggOWYyZGQ0Nzg0NTdkZDUyZDgxMGQzY2U0ZGQxYjhkNGVlMDgyMzI5MC4uYzk1NDRj
NmNiOGIzNzA2OGIyYzE2MTM1ZGNjMzY0MDY2MmI3YTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
NSBAQAorMjAyMC0xMS0xMCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNv
bT4KKworICAgICAgICBDYW4ndCBsb2dpbiB0byBNaWNyb3NvZnQgVGVhbXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc3OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzYzMzE1Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHRlbXBvcmFyeSBxdWlyayB0byBhc3Npc3QgYSBoaWdo
LXRyYWZmaWMgd2Vic2l0ZSB3aGlsZSB0aGV5CisgICAgICAgIGNvbXBsZXRlIHRoZSBsYXJnZSB0
YXNrIG9mIG1pZ3JhdGluZyBhd2F5IGZyb20gbG9naW4gZmxvd3MgdGhhdAorICAgICAgICByZXF1
aXJlIHRoaXJkIHBhcnR5IGNvb2tpZXMuIFRoaXMgcXVpcmsgd2lsbCBiZSByZW1vdmVkIHdoZW4g
dGhlIHNpdGUKKyAgICAgICAgaXMgdXBkYXRlZC4KKworICAgICAgICBDcmVhdGUgYSBxdWlyayB0
byBjYWxsIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkgb24gYmVoYWxmIG9mIG1pY3Jvc29mdC4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKToKKyAgICAgICAgUmVsYXggdGhlIHJlcXVpcmVtZW50IGZvciB1c2VyIGludGVyYWN0
aW9uIGZvciBhIHNwZWNpZmljIHRoaXJkIHBhcnR5CisgICAgICAgIG5lZWRpbmcgY29va2llcyBm
b3IgYXV0aGVudGljYXRpb24gcHVycG9zZXMuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyk6CisgICAgICAg
IFJlbGF4IHRoZSByZXF1aXJlbWVudCBmb3IgdXNlciBpbnRlcmFjdGlvbiBmb3IgYSBzcGVjaWZp
YyB0aGlyZCBwYXJ0eQorICAgICAgICBuZWVkaW5nIGNvb2tpZXMgZm9yIGF1dGhlbnRpY2F0aW9u
IHB1cnBvc2VzLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlQ29va2llQmxv
Y2tpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnVwZGF0ZUNvb2tp
ZUJsb2NraW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwpOgorICAg
ICAgICBSZWxheCB1c2VyIGludGVyYWN0aW9uIGZvciByZWFzb25zIGFib3ZlLgorCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZh
bGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAg
ICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldERv
bWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERv
bWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVy
OjpoYXNTdG9yYWdlQWNjZXNzRm9yUXVpcmsgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKyAgICAgICAgRm9yd2FyZCBkb21haW5zIHdpdGggdGhlIHN0b3JhZ2Ug
YWNjZXNzIHF1aXJrIHRvIHRoZSB3ZWIgcHJvY2VzcyB0bworICAgICAgICBhdm9pZCBhbiBhc3lu
YyBjYWxsIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisKIDIwMjAtMTEtMDIgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIGd1YXJkIFVJU2NyaWJibGVJbnRlcmFj
dGlvbiBjbGFzcyBwcm9wZXJ0eSBvYnNlcnZpbmcgYmVoaW5kIGEgTE9BIGNoZWNrCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggOGQ2NzI3NTkyYTE1OTQ2MjA5YWFkOGU0ZjYzNjgwOGFkZDZkZDFl
Yi4uMjZiNDY5MTE3YTkwMWE2N2FkMzIwYzg5YTRmYzQyMDBjZDE3M2ViNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3Vz
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCwgY29uc3QKICAg
ICBpZiAoZGlzcGF0Y2hQb2ludGVyRXZlbnRJZk5lZWRlZCgqdGhpcywgbW91c2VFdmVudC5nZXQo
KSwgcGxhdGZvcm1FdmVudCwgZGlkTm90U3dhbGxvd0V2ZW50KSA9PSBTaG91bGRJZ25vcmVNb3Vz
ZUV2ZW50OjpZZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChRdWlya3M6OlN0
b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50ID09IGRvY3VtZW50KCkucXVpcmtz
KCkudHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKCp0aGlzLCBldmVudFR5cGUpKQor
ICAgIGlmIChRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50ID09
IGRvY3VtZW50KCkucXVpcmtzKCkudHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKCp0
aGlzLCBwbGF0Zm9ybUV2ZW50LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRhcmdldCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVCghbW91c2VFdmVudC0+dGFyZ2V0KCkg
fHwgbW91c2VFdmVudC0+dGFyZ2V0KCkgIT0gcmVsYXRlZFRhcmdldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IDNlOWMwZjg0ZjI1Y2ZkMWFi
MDA5YmU3YzJhY2UyMDBlNGE1Nzk3ZWMuLmI3NmQ4MjA1ZjlmYmY0N2E1NWIxN2I0MWE4ZjJlYjJl
NDQ0Y2VjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5oCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzU3RhdGlz
dGljcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFJl
Z2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvclF1aXJrKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVp
cmtzLmNwcAppbmRleCAzYzZmMzU3NmQ4MTI4MzAyYTA3NjNhNTliNTg4ZjA1MTlkNzU4ODZiLi5j
MWMyNDBhOWVkNDBkY2MxNjEzMGU3YmY3NjNiYWViYjRlMmFlMmNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWly
a3MuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgorI2luY2x1
ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZE9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNW
R1BhdGhFbGVtZW50LmgiCkBAIC05NDUsNyArOTQ2LDcgQEAgc3RhdGljIGJvb2wgaXNLaW5qYUxv
Z2luQXZhdGFyRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogfQogI2VuZGlmCiAKLVF1
aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VB
Y2Nlc3NRdWlyayhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUpIGNvbnN0CitRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2Vy
T3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IGludCBkZXRhaWwsIEVsZW1lbnQqIHJlbGF0ZWRUYXJnZXQpIGNvbnN0CiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIW5lZWRzUXVpcmtzKCkpCkBAIC05
NzIsNyArOTczLDkgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dl
ck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKGNvbnN0IEVsZW0KICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVnaXN0cmFibGVEb21haW4+IGtpbmphRG9tYWluIHsga2luamFVUkwgfTsKIAog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWdpc3RyYWJsZURvbWFpbj4geW91VHViZURvbWFp
biA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21h
aW5TdHJpbmcoInlvdXR1YmUuY29tIl9zKTsKLSAgICAKKworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZWdpc3RyYWJsZURvbWFpbj4gbWljcm9zb2Z0RG9tYWluID0gUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0
LmNvbSJfcyk7CisKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBsb2dpblBvcHVw
V2luZG93RmVhdHVyZVN0cmluZyA9ICJ0b29sYmFyPW5vLGxvY2F0aW9uPXllcyxkaXJlY3Rvcmll
cz1ubyxzdGF0dXM9bm8sbWVudWJhcj1ubyxzY3JvbGxiYXJzPXllcyxyZXNpemFibGU9eWVzLGNv
cHloaXN0b3J5PW5vLHdpZHRoPTU5OSxoZWlnaHQ9NjAwLHRvcD00MjAsbGVmdD05ODAuNSJfczsK
IAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBraW5qYUxvZ2luVXNlclNj
cmlwdCB7ICJmdW5jdGlvbiB0cmlnZ2VyTG9naW5Gb3JtKCkgeyBsZXQgZWxlbWVudHMgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdqc19oZWFkZXItdXNlcmJ1dHRvbicpOyBpZiAo
ZWxlbWVudHMgJiYgZWxlbWVudHNbMF0pIHsgZWxlbWVudHNbMF0uY2xpY2soKTsgY2xlYXJJbnRl
cnZhbChpbnRlcnZhbCk7IH0gfSBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0cmlnZ2VyTG9n
aW5Gb3JtLCAyMDApOyIsIFVSTChhYm91dEJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBW
ZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90
aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgfTsKQEAgLTEwMTUsMTAgKzEwMTgsMzcgQEAg
UXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFn
ZUFjY2Vzc1F1aXJrKGNvbnN0IEVsZW0KICAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQorCisgICAgICAgIC8vIE1pY3Jvc29mdCBUZWFtcyBsb2dpbiBjYXNlLgorICAgICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgcXVpcmsgb25jZSB0aGUgbWljcm9zb2Z0LmNvbSBsb2dp
biBmbG93IHdvcmtzIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
Nzc5KS4KKyAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBkb21haW4gPT0gbWljcm9z
b2Z0RG9tYWluKSB7CisgICAgICAgICAgICBhdXRvJiBjbGFzc05hbWVzID0gZWxlbWVudC5jbGFz
c05hbWVzKCk7CisgICAgICAgICAgICBpZiAoY2xhc3NOYW1lcy5jb250YWlucygiZ2x5cGhfc2ln
bkluX2NpcmNsZSIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoIm1lY3RybF9oZWFkZXJ0ZXh0Iikg
fHwgY2xhc3NOYW1lcy5jb250YWlucygibWVjdHJsX2hlYWRlciIpKSB7CisgICAgICAgICAgICAg
ICAgYXV0byB0b3BEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJv
bUhvc3QobV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmhvc3QoKSk7
CisgICAgICAgICAgICAgICAgYXV0byBsb2dpbkRvbWFpbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6bG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KHRvcERvbWFpbik7CisgICAgICAgICAgICAgICAg
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2VzczsK
KyAgICAgICAgICAgICAgICBpZiAobG9naW5Eb21haW4pIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzU3RvcmFnZUFjY2Vzc0ZvclF1
aXJrKCpsb2dpbkRvbWFpbiwgdG9wRG9tYWluKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zvck5vbkRvY3VtZW50
UXVpcmsoKm1fZG9jdW1lbnQsIFdURk1vdmUoKmxvZ2luRG9tYWluKSwgW3RvcERvbWFpbiA9IFdU
Rk1vdmUodG9wRG9tYWluKSwgbG9naW5Eb21haW4sICZlbGVtZW50LCBwbGF0Zm9ybUV2ZW50LCBl
dmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRhcmdldF0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQg
c3RvcmFnZUFjY2Vzc0dyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzdG9yYWdlQWNjZXNzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6
WWVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzaGFyZWQoKS5zZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3Moe3sgdG9wRG9tYWluLCAq
bG9naW5Eb21haW4gfX0sIFsmZWxlbWVudCwgcGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRh
aWwsIHJlbGF0ZWRUYXJnZXRdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQuZGlzcGF0Y2hNb3VzZUV2ZW50KHBsYXRmb3JtRXZlbnQsIGV2ZW50VHlwZSwgZGV0
YWlsLCByZWxhdGVkVGFyZ2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNz
UmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNz
UmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQog
ICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOworICAgIFVOVVNFRF9QQVJB
TShwbGF0Zm9ybUV2ZW50KTsKICAgICBVTlVTRURfUEFSQU0oZXZlbnRUeXBlKTsKKyAgICBVTlVT
RURfUEFSQU0oZGV0YWlsKTsKKyAgICBVTlVTRURfUEFSQU0ocmVsYXRlZFRhcmdldCk7CiAjZW5k
aWYKICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5j
ZWxFdmVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCmluZGV4IDJmNTQwZWZiYmEyNjZlMDIzODA1ZTI5
OTkzNWM4OWIxZTc5YWViZGUuLjEyYTJmODIyMTMyOGJkOTVhMzA3ZmM1NGE1MDE5ODkyZDIyYzM4
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9RdWlya3MuaApAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCisjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzcsNiArMzksNyBAQCBjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNz
IEhUTUxFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIExheW91dFVuaXQ7
CitjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAKIGNsYXNzIFF1aXJrcyB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUXVpcmtzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMTIs
NyArMTE1LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQXZvaWRQYXN0aW5nSW1hZ2VzQXNX
ZWJDb250ZW50KCkgY29uc3Q7CiAKICAgICBlbnVtIFN0b3JhZ2VBY2Nlc3NSZXN1bHQgOiBib29s
IHsgU2hvdWxkTm90Q2FuY2VsRXZlbnQsIFNob3VsZENhbmNlbEV2ZW50IH07Ci0gICAgU3RvcmFn
ZUFjY2Vzc1Jlc3VsdCB0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoY29uc3QgRWxl
bWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CisgICAgU3RvcmFnZUFj
Y2Vzc1Jlc3VsdCB0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoRWxlbWVudCYsIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgaW50
LCBFbGVtZW50KikgY29uc3Q7CiAKICAgICBib29sIG5lZWRzVlA5RnVsbFJhbmdlRmxhZ1F1aXJr
KCkgY29uc3Q7CiAgICAgYm9vbCBuZWVkc0hEUlBpeGVsRGVwdGhRdWlyaygpIGNvbnN0OwpAQCAt
MTU0LDQgKzE1Nyw0IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX25l
ZWRzQmxhY2tGdWxsc2NyZWVuQmFja2dyb3VuZFF1aXJrOwogfTsKIAotfQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDg0NjE4Y2U0MTE5MTIxYjdkYTk1NTg3
MDhhMmY5NGIxZTRlYmU0OWEuLjk2NWQzNzJjMGRkNWVmODc5N2QwYzZiYTM2Yzk4MzE2MGIyOGRl
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTIwOSw2ICsyMDksMTggQEAgdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5
KGNvbnN0IFZlY3QKICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25B
c0ZpcnN0UGFydHkuYWRkKGRvbWFpbnMuYmVnaW4oKSwgZG9tYWlucy5lbmQoKSk7CiB9CiAKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWly
ayhjb25zdCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mIGRv
bWFpbnMpCit7CisgICAgbV9xdWlya1BhaXJzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuY2xlYXIoKTsK
KyAgICBmb3IgKGF1dG8mIHRvcERvbWFpbiA6IGRvbWFpbnMua2V5cygpKQorICAgICAgICBncmFu
dFF1aXJrUGFpclN0b3JhZ2VBY2Nlc3ModG9wRG9tYWluLCBkb21haW5zLmdldCh0b3BEb21haW4p
KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdyYW50UXVpcmtQYWlyU3RvcmFn
ZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluKQoreworICAgIG1fcXVpcmtQYWlyc0dy
YW50ZWRTdG9yYWdlQWNjZXNzLmFkZChmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbik7
Cit9CisKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CkBAIC0y
MjcsNiArMjM5LDEwIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvCiAgICAgICAgICAgICBpZiAo
aXQgIT0gcGFnZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmVuZCgpICYmIGl0LT52YWx1ZSA9PSBy
ZXNvdXJjZURvbWFpbikKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQor
CisgICAgICAgIGF1dG8gaXQgPSBtX3F1aXJrUGFpcnNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5k
KGZpcnN0UGFydHlEb21haW4pOworICAgICAgICBpZiAoaXQgIT0gbV9xdWlya1BhaXJzR3JhbnRl
ZFN0b3JhZ2VBY2Nlc3MuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlc291cmNlRG9tYWluKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQ0
LDYgKzI2MCwxMyBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3QKICAgICAKIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CisgICAgYXV0byBsb2dpbkRvbWFpbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21h
aW5Gb3JGaXJzdFBhcnR5KGZpcnN0UGFydHlEb21haW4pOworCisgICAgaWYgKGxvZ2luRG9tYWlu
ICYmIGxvZ2luRG9tYWluID09IHJlc291cmNlRG9tYWluKSB7CisgICAgICAgIGdyYW50UXVpcmtQ
YWlyU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIWZyYW1lSUQpIHsKICAgICAgICAgaWYgKGZp
cnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjk3LDYg
KzMyMCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzKCkKIHsKICAgICBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuY2xlYXIoKTsKICAgICBt
X2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CisgICAgbV9xdWlya1BhaXJzR3Jh
bnRlZFN0b3JhZ2VBY2Nlc3MuY2xlYXIoKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgc2Vjb25k
cykKQEAgLTM1MSw2ICszNzUsMzMgQEAgT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG8KIAogICAgIHJl
dHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzOwogfQorCitIYXNoTWFwPFJlZ2lzdHJh
YmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZUFjY2Vzc1F1aXJrcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPj4gbWFwID0gW10geworICAgICAg
ICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4gbWFwOworICAg
ICAgICBtYXAuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0
cmFibGVEb21haW5TdHJpbmcoIm1pY3Jvc29mdC5jb20iKSwKKyAgICAgICAgICAgIFJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoIm1p
Y3Jvc29mdG9ubGluZS5jb20iX3MpKTsKKyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9KCk7Cisg
ICAgcmV0dXJuIG1hcC5nZXQoKTsKK30KKworYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNh
blJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRl
cmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbikKK3sKKyAgICBhdXRvIGxvZ2luRG9tYWlu
ID0gbG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KHRvcEZyYW1lRG9tYWluKTsKKyAgICBpZiAobG9n
aW5Eb21haW4pCisgICAgICAgIHJldHVybiBsb2dpbkRvbWFpbi52YWx1ZSgpID09IHN1YkZyYW1l
RG9tYWluOworICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8UmVnaXN0cmFibGVEb21h
aW4+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluKQoreworICAgIGF1dG8gaXQgPSBz
dG9yYWdlQWNjZXNzUXVpcmtzKCkuZmluZChmaXJzdFBhcnR5RG9tYWluKTsKKyAgICBpZiAoaXQg
IT0gc3RvcmFnZUFjY2Vzc1F1aXJrcygpLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnZhbHVl
OworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggNTdlYmEwZmEzYmJjOWRk
YmI0MDY4MTAzMWIzMzVjZTFhYjhjMTAwMi4uMWQxNmU5N2Y2MzM3MzQxMmYxZmRiZTEyM2Y4M2M4
M2Q5ZjhiY2NlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0xOTgsNiArMTk4LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tBbmREZWxl
dGVDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNG
b3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoY29uc3QgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RG9t
YWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmsoY29uc3QgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFp
biwgUmVnaXN0cmFibGVEb21haW4+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBncmFudFF1
aXJrUGFpclN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhPcHRpb25hbDxT
ZWNvbmRzPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIFBhZ2VJZGVu
dGlmaWVyKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBnZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0OwpAQCAtMjE4LDYgKzIyMCwxMCBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldEFwcEJvdW5kRG9tYWlucygpOwogI2VuZGlm
CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwg
UmVnaXN0cmFibGVEb21haW4+JiBzdG9yYWdlQWNjZXNzUXVpcmtzKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgY2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2Vz
V2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IGxvZ2lu
RG9tYWluRm9yRmlyc3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOworCiBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBE
b05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07CkBAIC0yNzAsNiArMjc2LDcg
QEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxl
RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHk7CiAgICAgSGFzaE1hcDxQYWdl
SWRlbnRpZmllciwgSGFzaE1hcDxGcmFtZUlkZW50aWZpZXIsIFJlZ2lzdHJhYmxlRG9tYWluPj4g
bV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBIYXNoTWFwPFBhZ2VJZGVudGlmaWVy
LCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+IG1fcGFnZXNH
cmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdp
c3RyYWJsZURvbWFpbj4gbV9xdWlya1BhaXJzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgT3B0
aW9uYWw8U2Vjb25kcz4gbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyB7IH07
CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyB7IH07
CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llc1Nob3J0
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCmluZGV4IDRlN2M2MDk5ZWQwMmVjY2UyZGQwNmExZGRiZjM3MWY1YTA0Y2JkOTAu
LjNjNzg3NGVlMjcyNGM5M2Q4NjkxNzRjZDE0MWNkZjgzYTM0MWZhMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMTMy
NCw3ICsxMzI0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoc3ViRnJhbWVTdGF0dXMuZmlyc3QgPT0gQWRk
ZWRSZWNvcmQ6Ok5vKTsKLSAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFjdGlvbihzdWJG
cmFtZURvbWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsKKyAgICAgICAgaWYgKCFO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJw
b3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVE
b21haW4pKQorICAgICAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFt
ZURvbWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsKICAgICAgICAgaW5zZXJ0RG9t
YWluUmVsYXRpb25zaGlwTGlzdChzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNRdWVy
eSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyB0b3BGcmFtZURvbWFpbiB9KSwgKnN1YkZy
YW1lU3RhdHVzLnNlY29uZCk7CiAgICAgfQogCkBAIC0xMzQ4LDcgKzEzNDksOCBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChTdWJGcmFtZURvbQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IEFTU0VSVChzdWJGcmFtZVN0YXR1cy5maXJzdCA9PSBBZGRlZFJlY29yZDo6Tm8pOwotICAgICAg
ICBBU1NFUlQoaGFzSGFkVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdE
YXRlc1dpbmRvdzo6TG9uZykpOworICAgICAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9yVXNlcklu
dGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbikpCisgICAgICAgICAgICBB
U1NFUlQoaGFzSGFkVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRl
c1dpbmRvdzo6TG9uZykpOwogICAgICAgICBBU1NFUlQoaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNj
ZXNzVGhyb3VnaFByb21wdCgqc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0b3BGcmFtZURvbWFpbikg
PT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpOwogI2VuZGlmCiAgICAgICAgIHNl
dFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdHJ1ZSwgV2FsbFRpbWU6Om5vdygpKTsK
QEAgLTIwMDMsNyArMjAwNSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAgICAgcmVtb3Zl
QWxsU3RvcmFnZUFjY2VzcyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogCiAgICAgYXV0byBy
ZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciA9IGVuc3VyZVByZXZh
bGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpOwotICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxv
Y2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2NrIHsgcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Fu
ZERlbGV0ZUNvb2tpZXNGb3IsIHsgfSwgeyB9IH07CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9C
bG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyByZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2Nr
QW5kRGVsZXRlQ29va2llc0ZvciwgeyB9LCB7IH0sIHsgfSB9OwogICAgIHVwZGF0ZUNvb2tpZUJs
b2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKIH0KIApAQCAtMjAzNiw3ICsyMDM4LDcgQEAgQ29va2llQWNjZXNzIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVBY2Nlc3MoY29uc3QgU3ViUmVzb3VyY2UKICAg
ICBpZiAoIWFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKHRvcEZyYW1lRG9tYWlu
KSAmJiAhaXNQcmV2YWxlbnQpCiAgICAgICAgIHJldHVybiBDb29raWVBY2Nlc3M6OkJhc2VkT25D
b29raWVQb2xpY3k7CiAKLSAgICBpZiAoIWhhZFVzZXJJbnRlcmFjdGlvbikKKyAgICBpZiAoIU5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBv
c2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YnJlc291cmNlRG9tYWluLCB0b3BGcmFt
ZURvbWFpbikgJiYgIWhhZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0dXJuIENvb2tpZUFj
Y2Vzczo6Q2Fubm90UmVxdWVzdDsKIAogICAgIHJldHVybiBDb29raWVBY2Nlc3M6Ok9ubHlJZkdy
YW50ZWQ7CkBAIC0yMTAzLDYgKzIxMDUsMjIgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1dpdGhVc2VySW4KICAg
ICByZXR1cm4gcmVzdWx0czsKIH0KIAorSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0
cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5z
V2l0aFN0b3JhZ2VBY2Nlc3MoKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IHJlc3VsdHM7CisgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVu
dChtX2RhdGFiYXNlLCAiU0VMRUNUIHN1YkZyYW1lRG9tYWluLCByZWdpc3RyYWJsZURvbWFpbiBG
Uk9NIChTRUxFQ1Qgby5yZWdpc3RyYWJsZURvbWFpbiBhcyBzdWJGcmFtZURvbWFpbiwgcy50b3BM
ZXZlbERvbWFpbklEIGFzIHRvcExldmVsRG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgYXMg
byBJTk5FUiBKT0lOIFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyBhcyBzIFdIRVJF
IG8uZG9tYWluSUQgPSBzLmRvbWFpbklEKSBhcyB6IElOTkVSIEpPSU4gT2JzZXJ2ZWREb21haW5z
IE9OIGRvbWFpbklEID0gei50b3BMZXZlbERvbWFpbklEOyJfcyk7CisKKyAgICBpZiAoc3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCisgICAgICAgIHJldHVybiByZXN1bHRzOworCisg
ICAgd2hpbGUgKHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmVzdWx0
cy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURv
bWFpblN0cmluZyhzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSksIFJlZ2lzdHJhYmxlRG9tYWlu
Ojp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc3RhdGVtZW50Lmdl
dENvbHVtblRleHQoMCkpKTsKKworICAgIHJldHVybiByZXN1bHRzOworfQorCiB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0yMTEwLDEzICsyMTI4LDE0IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBs
ZXRpb25IYW5kbGVyCiAgICAgYXV0byBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3Ig
PSB0aGlzLT5kb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoKTsKICAgICBhdXRvIGRv
bWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0J1dEtl
ZXBDb29raWVzRm9yKCk7CiAgICAgYXV0byBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmly
c3RQYXJ0eSA9IHRoaXMtPmRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KCk7
CisgICAgYXV0byBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MgPSB0aGlzLT5kb21haW5zV2l0aFN0
b3JhZ2VBY2Nlc3MoKTsKIAotICAgIGlmIChkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNG
b3IuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgp
ICYmIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5LmlzRW1wdHkoKSkgewor
ICAgIGlmIChkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRv
bWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNXaXRoVXNl
ckludGVyYWN0aW9uQXNGaXJzdFBhcnR5LmlzRW1wdHkoKSAmJiBkb21haW5zV2l0aFN0b3JhZ2VB
Y2Nlc3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
ciBkb21haW5zVG9CbG9jayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9t
YWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25B
c0ZpcnN0UGFydHkgfTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBk
b21haW5zVG9CbG9jayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9tYWlu
c1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0Zp
cnN0UGFydHksIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyB9OwogCiAgICAgaWYgKGRlYnVnTG9n
Z2luZ0VuYWJsZWQoKSAmJiAoIWRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0Vt
cHR5KCkgfHwgIWRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpKSkKICAg
ICAgICAgZGVidWdMb2dEb21haW5zSW5CYXRjaGVzKCJBcHBseWluZyBjcm9zcy1zaXRlIHRyYWNr
aW5nIHJlc3RyaWN0aW9ucyIsIGRvbWFpbnNUb0Jsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggZDU1NTIzN2JkZDEyY2Rj
ZGJkMTNjYzExYTBlZjRkNmQ3OTEyYzIwOC4uYTBjYjc2NGJjYmJmZWVmM2YxZmYxNGE3NDY5YTBl
ZTJiOGYwOWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKCkgY29u
c3Q7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0J1dEtlZXBD
b29raWVzRm9yKCkgY29uc3Q7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSgpIGNvbnN0OworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21h
aW5zV2l0aFN0b3JhZ2VBY2Nlc3MoKSBjb25zdDsKIAogICAgIHN0cnVjdCBEb21haW5EYXRhIHsK
ICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IGU0NDU2MDM1ZTE4MmFhZWI0YWRlMmI4
NmRiMWE2OWFiMjg0MTQ4YmMuLjgyMzFhZTRiNzU4N2U4ZWY4OGE5NTUzNTMyNWJmZmJkMGFmMmQ4
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuY3BwCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGUKICAgICBy
ZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKICAgICBh
dXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yID0gZW5zdXJl
UHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCk7Ci0gICAgUmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyByZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQW5kRGVsZXRlQ29va2llc0ZvciwgeyB9LCB7IH0gfTsKKyAgICBSZWdpc3RyYWJsZURvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1Rv
QmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0sIHsgfSwgeyB9fTsKICAgICB1cGRhdGVDb29r
aWVCbG9ja2luZ0ZvckRvbWFpbnMoZG9tYWluc1RvQmxvY2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CiB9CiAKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXI8dgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNG
b3IsIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IsIGRvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uQXNGaXJzdFBhcnR5IH07CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tp
ZXNGb3IgZG9tYWluc1RvQmxvY2sgeyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3Is
IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IsIGRvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uQXNGaXJzdFBhcnR5LCB7IH0gfTsKIAogICAgIGlmIChkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkg
JiYgKCFkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpIHx8ICFkb21h
aW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmlzRW1wdHkoKSkpCiAgICAgICAgIGRlYnVnTG9n
RG9tYWluc0luQmF0Y2hlcygiQXBwbHlpbmcgY3Jvc3Mtc2l0ZSB0cmFja2luZyByZXN0cmljdGlv
bnMiLCBkb21haW5zVG9CbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCmluZGV4IGQ1YTk2NTI1Y2JhZTZkZWE3NzMwYzJlOTQyN2M1NDlmZDE2
YjZkMTcuLmJhNDM0NzdmZDEyZDlmNzc0MzUzMWM3M2ZiZDFjYzYwYzk2NmNiOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC00NzAsNyAr
NDcwLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzRXBoZW1lcmFsKGNvbnN0IFJlZ2lzdHIKIHsKICAgICBBU1NFUlQoaXNFcGhlbWVy
YWwoKSk7CiAKLSAgICBpZiAoIW1fbmV0d29ya1Nlc3Npb24gfHwgIW1fZG9tYWluc1dpdGhFcGhl
bWVyYWxVc2VySW50ZXJhY3Rpb24uY29udGFpbnMoc3ViRnJhbWVEb21haW4pKQorICAgIGlmICgh
bV9uZXR3b3JrU2Vzc2lvbiB8fCAoIW1fZG9tYWluc1dpdGhFcGhlbWVyYWxVc2VySW50ZXJhY3Rp
b24uY29udGFpbnMoc3ViRnJhbWVEb21haW4pICYmICFOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNh
blJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRl
cmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKSkKICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHsgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBzY29wZSwgdG9wRnJhbWVEb21haW4sIHN1YkZyYW1l
RG9tYWluIH0pOwogCiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gcmVxdWVzdENv
bmZpcm1hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCB3ZWJQ
YWdlSUQsIHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIG11dGFibGUgewpAQCAtMTI1Nyw2ICsxMjU3
LDIzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsVXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yCiAgICAgICAgICAgICBtX2RvbWFpbnNXaXRo
VXNlckludGVyYWN0aW9uUXVpcmsgPSBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvblF1aXJrOwog
ICAgICAgICAgICAgbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXRE
b21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvblF1aXJr
KSwgMCk7CiAgICAgICAgIH0KKworICAgICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBS
ZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7CisgICAgICAg
IGZvciAoYXV0byYgdG9wRG9tYWluIDogZG9tYWluc1RvQmxvY2suZG9tYWluc1dpdGhTdG9yYWdl
QWNjZXNzLmtleXMoKSkgeworICAgICAgICAgICAgYXV0byBsb2dpbkRvbWFpbiA9IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KHRvcERvbWFp
bik7CisgICAgICAgICAgICBpZiAobG9naW5Eb21haW4gJiYgdG9wRG9tYWluID09IGxvZ2luRG9t
YWluKQorICAgICAgICAgICAgICAgIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrLmFkZCh0
b3BEb21haW4sICpsb2dpbkRvbWFpbik7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9kb21h
aW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyayAhPSBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWly
aykgeworICAgICAgICAgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKSkKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldERv
bWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJr
KTsKKyAgICAgICAgICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6U2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKGRvbWFpbnNXaXRo
U3RvcmFnZUFjY2Vzc1F1aXJrKSwgW3RoaXMsIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJr
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9kb21haW5zV2l0aFN0b3JhZ2VB
Y2Nlc3NRdWlyayA9IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAppbmRleCAyMTNjOGQwZWQwYTRkZGVmYzM5YjgwNDJlMDU4ZjgwMjZhZmI2ODU0Li5kMmFkYjY5
MmI0YzhhNDVlMWEwMjllZmUyMjY5ZGU4OWQ1YWQwNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC03Miw3ICs3Miw4IEBAIHN0cnVjdCBSZWdp
c3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3I7CiAgICAg
VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0J1dEtlZXBD
b29raWVzRm9yOwogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHk7Ci0gICAgUmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBkb21haW5z
VG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0Jsb2Nr
QnV0S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uQXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dp
dGhTdG9yYWdlQWNjZXNzOworICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9y
IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9tYWluc1RvQmxvY2tBbmREZWxldGVD
b29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9y
Lmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eS5p
c29sYXRlZENvcHkoKSwgZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzIH07IH0KIH07CiBzdHJ1Y3Qg
UmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgewogICAg
IFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxsQ29v
a2llc0ZvcjsKQEAgLTMzMCw2ICszMzEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhFcGhlbWVyYWxVc2VySW50ZXJhY3Rpb247CiAKICAg
ICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
UXVpcms7CisgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+
IG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7CiAKICAgICBib29sIG1faGFzU2NoZWR1
bGVkUHJvY2Vzc1N0YXRzIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggZTYyNjM0MjQ0ZTgxYTll
YzVlNzY3Y2I3MmFmMDcxZWRlMzVkZjk1My4uYTI4Y2IzOTEyZWNiZTQ1YWU1ZTdmMWRhZTFmZGY3
ZDA0ZjM0YjMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNz
RGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC00OSw2ICs0OSw4IEBAIHN0cnVjdCBXZWJQcm9jZXNz
RGF0YVN0b3JlUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OjpBbGwgfTsKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNz
UXVpcms7CisKICNlbmRpZgogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQg
eyBmYWxzZSB9OwogCkBAIC03NSw2ICs3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOwogICAgIGVuY29kZXIgPDwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247Cisg
ICAgZW5jb2RlciA8PCBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKICNlbmRpZgogICAg
IGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiB9CkBAIC0xNTEsNiAr
MTU0LDExIEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgZGVjb2RlciA+PiBkb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbjsKICAgICBpZiAoIWRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPEhhc2hN
YXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Pj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7CisgICAgZGVjb2RlciA+PiBkb21haW5z
V2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKKyAgICBpZiAoIWRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vz
c1F1aXJrKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBib29s
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZmFsc2U7CkBAIC0xNzQsNiArMTgyLDcg
QEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgICAgICAqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwKICAgICAgICAg
V1RGTW92ZSgqZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pLAorICAgICAgICBXVEZNb3ZlKCpk
b21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyayksCiAjZW5kaWYKICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNmVlMjZkMDQ2
YjBiMjE4ODcwNzNlNmVlNzM0OTg0M2RhZDMzNWFmYS4uZTYyNWYwOGJlMjk1MzVlZTRiNDRhN2Q5
MDZiNGRlMmZkYTJiODYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjY1LDExICsxMjY1LDIxIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCBzZXNzCiB7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhz
ZXNzaW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpCiB7CiAgICAgZm9yIChh
dXRvKiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHsgZG9tYWlucyB9KTsKIH0KKwordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreyAgICAKKyAgICBhdXRvIGNhbGxi
YWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICAKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViUHJv
Y2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+c2V0RG9t
YWluc1dpdGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJh
YmxlRG9tYWluPiB7IGRvbWFpbnMgfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKK30KKwog
I2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2V0QWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlKGJvb2wgZGVidWdN
b2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAppbmRleCBkMDMwNDNmNzhkMDIxMzJmNDM5MzExZDI2MjdiMDhjM2M3ZGFh
ZDIyLi43MTMzN2I2ZTlkZjA1OGJlMWZlNmIzMzE5YmI1OWZiN2EzNWI0M2IzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aApAQCAtMjAwLDYgKzIwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpcnN0UGFydHlIb3N0
Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlIb3N0LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgY25hbWVEb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5G
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXREb21haW5zV2l0
aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsK
KyAgICB2b2lkIHNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmli
dXRpb25EZWJ1Z01vZGUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MmFlYWZmMzRjN2E4MGUzOWMxYWMyZDMzZjdjNGExMTUyZDE4OGQ3NC4uNzhkNmJmNjRhNzNmZTdm
Yjg3MTYxODZlOWE5OGZhZWZkNzJhMDhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNDgsNiArNDgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2Fj
eVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nl
c3NGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAgICAgRGlkQ29t
bWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICBTZXREb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
KQorICAgIFNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgLT4gKCkg
QXN5bmMKICNlbmRpZgogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgQ29udGVu
dEV4dGVuc2lvblJ1bGVzKFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBp
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IGUwNDUxZmI0OGIyZDI3NzgwYTFhZGU5Y2YzZDEyZjY2YjRlNDRlNGIuLjc0MjEyMTVmYTYy
YTJjNDQwNDM2MjBkMDA5MWY5MmUwNGMyYzVlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTczNCw2ICs3MzQsNyBAQCBXZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVycyBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnMoV2ViUAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIHdl
YnNpdGVEYXRhU3RvcmUudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpLAogICAgICAgICBt
X2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uLAorICAgICAgICBtX2RvbWFpbnNXaXRoU3RvcmFn
ZUFjY2Vzc1F1aXJrLAogI2VuZGlmCiAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUucmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoKQogICAgIH07CkBAIC0xOTg1LDYgKzE5ODYsMTcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZUQKICAgICBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uID0g
V1RGTW92ZShkb21haW5zKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG9tYWluc1dp
dGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9t
YWluPiYmIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sgICAgCisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICBmb3IgKGF1
dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKKyAgICAgICAgcHJvY2Vzcy0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3Mo
ZG9tYWlucyksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisKKyAgICBmb3IgKGF1dG8mIHRv
cERvbWFpbiA6IGRvbWFpbnMua2V5cygpKQorICAgICAgICBtX2RvbWFpbnNXaXRoU3RvcmFnZUFj
Y2Vzc1F1aXJrLmFkZCh0b3BEb21haW4sIGRvbWFpbnMuZ2V0KHRvcERvbWFpbikpOworfQorCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3Rpbmco
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAppbmRleCA0ZTJlOWE1MjNlNDZlZTQ0NzQ3Y2UzNTAyYWU5NTBlNThmOTk1MDJl
Li40ZDJjYjViNzZmZTJkNTYxZWUyYzNjNDk1OGQ3N2EyMzIyOTFlY2ExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgc2V0RG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4mJik7CisgICAgdm9pZCBzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZWVkUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5
RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2VuZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhSW1t
ZWRpYXRlbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtNzY5LDYg
Kzc3MCw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhV
c2VySW50ZXJhY3Rpb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVp
cms7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmlu
ZGV4IDQ3NzI3YzMwNGZlZDViMGVhYWQwMjMyYjJkN2U0YjliNWMzMDUxNzguLmRkNWRhNGZhMDAx
MTE0M2FmYzRhZTQ2ODhlZTFjYjJhZTdmM2U2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9h
ZE9ic2VydmVyLmNwcApAQCAtNDE4LDYgKzQxOCwyNCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmdGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxl
RAogICAgICAgICBtX25vdGlmaWNhdGlvblRpbWVyLnN0b3AoKTsKIH0KIAorYm9vbCBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6aGFzU3RvcmFnZUFjY2Vzc0ZvclF1aXJrKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BEb21haW4p
IGNvbnN0Cit7CisgICAgYXV0byBpdCA9IG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzLmZpbmQo
dG9wRG9tYWluKTsKKworICAgIGlmIChpdCAhPSBtX2RvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcy5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZSA9PSBzdWJEb21haW47CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldERvbWFpbnNX
aXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURv
bWFpbj4mJiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgZm9yIChhdXRvJiB0b3BEb21haW4gOiBkb21haW5zLmtleXMoKSkKKyAg
ICAgICAgbV9kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MuYWRkKHRvcERvbWFpbiwgZG9tYWlucy5n
ZXQodG9wRG9tYWluKSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGRjYzFiYWIzOWNkNDgz
YjM4NWExZWNmMGU0OGI1M2IyZGU3YTBmYWEuLjYwZTU3MWJiOTM1MTIzN2JmMDg1NjJjNTRkNDBh
ZDEwY2VhMTMxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC02Myw3
ICs2MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIW1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQogCiAgICAgdm9p
ZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiYmIGRvbWFpbnMpIGZpbmFsIHsgbV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
biA9IFdURk1vdmUoZG9tYWlucyk7IH0KKyAgICB2b2lkIHNldERvbWFpbnNXaXRoU3RvcmFnZUFj
Y2VzcyhIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICBi
b29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvclF1aXJrKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZvaWQgc2NoZWR1bGVO
b3RpZmljYXRpb25JZk5lZWRlZCgpOwpAQCAtODEsNiArODQsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OlRpbWVyIG1fbm90aWZpY2F0aW9uVGltZXI7CiAKICAgICBIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBtX2RvbWFpbnNXaXRoU3RvcmFnZUFjY2VzczsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICB1aW50NjRfdCBtX2xvZ2dpbmdDb3VudGVyIHsgMCB9OwogICAgIHN0YXRpYyBib29s
IHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCBkZmE1N2M2NTVhZGE3Y2Y5NzE4OWI3NTdjNTlhYTkwMTk1MGFhOWU4Li5m
NTYwZTlhOTZiMmU2NTQxYmU4OWNlOTE3Nzc2NzY2MTZiYjVjYTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC01MjgsNiArNTI4LDggQEAgdm9pZCBXZWJQcm9j
ZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVycyYmIHAKICAgICAgICAgaWYgKCFSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkSWZF
eGlzdHMoKSkKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5l
dyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcihwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0VwaGVtZXJh
bCgpID8gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6
IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwogICAg
ICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0RG9tYWluc1dpdGhVc2VySW50
ZXJhY3Rpb24oV1RGTW92ZShwYXJhbWV0ZXJzLmRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKSk7
CisgICAgICAgIGlmICghcGFyYW1ldGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAg
ICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXREb21haW5zV2l0aFN0b3Jh
Z2VBY2Nlc3MoV1RGTW92ZShwYXJhbWV0ZXJzLmRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJr
KSwgW10geyB9KTsKICAgICB9CiAgICAgCiAjZW5kaWYKQEAgLTIwMDYsNiArMjAwOCwxMSBAQCB2
b2lkIFdlYlByb2Nlc3M6OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haQogICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQo
KS5zZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihXVEZNb3ZlKGRvbWFpbnMpKTsKIH0KIAor
dm9pZCBXZWJQcm9jZXNzOjpzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5zZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShkb21h
aW5zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdlYlByb2Nlc3M6
OnNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVkaWF0ZWx5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkKCkudXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBl
ODk0OGU5MTdjZTI5NTQ3ZTRlMDE3YTE1ZTRhMjAwZGYxMzk4MTczLi41ODE4NWFkMTQ4ODZlNzU2
M2MwMTdmZDQ1NTlkOTM3MThmNzA3OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTQ5Miw2ICs0OTIsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
KFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKKyAgICB2b2lkIHNldERvbWFpbnNX
aXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVkaWF0ZWx5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDk2YzlkYWMxMzJkOGQzY2M0
MWZkNDUxNTYwOGZkZjc5MGNiNTZkLi44NTEzMjhhMTBkMmFiNmVhNjMwOWUxYjUyZDJhMjllMmJj
MzNkOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMTY1LDYgKzE2NSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgU2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NG
b3JUZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2No
ZWR1bGVOb3RpZmljYXRpb24pIC0+ICgpIEFzeW5jCiAgICAgU2V0VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0RG9tYWluc1dpdGhVc2VySW50
ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykKKyAg
ICBTZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpIC0+ICgpIEFzeW5j
CiAgICAgU2VuZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhSW1tZWRpYXRlbHkoKSAtPiAoKSBB
c3luYwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413864</attachid>
            <date>2020-11-11 14:11:53 -0800</date>
            <delta_ts>2020-11-11 17:46:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218778-20201111141152.patch</filename>
            <type>text/plain</type>
            <size>48115</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc4ZGNiMjQxYmZiNzVh
MWZjNGI5MWEwMDM1NWQ0MGI3YzJmNGE2OS4uYWVlNGRlMWE3ZWMxMmRlZjc1NGQ2NGMxMzE5NGQw
YTdjNmVlMzdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTExLTEwICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbid0IGxv
Z2luIHRvIE1pY3Jvc29mdCBUZWFtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4Nzc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjMzMTU2OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlz
IGEgdGVtcG9yYXJ5IHF1aXJrIHRvIGFzc2lzdCBhIGhpZ2gtdHJhZmZpYyB3ZWJzaXRlIHdoaWxl
IHRoZXkKKyAgICAgICAgY29tcGxldGUgdGhlIGxhcmdlIHRhc2sgb2YgbWlncmF0aW5nIGF3YXkg
ZnJvbSBsb2dpbiBmbG93cyB0aGF0CisgICAgICAgIHJlcXVpcmUgdGhpcmQgcGFydHkgY29va2ll
cy4gVGhpcyBxdWlyayB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUgc2l0ZQorICAgICAgICBpcyB1
cGRhdGVkLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJrIHRvIGNhbGwgdGhlIFN0b3JhZ2UgQWNj
ZXNzIEFQSSBvbiBiZWhhbGYgb2YgTWljcm9zb2Z0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
c2l0ZS1zcGVjaWZpYyBxdWlyay4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudCk6CisgICAgICAgIFBhc3Mg
YWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGFibGUgdG8gZGlzcGF0Y2ggYSBzeW50aGV0aWMg
Y2xpY2sKKyAgICAgICAgaWYgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZC4KKworICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aGFzU3RvcmFnZUFjY2Vzc0ZvclF1aXJrIGNv
bnN0KToKKyAgICAgICAgU3RvcmUgZG9tYWlucyBpbiB0aGUgd2ViIHByb2Nlc3MgdG8gYXZvaWQg
YXN5bmMgY2FsbHMgdG8gdGhlIG5ldHdvcmsKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAo
V2ViQ29yZTo6aXNNaWNyb3NvZnRMb2dpbkVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvUXVpcmtz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFj
Y2Vzc1F1aXJrIGNvbnN0KToKKyAgICAgICAgVGhpcyBpcyB0aGUgcXVpcmsuCisKKyAgICAgICAg
KiBwYWdlL1F1aXJrcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFF1aXJrUGFpclN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3Zl
QWxsU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VBY2Nlc3NRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0
UHJpb3JVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpsb2dpbkRvbWFpbkZvckZpcnN0UGFydHkpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgIEluIG9yZGVyIGZvciB0aGUg
dXNlciB0byBzdGF5IGxvZ2dlZCBpbiBiZXR3ZWVuIHNlc3Npb25zLCB3ZSBzaG91bGQKKyAgICAg
ICAgdXBkYXRlIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBncmFudCBzdG9yYWdlIGFjY2VzcyBi
YXNlZCBvbiB2YWx1ZXMKKyAgICAgICAgc3RvcmVkIGluIHRoZSBJVFAgZGF0YWJhc2UgZm9yIHF1
aXJrIGRvbWFpbnMuCisKIDIwMjAtMTEtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNjkyMjcpIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZmVycmVyLXRvcGxldmVs
LXNjcmlwdC1mZXRjaC5odHRwcy5odG1sIGlzIGEgZmxha3kgY3Jhc2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWYy
ZGQ0Nzg0NTdkZDUyZDgxMGQzY2U0ZGQxYjhkNGVlMDgyMzI5MC4uODZmYWQ3NzJkNjQ2N2M1NGRk
ZjRjM2U2MGE4ODQxZDRiYjUyYzQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAyMC0x
MS0xMCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBDYW4ndCBsb2dpbiB0byBNaWNyb3NvZnQgVGVhbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzYzMzE1Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBhIHRlbXBvcmFyeSBxdWlyayB0byBhc3Npc3QgYSBoaWdoLXRyYWZmaWMgd2Vi
c2l0ZSB3aGlsZSB0aGV5CisgICAgICAgIGNvbXBsZXRlIHRoZSBsYXJnZSB0YXNrIG9mIG1pZ3Jh
dGluZyBhd2F5IGZyb20gbG9naW4gZmxvd3MgdGhhdAorICAgICAgICByZXF1aXJlIHRoaXJkIHBh
cnR5IGNvb2tpZXMuIFRoaXMgcXVpcmsgd2lsbCBiZSByZW1vdmVkIHdoZW4gdGhlIHNpdGUKKyAg
ICAgICAgaXMgdXBkYXRlZC4KKworICAgICAgICBDcmVhdGUgYSBxdWlyayB0byBjYWxsIHRoZSBT
dG9yYWdlIEFjY2VzcyBBUEkgb24gYmVoYWxmIG9mIE1pY3Jvc29mdC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKToKKyAg
ICAgICAgUmVsYXggdGhlIHJlcXVpcmVtZW50IGZvciB1c2VyIGludGVyYWN0aW9uIGZvciBhIHNw
ZWNpZmljIHRoaXJkIHBhcnR5CisgICAgICAgIG5lZWRpbmcgY29va2llcyBmb3IgYXV0aGVudGlj
YXRpb24gcHVycG9zZXMuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyk6CisgICAgICAgIFJlbGF4IHRoZSBy
ZXF1aXJlbWVudCBmb3IgdXNlciBpbnRlcmFjdGlvbiBmb3IgYSBzcGVjaWZpYyB0aGlyZCBwYXJ0
eQorICAgICAgICBuZWVkaW5nIGNvb2tpZXMgZm9yIGF1dGhlbnRpY2F0aW9uIHB1cnBvc2VzLgor
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpk
b21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwpOgorICAgICAgICBSZWxheCB1
c2VyIGludGVyYWN0aW9uIGZvciByZWFzb25zIGFib3ZlLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNU
b0Jsb2NrQ29va2llc0ZvckhhbmRsZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6
OlJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldERvbWFpbnNXaXRoU3Rv
cmFnZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERvbWFpbnNXaXRoU3Rv
cmFnZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNTdG9yYWdl
QWNjZXNzRm9yUXVpcmsgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICBBZGQgcXVpcmsnZCBk
b21haW5zIHRvIGhhdmUgcGFnZSBsZXZlbCBzdG9yYWdlIGFjY2VzcyB0byBiZSBhYmxlIHRvCisg
ICAgICAgIHVzZSBkb2N1bWVudC5jb29raWUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgIEZvcndhcmQgZG9tYWlucyB3aXRoIHRoZSBzdG9yYWdlIGFjY2VzcyBxdWlyayB0byB0
aGUgd2ViIHByb2Nlc3MgdG8KKyAgICAgICAgYXZvaWQgYW4gYXN5bmMgY2FsbCB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgorCiAyMDIwLTExLTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBndWFyZCBVSVNjcmliYmxlSW50ZXJhY3Rpb24gY2xhc3MgcHJvcGVy
dHkgb2JzZXJ2aW5nIGJlaGluZCBhIExPQSBjaGVjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDhkNjcyNzU5MmExNTk0NjIwOWFhZDhlNGY2MzY4MDhhZGQ2ZGQxZWIuLjI2YjQ2OTExN2E5MDFh
NjdhZDMyMGM4OWE0ZmM0MjAwY2QxNzNlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTM4
OSw3ICszODksNyBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0CiAgICAgaWYgKGRpc3BhdGNoUG9p
bnRlckV2ZW50SWZOZWVkZWQoKnRoaXMsIG1vdXNlRXZlbnQuZ2V0KCksIHBsYXRmb3JtRXZlbnQs
IGRpZE5vdFN3YWxsb3dFdmVudCkgPT0gU2hvdWxkSWdub3JlTW91c2VFdmVudDo6WWVzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0
OjpTaG91bGRDYW5jZWxFdmVudCA9PSBkb2N1bWVudCgpLnF1aXJrcygpLnRyaWdnZXJPcHRpb25h
bFN0b3JhZ2VBY2Nlc3NRdWlyaygqdGhpcywgZXZlbnRUeXBlKSkKKyAgICBpZiAoUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudCA9PSBkb2N1bWVudCgpLnF1aXJr
cygpLnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyaygqdGhpcywgcGxhdGZvcm1FdmVu
dCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJlbGF0ZWRUYXJnZXQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBBU1NFUlQoIW1vdXNlRXZlbnQtPnRhcmdldCgpIHx8IG1vdXNlRXZlbnQtPnRh
cmdldCgpICE9IHJlbGF0ZWRUYXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuaAppbmRleCAzZTljMGY4NGYyNWNmZDFhYjAwOWJlN2MyYWNlMjAwZTRh
NTc5N2VjLi5iNzZkODIwNWY5ZmJmNDdhNTViMTdiNDFhOGYyZWIyZTQ0NGNlYzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtNjUsNiArNjUs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1N0YXRpc3RpY3MoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwg
UmVnaXN0cmFibGVEb21haW4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CisgICAgdmlydHVhbCBib29sIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JRdWlyayhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIH07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKaW5kZXggM2M2
ZjM1NzZkODEyODMwMmEwNzYzYTU5YjU4OGYwNTE5ZDc1ODg2Yi4uNGQzZDI3MzEyMTZmOWQyYzY3
ZTRkZjg2YjBhZjE4ODA0YTcyYmYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9R
dWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcApAQCAtNDIsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkxheW91dFVu
aXQuaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5oIgpA
QCAtOTQzLDkgKzk0NCwxOCBAQCBzdGF0aWMgYm9vbCBpc0tpbmphTG9naW5BdmF0YXJFbGVtZW50
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK3N0YXRp
YyBib29sIGlzTWljcm9zb2Z0TG9naW5FbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCit7
CisgICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFtZXMoKTsKKyAgICByZXR1cm4g
Y2xhc3NOYW1lcy5jb250YWlucygiZ2x5cGhfc2lnbkluX2NpcmNsZSIpIHx8IGNsYXNzTmFtZXMu
Y29udGFpbnMoIm1lY3RybF9oZWFkZXJ0ZXh0IikgfHwgY2xhc3NOYW1lcy5jb250YWlucygibWVj
dHJsX2hlYWRlciIpOworfQogI2VuZGlmCiAKLVF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBR
dWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhjb25zdCBFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0CitRdWlya3M6OlN0b3Jh
Z2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmso
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybUV2ZW50
LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGludCBkZXRhaWwsIEVsZW1lbnQqIHJlbGF0
ZWRUYXJnZXQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBpZiAoIW5lZWRzUXVpcmtzKCkpCkBAIC05NzIsNyArOTgyLDkgQEAgUXVpcmtzOjpTdG9y
YWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJr
KGNvbnN0IEVsZW0KICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVnaXN0cmFibGVEb21haW4+
IGtpbmphRG9tYWluIHsga2luamFVUkwgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZWdpc3RyYWJsZURvbWFpbj4geW91VHViZURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInlvdXR1YmUuY29tIl9zKTsK
LSAgICAKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWdpc3RyYWJsZURvbWFpbj4gbWlj
cm9zb2Z0RG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdp
c3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0LmNvbSJfcyk7CisKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBsb2dpblBvcHVwV2luZG93RmVhdHVyZVN0cmluZyA9ICJ0b29s
YmFyPW5vLGxvY2F0aW9uPXllcyxkaXJlY3Rvcmllcz1ubyxzdGF0dXM9bm8sbWVudWJhcj1ubyxz
Y3JvbGxiYXJzPXllcyxyZXNpemFibGU9eWVzLGNvcHloaXN0b3J5PW5vLHdpZHRoPTU5OSxoZWln
aHQ9NjAwLHRvcD00MjAsbGVmdD05ODAuNSJfczsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxVc2VyU2NyaXB0PiBraW5qYUxvZ2luVXNlclNjcmlwdCB7ICJmdW5jdGlvbiB0cmlnZ2VyTG9n
aW5Gb3JtKCkgeyBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCdqc19oZWFkZXItdXNlcmJ1dHRvbicpOyBpZiAoZWxlbWVudHMgJiYgZWxlbWVudHNbMF0pIHsg
ZWxlbWVudHNbMF0uY2xpY2soKTsgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7IH0gfSBsZXQgaW50
ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0cmlnZ2VyTG9naW5Gb3JtLCAyMDApOyIsIFVSTChhYm91dEJs
YW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZ
ZXMgfTsKQEAgLTEwMTUsMTAgKzEwMjcsMzMgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0
IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKGNvbnN0IEVsZW0KICAg
ICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRD
YW5jZWxFdmVudDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIC8vIE1pY3Jv
c29mdCBUZWFtcyBsb2dpbiBjYXNlLgorICAgICAgICAvLyBGSVhNRSgyMTg3NzkpOiBSZW1vdmUg
dGhpcyBxdWlyayBvbmNlIG1pY3Jvc29mdC5jb20gY29tcGxldGVzIHRoZWlyIGxvZ2luIGZsb3cg
cmVkZXNpZ24uCisgICAgICAgIGlmIChkb21haW4gPT0gbWljcm9zb2Z0RG9tYWluICYmIGlzTWlj
cm9zb2Z0TG9naW5FbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBhdXRvIHRvcERvbWFp
biA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChtX2RvY3VtZW50
LT50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKTsKKyAgICAgICAgICAgIEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNJbk5lZWRPZlN0b3JhZ2VBY2Nlc3M7Cisg
ICAgICAgICAgICBpZiAoYXV0byBsb2dpbkRvbWFpbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
bG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KHRvcERvbWFpbikpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIVJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNTdG9yYWdlQWNjZXNzRm9yUXVp
cmsoKmxvZ2luRG9tYWluLCB0b3BEb21haW4pKSB7CisgICAgICAgICAgICAgICAgICAgIERvY3Vt
ZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJr
KCptX2RvY3VtZW50LCBXVEZNb3ZlKCpsb2dpbkRvbWFpbiksIFt0b3BEb21haW4gPSBXVEZNb3Zl
KHRvcERvbWFpbiksIGxvZ2luRG9tYWluLCAmZWxlbWVudCwgcGxhdGZvcm1FdmVudCwgZXZlbnRU
eXBlLCBkZXRhaWwsIHJlbGF0ZWRUYXJnZXRdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHN0b3Jh
Z2VBY2Nlc3NHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dG9yYWdlQWNjZXNzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgp
LnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyh7eyB0b3BEb21haW4sICpsb2dpbkRvbWFpbiB9
fSwgWyZlbGVtZW50LCBwbGF0Zm9ybUV2ZW50LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRh
cmdldF0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmRpc3BhdGNo
TW91c2VFdmVudChwbGF0Zm9ybUV2ZW50LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRhcmdl
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVudDsKKyAgICAgICAgfQogICAg
IH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOworICAgIFVOVVNFRF9QQVJBTShw
bGF0Zm9ybUV2ZW50KTsKICAgICBVTlVTRURfUEFSQU0oZXZlbnRUeXBlKTsKKyAgICBVTlVTRURf
UEFSQU0oZGV0YWlsKTsKKyAgICBVTlVTRURfUEFSQU0ocmVsYXRlZFRhcmdldCk7CiAjZW5kaWYK
ICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxF
dmVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCmluZGV4IDJmNTQwZWZiYmEyNjZlMDIzODA1ZTI5OTkz
NWM4OWIxZTc5YWViZGUuLjEyYTJmODIyMTMyOGJkOTVhMzA3ZmM1NGE1MDE5ODkyZDIyYzM4NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9RdWlya3MuaApAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCisjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzcsNiArMzksNyBAQCBjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIEhU
TUxFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIExheW91dFVuaXQ7Citj
bGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAKIGNsYXNzIFF1aXJrcyB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUXVpcmtzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMTIsNyAr
MTE1LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQXZvaWRQYXN0aW5nSW1hZ2VzQXNXZWJD
b250ZW50KCkgY29uc3Q7CiAKICAgICBlbnVtIFN0b3JhZ2VBY2Nlc3NSZXN1bHQgOiBib29sIHsg
U2hvdWxkTm90Q2FuY2VsRXZlbnQsIFNob3VsZENhbmNlbEV2ZW50IH07Ci0gICAgU3RvcmFnZUFj
Y2Vzc1Jlc3VsdCB0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoY29uc3QgRWxlbWVu
dCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CisgICAgU3RvcmFnZUFjY2Vz
c1Jlc3VsdCB0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoRWxlbWVudCYsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgaW50LCBF
bGVtZW50KikgY29uc3Q7CiAKICAgICBib29sIG5lZWRzVlA5RnVsbFJhbmdlRmxhZ1F1aXJrKCkg
Y29uc3Q7CiAgICAgYm9vbCBuZWVkc0hEUlBpeGVsRGVwdGhRdWlyaygpIGNvbnN0OwpAQCAtMTU0
LDQgKzE1Nyw0IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX25lZWRz
QmxhY2tGdWxsc2NyZWVuQmFja2dyb3VuZFF1aXJrOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDg0NjE4Y2U0MTE5MTIxYjdkYTk1NTg3MDhh
MmY5NGIxZTRlYmU0OWEuLmNhZWNhZmUxMjhiMTdmYWVkMWExYWE0NGM0OWVlYThjNjYzNTVkOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTIwOSw2ICsyMDksMTggQEAgdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGNv
bnN0IFZlY3QKICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0Zp
cnN0UGFydHkuYWRkKGRvbWFpbnMuYmVnaW4oKSwgZG9tYWlucy5lbmQoKSk7CiB9CiAKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyayhj
b25zdCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFp
bnMpCit7CisgICAgbV9xdWlya1BhaXJzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuY2xlYXIoKTsKKyAg
ICBmb3IgKGF1dG8mIHRvcERvbWFpbiA6IGRvbWFpbnMua2V5cygpKQorICAgICAgICBncmFudFF1
aXJrUGFpclN0b3JhZ2VBY2Nlc3ModG9wRG9tYWluLCBkb21haW5zLmdldCh0b3BEb21haW4pKTsK
K30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdyYW50UXVpcmtQYWlyU3RvcmFnZUFj
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluKQoreworICAgIG1fcXVpcmtQYWlyc0dyYW50
ZWRTdG9yYWdlQWNjZXNzLmFkZChmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbik7Cit9
CisKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CkBAIC0yMjcs
NiArMjM5LDEwIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvCiAgICAgICAgICAgICBpZiAoaXQg
IT0gcGFnZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmVuZCgpICYmIGl0LT52YWx1ZSA9PSByZXNv
dXJjZURvbWFpbikKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorCisg
ICAgICAgIGF1dG8gaXQgPSBtX3F1aXJrUGFpcnNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKGZp
cnN0UGFydHlEb21haW4pOworICAgICAgICBpZiAoaXQgIT0gbV9xdWlya1BhaXJzR3JhbnRlZFN0
b3JhZ2VBY2Nlc3MuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlc291cmNlRG9tYWluKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQ0LDYg
KzI2MCwxMSBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3QKICAgICAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7Cisg
ICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGlu
Z0RvbWFpbihmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbikpIHsKKyAgICAgICAgZ3Jh
bnRRdWlya1BhaXJTdG9yYWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWlu
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICghZnJhbWVJRCkgewogICAgICAg
ICBpZiAoZmlyc3RQYXJ0eURvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0yOTcsNiArMzE4LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZUFsbFN0
b3JhZ2VBY2Nlc3MoKQogewogICAgIG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5jbGVhcigp
OwogICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuY2xlYXIoKTsKKyAgICBtX3F1aXJr
UGFpcnNHcmFudGVkU3RvcmFnZUFjY2Vzcy5jbGVhcigpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25k
cyBzZWNvbmRzKQpAQCAtMzUxLDYgKzM3MywzNiBAQCBPcHRpb25hbDxTZWNvbmRzPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEbwog
CiAgICAgcmV0dXJuIG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXM7CiB9CisKK0hhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiYgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlQWNjZXNzUXVpcmtzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+PiBtYXAgPSBbXSB7
CisgICAgICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiBt
YXA7CisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0LmNvbSIpLAorICAgICAgICAgICAg
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0
cmluZygibWljcm9zb2Z0b25saW5lLmNvbSJfcykpOworICAgICAgICByZXR1cm4gbWFwOworICAg
IH0oKTsKKyAgICByZXR1cm4gbWFwLmdldCgpOworfQorCitib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6bG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkRvbWFpbikK
K3sKKyAgICBhdXRvIGxvZ2luRG9tYWluID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpsb2dpbkRvbWFpbkZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eSk7CisgICAgcmV0dXJuIGxvZ2lu
RG9tYWluICYmIHN1YkRvbWFpbiA9PSBsb2dpbkRvbWFpbjsKK30KKworYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhv
dXRQcmlvclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbikKK3sKKyAgICBy
ZXR1cm4gbG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbih0b3BGcmFtZURvbWFpbiwg
c3ViRnJhbWVEb21haW4pOworfQorCitPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbkZvckZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4pCit7CisgICAgYXV0byBpdCA9IHN0b3JhZ2VBY2Nl
c3NRdWlya3MoKS5maW5kKGZpcnN0UGFydHlEb21haW4pOworICAgIGlmIChpdCAhPSBzdG9yYWdl
QWNjZXNzUXVpcmtzKCkuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA1N2ViYTBmYTNiYmM5ZGRiYjQwNjgxMDMx
YjMzNWNlMWFiOGMxMDAyLi5kMWEwMDYyODQ0ODJhNTllZTEyZmU5MDAyMDFiOTBkOWM3YzFmZThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTE5OCw2ICsxOTgsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNG
b3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcihjb25zdCBW
ZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRE
b21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShjb25zdCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREb21haW5zV2l0aFN0
b3JhZ2VBY2Nlc3NRdWlyayhjb25zdCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3Ry
YWJsZURvbWFpbj4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50UXVpcmtQYWlyU3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgUGFnZUlkZW50aWZpZXIpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzKCkgY29uc3Q7CkBAIC0yMTgsNiArMjIwLDExIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlc2V0QXBwQm91bmREb21haW5zKCk7CiAjZW5kaWYKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJs
ZURvbWFpbj4mIHN0b3JhZ2VBY2Nlc3NRdWlya3MoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJp
b3JVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4pOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gbG9naW5Eb21haW5Gb3JG
aXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgbG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkRv
bWFpbik7CisKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBJbmNsdWRl
SFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsK
QEAgLTI3MCw2ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+IG1fcmVnaXN0cmFibGVEb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eTsK
ICAgICBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBIYXNoTWFwPEZyYW1lSWRlbnRpZmllciwgUmVn
aXN0cmFibGVEb21haW4+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwogICAgIEhhc2hN
YXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxl
RG9tYWluPj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UmVnaXN0
cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiBtX3F1aXJrUGFpcnNHcmFudGVkU3RvcmFn
ZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVu
dFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVu
dFNpZGVDb29raWVzU2hvcnQgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNGU3YzYwOTllZDAyZWNjZTJkZDA2YTFk
ZGJmMzcxZjVhMDRjYmQ5MC4uOWQ0NzdjZDUwZDYwYjA1MTUwOWVlZDdlZjVjZGUyOTVhZTMxMmEw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCkBAIC0xMzI0LDcgKzEzMjQsMTAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoc3ViRnJhbWVT
dGF0dXMuZmlyc3QgPT0gQWRkZWRSZWNvcmQ6Ok5vKTsKLSAgICAgICAgQVNTRVJUKGhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6Okxvbmcp
KTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9yVXNl
ckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbikpCisgICAgICAgICAg
ICBBU1NFUlQoaGFzSGFkVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdE
YXRlc1dpbmRvdzo6TG9uZykpOworI2VuZGlmCiAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9u
c2hpcExpc3Qoc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zUXVlcnksIEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+KHsgdG9wRnJhbWVEb21haW4gfSksICpzdWJGcmFtZVN0YXR1cy5z
ZWNvbmQpOwogICAgIH0KIApAQCAtMTM0OCw3ICsxMzUxLDEwIEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZy
YW1lRG9tCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHN1
YkZyYW1lU3RhdHVzLmZpcnN0ID09IEFkZGVkUmVjb3JkOjpObyk7Ci0gICAgICAgIEFTU0VSVCho
YXNIYWRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93
OjpMb25nKSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgaWYgKCFOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQ
cmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKQorICAg
ICAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgT3Bl
cmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsKKyNlbmRpZgogICAgICAgICBBU1NFUlQoaGFzVXNl
ckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdCgqc3ViRnJhbWVTdGF0dXMuc2Vjb25k
LCB0b3BGcmFtZURvbWFpbikgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpOwog
I2VuZGlmCiAgICAgICAgIHNldFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdHJ1ZSwg
V2FsbFRpbWU6Om5vdygpKTsKQEAgLTIwMDMsNyArMjAwOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wCiAgICAgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOwogCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2ll
c0ZvciA9IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpOwotICAgIFJlZ2lz
dHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2NrIHsgcmVnaXN0cmFi
bGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIHsgfSwgeyB9IH07CisgICAgUmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyByZWdpc3Ry
YWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgeyB9LCB7IH0sIHsgfSB9Owog
ICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9jaywgW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIApAQCAtMjAzNiw3ICsyMDQyLDcgQEAgQ29va2llQWNj
ZXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVBY2Nlc3MoY29u
c3QgU3ViUmVzb3VyY2UKICAgICBpZiAoIWFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVu
ZGVyKHRvcEZyYW1lRG9tYWluKSAmJiAhaXNQcmV2YWxlbnQpCiAgICAgICAgIHJldHVybiBDb29r
aWVBY2Nlc3M6OkJhc2VkT25Db29raWVQb2xpY3k7CiAKLSAgICBpZiAoIWhhZFVzZXJJbnRlcmFj
dGlvbikKKyAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YnJlc291
cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbikgJiYgIWhhZFVzZXJJbnRlcmFjdGlvbikKICAgICAg
ICAgcmV0dXJuIENvb2tpZUFjY2Vzczo6Q2Fubm90UmVxdWVzdDsKIAogICAgIHJldHVybiBDb29r
aWVBY2Nlc3M6Ok9ubHlJZkdyYW50ZWQ7CkBAIC0yMTAzLDYgKzIxMDksMjIgQEAgVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9t
YWluc1dpdGhVc2VySW4KICAgICByZXR1cm4gcmVzdWx0czsKIH0KIAorSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoKSBjb25zdAoreworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHJlc3VsdHM7CisgICAgU1FMaXRl
U3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHN1YkZyYW1lRG9tYWluLCBy
ZWdpc3RyYWJsZURvbWFpbiBGUk9NIChTRUxFQ1Qgby5yZWdpc3RyYWJsZURvbWFpbiBhcyBzdWJG
cmFtZURvbWFpbiwgcy50b3BMZXZlbERvbWFpbklEIGFzIHRvcExldmVsRG9tYWluSUQgRlJPTSBP
YnNlcnZlZERvbWFpbnMgYXMgbyBJTk5FUiBKT0lOIFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1l
RG9tYWlucyBhcyBzIFdIRVJFIG8uZG9tYWluSUQgPSBzLmRvbWFpbklEKSBhcyB6IElOTkVSIEpP
SU4gT2JzZXJ2ZWREb21haW5zIE9OIGRvbWFpbklEID0gei50b3BMZXZlbERvbWFpbklEOyJfcyk7
CisKKyAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCisgICAgICAgIHJl
dHVybiByZXN1bHRzOworCisgICAgd2hpbGUgKHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JP
VykKKyAgICAgICAgcmVzdWx0cy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSks
IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpKTsKKworICAgIHJldHVybiByZXN1bHRz
OworfQorCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVD
b29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0yMTEwLDEzICsyMTMy
LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUNv
b2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyCiAgICAgYXV0byBkb21haW5zVG9CbG9ja0Fu
ZERlbGV0ZUNvb2tpZXNGb3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNG
b3IoKTsKICAgICBhdXRvIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IgPSB0aGlzLT5k
b21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCk7CiAgICAgYXV0byBkb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSA9IHRoaXMtPmRvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uQXNGaXJzdFBhcnR5KCk7CisgICAgYXV0byBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MgPSB0
aGlzLT5kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoKTsKIAotICAgIGlmIChkb21haW5zVG9CbG9j
a0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENv
b2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBh
cnR5LmlzRW1wdHkoKSkgeworICAgIGlmIChkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNG
b3IuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgp
ICYmIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5LmlzRW1wdHkoKSAmJiBk
b21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWdpc3RyYWJsZURvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVs
ZXRlQ29va2llc0ZvciwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciwgZG9tYWluc1dp
dGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkgfTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNU
b0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRl
Q29va2llc0ZvciwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciwgZG9tYWluc1dpdGhV
c2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHksIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyB9Owog
CiAgICAgaWYgKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSAmJiAoIWRvbWFpbnNUb0Jsb2NrQW5kRGVs
ZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgfHwgIWRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNG
b3IuaXNFbXB0eSgpKSkKICAgICAgICAgZGVidWdMb2dEb21haW5zSW5CYXRjaGVzKCJBcHBseWlu
ZyBjcm9zcy1zaXRlIHRyYWNraW5nIHJlc3RyaWN0aW9ucyIsIGRvbWFpbnNUb0Jsb2NrKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5k
ZXggZDU1NTIzN2JkZDEyY2RjZGJkMTNjYzExYTBlZjRkNmQ3OTEyYzIwOC4uYTBjYjc2NGJjYmJm
ZWVmM2YxZmYxNGE3NDY5YTBlZTJiOGYwOWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvQmxvY2tBbmREZWxl
dGVDb29raWVzRm9yKCkgY29uc3Q7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21h
aW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCkgY29uc3Q7CiAgICAgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSgpIGNvbnN0
OworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoKSBjb25zdDsKIAogICAgIHN0
cnVjdCBEb21haW5EYXRhIHsKICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IGU0NDU2
MDM1ZTE4MmFhZWI0YWRlMmI4NmRiMWE2OWFiMjg0MTQ4YmMuLjgyMzFhZTRiNzU4N2U4ZWY4OGE5
NTUzNTMyNWJmZmJkMGFmMmQ4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGUKICAgICByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CiAKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVD
b29raWVzRm9yID0gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCk7Ci0gICAg
UmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyByZWdp
c3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgeyB9LCB7IH0gfTsKKyAg
ICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJl
Z2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0sIHsgfSwgeyB9
fTsKICAgICB1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMoZG9tYWluc1RvQmxvY2ssIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVnaXN0cmFi
bGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyBkb21haW5zVG9CbG9j
a0FuZERlbGV0ZUNvb2tpZXNGb3IsIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IsIGRv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5IH07CisgICAgUmVnaXN0cmFibGVE
b21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyBkb21haW5zVG9CbG9ja0Fu
ZERlbGV0ZUNvb2tpZXNGb3IsIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IsIGRvbWFp
bnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5LCB7IH0gfTsKIAogICAgIGlmIChkZWJ1
Z0xvZ2dpbmdFbmFibGVkKCkgJiYgKCFkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3Iu
aXNFbXB0eSgpIHx8ICFkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmlzRW1wdHkoKSkp
CiAgICAgICAgIGRlYnVnTG9nRG9tYWluc0luQmF0Y2hlcygiQXBwbHlpbmcgY3Jvc3Mtc2l0ZSB0
cmFja2luZyByZXN0cmljdGlvbnMiLCBkb21haW5zVG9CbG9jayk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGQ1YTk2NTI1Y2JhZTZkZWE3
NzMwYzJlOTQyN2M1NDlmZDE2YjZkMTcuLjI1M2MxYTVlMWZmNTk5MTdlYTY1ODg0MzljZGNkMGY2
OTFhNzY5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRXBoZW1lcmFsKGNvbnN0IFJlZ2lzdHIKIHsKICAg
ICBBU1NFUlQoaXNFcGhlbWVyYWwoKSk7CiAKLSAgICBpZiAoIW1fbmV0d29ya1Nlc3Npb24gfHwg
IW1fZG9tYWluc1dpdGhFcGhlbWVyYWxVc2VySW50ZXJhY3Rpb24uY29udGFpbnMoc3ViRnJhbWVE
b21haW4pKQorICAgIGlmICghbV9uZXR3b3JrU2Vzc2lvbiB8fCAoIW1fZG9tYWluc1dpdGhFcGhl
bWVyYWxVc2VySW50ZXJhY3Rpb24uY29udGFpbnMoc3ViRnJhbWVEb21haW4pICYmICFOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dp
dGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4p
KSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBzY29wZSwgdG9wRnJh
bWVEb21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwogCiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4gcmVxdWVzdENvbmZpcm1hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9t
YWluLCBmcmFtZUlELCB3ZWJQYWdlSUQsIHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIG11dGFibGUg
ewpAQCAtMTI1Nyw2ICsxMjU3LDIzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpjYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yCiAgICAgICAg
ICAgICBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uUXVpcmsgPSBkb21haW5zV2l0aFVzZXJJ
bnRlcmFjdGlvblF1aXJrOwogICAgICAgICAgICAgbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1By
b2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpTZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvblF1aXJrKSwgMCk7CiAgICAgICAgIH0KKworICAgICAgICBIYXNoTWFwPFJl
Z2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhTdG9yYWdlQWNj
ZXNzUXVpcms7CisgICAgICAgIGZvciAoYXV0byYgZmlyc3RQYXJ0eURvbWFpbiA6IGRvbWFpbnNU
b0Jsb2NrLmRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcy5rZXlzKCkpIHsKKyAgICAgICAgICAgIGF1
dG8gcmVxdWVzdGluZ0RvbWFpbiA9IGRvbWFpbnNUb0Jsb2NrLmRvbWFpbnNXaXRoU3RvcmFnZUFj
Y2Vzcy5nZXQoZmlyc3RQYXJ0eURvbWFpbik7CisgICAgICAgICAgICBpZiAoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKGZpcnN0UGFydHlE
b21haW4sIHJlcXVlc3RpbmdEb21haW4pKQorICAgICAgICAgICAgICAgIGRvbWFpbnNXaXRoU3Rv
cmFnZUFjY2Vzc1F1aXJrLmFkZChmaXJzdFBhcnR5RG9tYWluLCByZXF1ZXN0aW5nRG9tYWluKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChtX2RvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJr
ICE9IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKSB7CisgICAgICAgICAgICBpZiAobV9u
ZXR3b3JrU2Vzc2lvbikgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICAg
ICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVp
cmsoZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspOworICAgICAgICAgICAgICAgIG1fbmV0
d29ya1Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXREb21h
aW5zV2l0aFN0b3JhZ2VBY2Nlc3MoZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspLCBbdGhp
cywgZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmtdICgpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgICAgICBtX2RvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrID0gZG9tYWluc1dpdGhT
dG9yYWdlQWNjZXNzUXVpcms7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDIxM2M4ZDBlZDBhNGRkZWZj
MzliODA0MmUwNThmODAyNmFmYjY4NTQuLmQyYWRiNjkyYjRjOGE0NWUxYTAyOWVmZTIyNjlkZTg5
ZDVhZDA2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTcyLDcgKzcyLDggQEAgc3RydWN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29r
aWVzRm9yIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcjsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmly
c3RQYXJ0eTsKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBpc29sYXRl
ZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zv
ci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc29sYXRl
ZENvcHkoKSwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkuaXNvbGF0ZWRD
b3B5KCkgfTsgfQorICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3M7CisgICAgUmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyBy
ZXR1cm4geyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCks
IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0
aFN0b3JhZ2VBY2Nlc3MgfTsgfQogfTsKIHN0cnVjdCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yOwpAQCAtMzMwLDYgKzMzMSw3
IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0
aEVwaGVtZXJhbFVzZXJJbnRlcmFjdGlvbjsKIAogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25RdWlyazsKKyAgICBIYXNoTWFwPFJlZ2lz
dHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFN0b3JhZ2VBY2Nl
c3NRdWlyazsKIAogICAgIGJvb2wgbV9oYXNTY2hlZHVsZWRQcm9jZXNzU3RhdHMgeyBmYWxzZSB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnMuaAppbmRleCBlNjI2MzQyNDRlODFhOWVjNWU3NjdjYjcyYWYwNzFlZGUzNWRmOTUz
Li5hMjhjYjM5MTJlY2JlNDVhZTVlN2YxZGFlMWZkZjdkMDRmMzRiMzFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAg
LTQ5LDYgKzQ5LDggQEAgc3RydWN0IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNv
cmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OwogICAgIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKKwogI2VuZGlmCiAgICAgYm9v
bCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07CiAKQEAgLTc1LDYgKzc3
LDcgQEAgdm9pZCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICBlbmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgZW5jb2RlciA8
PCBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBlbmNvZGVyIDw8IGRvbWFpbnNXaXRo
U3RvcmFnZUFjY2Vzc1F1aXJrOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZDsKIH0KQEAgLTE1MSw2ICsxNTQsMTEgQEAgT3B0aW9uYWw8V2ViUHJv
Y2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpk
ZWNvZGUoRGUKICAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogICAg
IGlmICghZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nl
c3NRdWlyazsKKyAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrOwor
ICAgIGlmICghZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQgPSBmYWxzZTsKQEAgLTE3NCw2ICsxODIsNyBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0
YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShE
ZQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICp0aGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlLAogICAgICAgICBXVEZNb3ZlKCpkb21haW5zV2l0aFVzZXJJ
bnRlcmFjdGlvbiksCisgICAgICAgIFdURk1vdmUoKmRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1
aXJrKSwKICNlbmRpZgogICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAogICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2ZWUyNmQwNDZiMGIyMTg4NzA3M2U2ZWU3MzQ5ODQzZGFk
MzM1YWZhLi5lNjI1ZjA4YmUyOTUzNWVlNGI0NGE3ZDkwNmI0ZGUyZmRhMmI4NjMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKQEAgLTEyNjUsMTEgKzEyNjUsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3MK
IHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRU
aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+JiYgZG9tYWlucykKIHsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViUHJv
Y2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQogICAgICAgICBwcm9jZXNzUG9vbC0+c2V0RG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4geyBkb21haW5zIH0pOwogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldERvbWFp
bnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJs
ZURvbWFpbj4mJiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7ICAgIAorICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tB
Z2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIAorICAg
IGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xz
KCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5zZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+IHsgZG9tYWlucyB9LCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBZENsaWNr
QXR0cmlidXRpb25EZWJ1Z01vZGUoYm9vbCBkZWJ1Z01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGQwMzA0
M2Y3OGQwMjEzMmY0MzkzMTFkMjYyN2IwOGMzYzdkYWFkMjIuLjcxMzM3YjZlOWRmMDU4YmUxZmU2
YjMzMTliYjU5ZmI3YTM1YjQzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMDAsNiArMjAwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhvc3QsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBjbmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpOworICAgIHZvaWQgc2V0RG9tYWluc1dpdGhT
dG9yYWdlQWNjZXNzKEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2Vu
ZGlmCiAKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyYWVhZmYzNGM3YTgwZTM5YzFhYzJkMzNm
N2M0YTExNTJkMTg4ZDc0Li43OGQ2YmY2NGE3M2ZlN2ZiODcxNjE4NmU5YTk4ZmFlZmQ3MmEwOGZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00OCw2ICs0OCw3IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7
CiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBm
ZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykg
LT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoTWF0Y2hp
bmdEYXRhUmVjb3JkcykgQXN5bmMKICAgICBEaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFU
cmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlEKQogICAgIFNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpCisgICAgU2V0RG9tYWluc1dpdGhTdG9y
YWdlQWNjZXNzKEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSAtPiAoKSBBc3luYwogI2VuZGlmCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKICAgICBDb250ZW50RXh0ZW5zaW9uUnVsZXMoV2ViS2l0OjpV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZTA0NTFmYjQ4YjJkMjc3ODBhMWFk
ZTljZjNkMTJmNjZiNGU0NGU0Yi4uNzQyMTIxNWZhNjJhMmM0NDA0MzYyMGQwMDkxZjkyZTA0YzJj
NWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
NzM0LDYgKzczNCw3IEBAIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nlc3NQ
b29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS50aGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlKCksCiAgICAgICAgIG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rp
b24sCisgICAgICAgIG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmssCiAjZW5kaWYKICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpCiAg
ICAgfTsKQEAgLTE5ODUsNiArMTk4NiwxNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21h
aW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRAogICAg
IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24gPSBXVEZNb3ZlKGRvbWFpbnMpOwogfQogCit2
b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxS
ZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreyAgICAKKyAgICBhdXRvIGNh
bGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3Nlcygp
KQorICAgICAgICBwcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyhkb21haW5zKSwgW2NhbGxiYWNrQWdncmVn
YXRvcl0geyB9KTsKKworICAgIGZvciAoYXV0byYgdG9wRG9tYWluIDogZG9tYWlucy5rZXlzKCkp
CisgICAgICAgIG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmsuYWRkKHRvcERvbWFpbiwg
ZG9tYWlucy5nZXQodG9wRG9tYWluKSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlZWRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
Zmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21h
aW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRv
ciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRlMmU5YTUy
M2U0NmVlNDQ3NDdjZTM1MDJhZTk1MGU1OGY5OTUwMmUuLjRkMmNiNWI3NmZlMmQ1NjFlZTJjM2M0
OTU4ZDc3YTIzMjI5MWVjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaApAQCAtNDYxLDYgKzQ2MSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKKyAgICB2b2lkIHNldERvbWFp
bnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1
bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBz
ZW5kUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogI2VuZGlmCkBAIC03NjksNiArNzcwLDcgQEAgcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgSGFzaFNldDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gbV9kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKICNlbmRpZgogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggNDc3MjdjMzA0ZmVkNWIwZWFhZDAy
MzJiMmQ3ZTRiOWI1YzMwNTE3OC4uZGQ1ZGE0ZmEwMDExMTQzYWZjNGFlNDY4OGVlMWNiMmFlN2Yz
ZTZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00MTgsNiAr
NDE4LDI0IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9h
ZGluZ0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVECiAgICAgICAgIG1fbm90aWZpY2F0aW9u
VGltZXIuc3RvcCgpOwogfQogCitib29sIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNTdG9y
YWdlQWNjZXNzRm9yUXVpcmsoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkRvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcERvbWFpbikgY29uc3QKK3sKKyAgICBhdXRvIGl0ID0g
bV9kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MuZmluZCh0b3BEb21haW4pOworCisgICAgaWYgKGl0
ICE9IG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQt
PnZhbHVlID09IHN1YkRvbWFpbjsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBmb3IgKGF1dG8m
IHRvcERvbWFpbiA6IGRvbWFpbnMua2V5cygpKQorICAgICAgICBtX2RvbWFpbnNXaXRoU3RvcmFn
ZUFjY2Vzcy5hZGQodG9wRG9tYWluLCBkb21haW5zLmdldCh0b3BEb21haW4pKTsKKworICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9h
ZE9ic2VydmVyLmgKaW5kZXggZGNjMWJhYjM5Y2Q0ODNiMzg1YTFlY2YwZTQ4YjUzYjJkZTdhMGZh
YS4uNjBlNTcxYmI5MzUxMjM3YmYwODU2MmM1NGQ0MGFkMTBjZWExMzEwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9i
c2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTYzLDcgKzYzLDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1N0YXRpc3RpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAuaXNFbXB0eSgpOyB9CiAKICAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykgZmlu
YWwgeyBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uID0gV1RGTW92ZShkb21haW5zKTsgfQor
ICAgIHZvaWQgc2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9u
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3QgZmluYWw7CisgICAgYm9v
bCBoYXNTdG9yYWdlQWNjZXNzRm9yUXVpcmsoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0IGZpbmFsOworCiBw
cml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJik7CiAgICAgdm9pZCBzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCk7CkBA
IC04MSw2ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub3RpZmljYXRp
b25UaW1lcjsKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhTdG9yYWdl
QWNjZXNzOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHVpbnQ2NF90IG1fbG9nZ2lu
Z0NvdW50ZXIgeyAwIH07CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nVXNlckludGVyYWN0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRmYTU3YzY1NWFk
YTdjZjk3MTg5Yjc1N2M1OWFhOTAxOTUwYWE5ZTguLmNiNGE4YzI5NDU3YmI5ZjY1YTgzYmIyZThj
NTcxMDBiOWVjOTgxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTUyOCw2ICs1MjgsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcAogICAgICAgICBpZiAo
IVJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4aXN0cygpKQogICAgICAgICAgICAgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNoYXJlZCgqbmV3IFdlYlJlc291cmNlTG9hZE9ic2VydmVy
KHBhcmFtZXRlcnMuc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6SXNFcGhlbWVyYWw6Ok5vKSk7CiAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWQoKS5zZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihXVEZNb3ZlKHBhcmFtZXRl
cnMuZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pKTsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJz
LnNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHBhcmFtZXRl
cnMuZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspLCBbXSB7IH0pOwogICAgIH0KICAgICAK
ICNlbmRpZgpAQCAtMjAwNiw2ICsyMDA4LDE1IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpCiAg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uKFdURk1vdmUoZG9tYWlucykpOwogfQogCit2b2lkIFdlYlByb2Nlc3M6OnNldERvbWFp
bnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJs
ZURvbWFpbj4mJiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zLmtleXMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIHdlYlBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCisgICAgICAg
ICAgICB3ZWJQYWdlLT5hZGREb21haW5XaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhkb21haW4s
IGRvbWFpbnMuZ2V0KGRvbWFpbikpOworICAgIH0KKyAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hhcmVkKCkuc2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKFdURk1vdmUoZG9tYWlucyksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpzZW5kUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTg5NDhlOTE3
Y2UyOTU0N2U0ZTAxN2ExNWU0YTIwMGRmMTM5ODE3My4uNTgxODVhZDE0ODg2ZTc1NjNjMDE3ZmQ0
NTU5ZDkzNzE4ZjcwNzk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC00OTIsNiArNDkyLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik7CisgICAgdm9pZCBzZXREb21haW5zV2l0aFN0b3Jh
Z2VBY2Nlc3MoSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZW5kUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjQ5NmM5ZGFjMTMyZDhkM2NjNDFmZDQ1MTU2
MDhmZGY3OTBjYjU2ZC4uODUxMzI4YTEwZDJhYjZlYTYzMDllMWI1MmQyYTI5ZTJiYzMzZDkyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTE2NSw2ICsxNjUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IE5vdFJlZkNvdW50ZWQgewogICAgIFNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGlu
ZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90
aWZpY2F0aW9uKSAtPiAoKSBBc3luYwogICAgIFNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUoZW51bTp1aW50OF90IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxv
Y2tpbmdNb2RlKSAtPiAoKSBBc3luYwogICAgIFNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
KEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpCisgICAgU2V0RG9t
YWluc1dpdGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSAtPiAoKSBBc3luYwogICAgIFNl
bmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVkaWF0ZWx5KCkgLT4gKCkgQXN5bmMKICNl
bmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413893</attachid>
            <date>2020-11-11 17:46:22 -0800</date>
            <delta_ts>2020-11-13 15:44:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218778-20201111174621.patch</filename>
            <type>text/plain</type>
            <size>50590</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGU2NWRhMTUwNjZmOGZl
M2VmZjEzNGQyOTUxYTQ1NGQ0NWRjZTMyMC4uM2JmZTUwYjIwZDc4ZGRiMGIxMWJiMDAzOTVkY2Nh
NjY1NzI4ZTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTExLTExICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbid0IGxv
Z2luIHRvIE1pY3Jvc29mdCBUZWFtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4Nzc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjMzMTU2OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlz
IGEgdGVtcG9yYXJ5IHF1aXJrIHRvIGFzc2lzdCBhIGhpZ2gtdHJhZmZpYyB3ZWJzaXRlIHdoaWxl
IHRoZXkKKyAgICAgICAgY29tcGxldGUgdGhlIGxhcmdlIHRhc2sgb2YgbWlncmF0aW5nIGF3YXkg
ZnJvbSBsb2dpbiBmbG93cyB0aGF0CisgICAgICAgIHJlcXVpcmUgdGhpcmQgcGFydHkgY29va2ll
cy4gVGhpcyBxdWlyayB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUgc2l0ZQorICAgICAgICBpcyB1
cGRhdGVkLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJrIHRvIGNhbGwgdGhlIFN0b3JhZ2UgQWNj
ZXNzIEFQSSBvbiBiZWhhbGYgb2YgTWljcm9zb2Z0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
c2l0ZS1zcGVjaWZpYyBxdWlyay4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudCk6CisgICAgICAgIFBhc3Mg
YWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGFibGUgdG8gZGlzcGF0Y2ggYSBzeW50aGV0aWMg
Y2xpY2sKKyAgICAgICAgaWYgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZC4KKworICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aGFzU3RvcmFnZUFjY2Vzc0ZvclF1aXJrIGNv
bnN0KToKKyAgICAgICAgU3RvcmUgZG9tYWlucyBpbiB0aGUgd2ViIHByb2Nlc3MgdG8gYXZvaWQg
YXN5bmMgY2FsbHMgdG8gdGhlIG5ldHdvcmsKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAo
V2ViQ29yZTo6aXNNaWNyb3NvZnRMb2dpbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6aXNN
aWNyb3NvZnREb21haW4pOgorICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrIGNvbnN0KToK
KyAgICAgICAgVGhpcyBpcyB0aGUgcXVpcmsuCisKKyAgICAgICAgKiBwYWdlL1F1aXJrcy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0RG9tYWluc1dpdGhTdG9y
YWdlQWNjZXNzUXVpcmspOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpncmFudFF1aXJrUGFpclN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VBY2Nlc3NR
dWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1
ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFp
bkZvckZpcnN0UGFydHkpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjptYXBUb1RvcERvbWFpbik6CisgICAgICAgIFRoZSB1c2VyIG1pZ2h0IGdvIGRpcmVjdGx5IHRv
IGxvZ2luLmxpdmUuY29tIHRvIHNpZ24gaW4gdG8gTWljcm9zb2Z0CisgICAgICAgIFRlYW1zLCBi
dXQgbWF5IG5vdCBoYXZlIHNlZW4gdGhlIFN0b3JhZ2UgQWNjZXNzIHByb21wdC4gSW4gdGhpcyBj
YXNlLAorICAgICAgICB3ZSBzaG91bGQgbWFwIGxpdmUuY29tIHRvIG1pY3Jvc29mdC5jb20gYW5k
IHJlcXVlc3Qgc3RvcmFnZSBhY2Nlc3MgZm9yCisgICAgICAgIG1pY3Jvc29mdG9ubGluZS5jb20g
dW5kZXIgbWljcm9zb2Z0LmNvbS4gU2luY2UgbG9naW4ubGl2ZS5jb20gaXMgdXNlZAorICAgICAg
ICBmb3Igb3RoZXIgTWljcm9zb2Z0IGxvZ2luIGZsb3dzIGJlc2lkZXMgVGVhbXMsIGEgdXNlciBt
YXkgaGF2ZSB0bworICAgICAgICBncmFudCBzdG9yYWdlIGFjY2VzcyB0byBtaWNyb3NvZnRvbmxp
bmUuY29tIGV2ZW4gd2hlbiBpdCBpcyBub3QgbmVlZGVkCisgICAgICAgIHRvIGNvbXBsZXRlIHRo
ZSBsb2dpbi4gQnV0IHRoaXMgZ3VhcmFudGVlcyB0aGV5IHdpbGwgYWx3YXlzIGJlCisgICAgICAg
IHN1Y2Nlc3NmdWxseSBsb2dnZWQgaW50byBhbGwgTWljcm9zb2Z0IGFjY291bnRzLgorCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAg
SW4gb3JkZXIgZm9yIHRoZSB1c2VyIHRvIHN0YXkgbG9nZ2VkIGluIGJldHdlZW4gc2Vzc2lvbnMs
IHdlIHNob3VsZAorICAgICAgICB1cGRhdGUgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHRvIGdyYW50
IHN0b3JhZ2UgYWNjZXNzIGJhc2VkIG9uIHZhbHVlcworICAgICAgICBzdG9yZWQgaW4gdGhlIElU
UCBkYXRhYmFzZSBmb3IgcXVpcmsgZG9tYWlucy4KKwogMjAyMC0xMS0wOSAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBTeXN0ZW0gc291bmRz
IHNob3VsZCBiZSBwbGF5ZWQgaW4gdGhlIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggN2QwN2JjNTk3
OGY5Mjk0ODBkMDFjY2ZkYjU3NjMyYmI2MmQwZWNjZC4uZGY2MmJjMWIzZmQ1YTlkMzI1OTMxM2Fm
YzE3OTY1N2RkMzI4MzhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAyMC0xMS0xMSAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBDYW4n
dCBsb2dpbiB0byBNaWNyb3NvZnQgVGVhbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODc3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzMzE1
Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBpcyBhIHRlbXBvcmFyeSBxdWlyayB0byBhc3Npc3QgYSBoaWdoLXRyYWZmaWMgd2Vic2l0ZSB3
aGlsZSB0aGV5CisgICAgICAgIGNvbXBsZXRlIHRoZSBsYXJnZSB0YXNrIG9mIG1pZ3JhdGluZyBh
d2F5IGZyb20gbG9naW4gZmxvd3MgdGhhdAorICAgICAgICByZXF1aXJlIHRoaXJkIHBhcnR5IGNv
b2tpZXMuIFRoaXMgcXVpcmsgd2lsbCBiZSByZW1vdmVkIHdoZW4gdGhlIHNpdGUKKyAgICAgICAg
aXMgdXBkYXRlZC4KKworICAgICAgICBDcmVhdGUgYSBxdWlyayB0byBjYWxsIHRoZSBTdG9yYWdl
IEFjY2VzcyBBUEkgb24gYmVoYWxmIG9mIE1pY3Jvc29mdC4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKToKKyAgICAgICAg
UmVsYXggdGhlIHJlcXVpcmVtZW50IGZvciB1c2VyIGludGVyYWN0aW9uIGZvciBhIHNwZWNpZmlj
IHRoaXJkIHBhcnR5CisgICAgICAgIG5lZWRpbmcgY29va2llcyBmb3IgYXV0aGVudGljYXRpb24g
cHVycG9zZXMuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyk6CisgICAgICAgIFJlbGF4IHRoZSByZXF1aXJl
bWVudCBmb3IgdXNlciBpbnRlcmFjdGlvbiBmb3IgYSBzcGVjaWZpYyB0aGlyZCBwYXJ0eQorICAg
ICAgICBuZWVkaW5nIGNvb2tpZXMgZm9yIGF1dGhlbnRpY2F0aW9uIHB1cnBvc2VzLgorCisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5z
V2l0aFN0b3JhZ2VBY2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwpOgorICAgICAgICBSZWxheCB1c2VyIGlu
dGVyYWN0aW9uIGZvciByZWFzb25zIGFib3ZlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2Nr
Q29va2llc0ZvckhhbmRsZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlZ2lz
dHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldERvbWFpbnNXaXRoU3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERvbWFpbnNXaXRoU3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNTdG9yYWdlQWNjZXNz
Rm9yUXVpcmsgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0V2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpz
ZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICBBZGQgcXVpcmsnZCBkb21haW5z
IHRvIGhhdmUgcGFnZSBsZXZlbCBzdG9yYWdlIGFjY2VzcyB0byBiZSBhYmxlIHRvCisgICAgICAg
IHVzZSBkb2N1bWVudC5jb29raWUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
IEZvcndhcmQgZG9tYWlucyB3aXRoIHRoZSBzdG9yYWdlIGFjY2VzcyBxdWlyayB0byB0aGUgd2Vi
IHByb2Nlc3MgdG8KKyAgICAgICAgYXZvaWQgYW4gYXN5bmMgY2FsbCB0byB0aGUgbmV0d29yayBw
cm9jZXNzLgorCiAyMDIwLTExLTA5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbbWFjT1NdIFN5c3RlbSBzb3VuZHMgc2hvdWxkIGJlIHBsYXllZCBpbiB0
aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3Rv
cmFnZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNz
LmNwcAppbmRleCA4NzRlNTYwOGNkY2MxY2VmYWNiNzg2ZmEwYjAzZDIwMDdiYzQ0OTZjLi5lMDBk
YzYzODg5ODRiZDg3OTlhYjRjNGMyODQyNjkwMDM3N2I3ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0yNjUsNyArMjY2LDkgQEAgdm9pZCBE
b2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzUXVpcmsoUmVnaXN0cmFi
bGVEb21haW4mJiByZXF1ZXMKICAgICBBU1NFUlQobV9kb2N1bWVudC5zZXR0aW5ncygpLnN0b3Jh
Z2VBY2Nlc3NBUElFbmFibGVkKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9jdW1lbnQuZnJh
bWUoKSAmJiBtX2RvY3VtZW50LmZyYW1lKCktPnBhZ2UoKSk7CiAKLSAgICBtX2RvY3VtZW50LmZy
YW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RG
TW92ZShyZXF1ZXN0aW5nRG9tYWluKSwgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KG1fZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmhvc3Qo
KSksICptX2RvY3VtZW50LmZyYW1lKCksIG1fc3RvcmFnZUFjY2Vzc1Njb3BlLCBbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCByZXN1bHQpIG11
dGFibGUgeworICAgIGF1dG8gdG9wRG9tYWluID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXBU
b1RvcERvbWFpbihSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QobV9k
b2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKSk7CisKKyAgICBt
X2RvY3VtZW50LmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoV1RGTW92ZShyZXF1ZXN0aW5nRG9tYWluKSwgV1RGTW92ZSh0b3BEb21haW4pLCAq
bV9kb2N1bWVudC5mcmFtZSgpLCBtX3N0b3JhZ2VBY2Nlc3NTY29wZSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IGY3N2U1NjYwYzk4OWE2NTFjN2E5MTM4NDg4YTcxZTIyYmE5NzEz
NDIuLjc4YTk2NDYwNzNmMGE0N2IyZjk3YWYyMDg2ZmUyOGFkZDNmYThhZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTM4OSw3ICszODksNyBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91
c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0CiAg
ICAgaWYgKGRpc3BhdGNoUG9pbnRlckV2ZW50SWZOZWVkZWQoKnRoaXMsIG1vdXNlRXZlbnQuZ2V0
KCksIHBsYXRmb3JtRXZlbnQsIGRpZE5vdFN3YWxsb3dFdmVudCkgPT0gU2hvdWxkSWdub3JlTW91
c2VFdmVudDo6WWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudCA9PSBkb2N1bWVudCgpLnF1aXJr
cygpLnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyaygqdGhpcywgZXZlbnRUeXBlKSkK
KyAgICBpZiAoUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudCA9
PSBkb2N1bWVudCgpLnF1aXJrcygpLnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyaygq
dGhpcywgcGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJlbGF0ZWRUYXJnZXQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoIW1vdXNlRXZlbnQtPnRhcmdldCgp
IHx8IG1vdXNlRXZlbnQtPnRhcmdldCgpICE9IHJlbGF0ZWRUYXJnZXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCAzZTljMGY4NGYyNWNmZDFh
YjAwOWJlN2MyYWNlMjAwZTRhNTc5N2VjLi5iNzZkODIwNWY5ZmJmNDdhNTViMTdiNDFhOGYyZWIy
ZTQ0NGNlYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaApAQCAtNjUsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1N0YXRp
c3RpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldERv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxS
ZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9Cisg
ICAgdmlydHVhbCBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JRdWlyayhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1
aXJrcy5jcHAKaW5kZXggM2M2ZjM1NzZkODEyODMwMmEwNzYzYTU5YjU4OGYwNTE5ZDc1ODg2Yi4u
ZDhhYWUwNWJmMGI5OTc0ZjYxNGYzNjdiYTUxYjQwZWE4MDBjZmU4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVp
cmtzLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIkxheW91dFVuaXQuaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNs
dWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRPYnNl
cnZlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJT
VkdQYXRoRWxlbWVudC5oIgpAQCAtOTQzLDkgKzk0NCwyNiBAQCBzdGF0aWMgYm9vbCBpc0tpbmph
TG9naW5BdmF0YXJFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICByZXR1cm4g
ZmFsc2U7CiB9CisKK3N0YXRpYyBib29sIGlzTWljcm9zb2Z0TG9naW5FbGVtZW50KGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFt
ZXMoKTsKKyAgICByZXR1cm4gY2xhc3NOYW1lcy5jb250YWlucygiZ2x5cGhfc2lnbkluX2NpcmNs
ZSIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoIm1lY3RybF9oZWFkZXJ0ZXh0IikgfHwgY2xhc3NO
YW1lcy5jb250YWlucygibWVjdHJsX2hlYWRlciIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImV4
dC1idXR0b24gcHJpbWFyeSIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImV4dC1wcmltYXJ5Iik7
Cit9CisKK3N0YXRpYyBib29sIGlzTWljcm9zb2Z0RG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4pCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9t
YWluPiBtaWNyb3NvZnREb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJtaWNyb3NvZnQuY29tIl9zKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmVnaXN0cmFibGVEb21haW4+IG1pY3Jvc29mdExpdmVEb21haW4g
PSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWlu
U3RyaW5nKCJsaXZlLmNvbSJfcyk7CisKKyAgICByZXR1cm4gZG9tYWluID09IG1pY3Jvc29mdERv
bWFpbiB8fCBkb21haW4gPT0gbWljcm9zb2Z0TGl2ZURvbWFpbjsKK30KICNlbmRpZgogCi1RdWly
a3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNj
ZXNzUXVpcmsoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRU
eXBlKSBjb25zdAorUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9w
dGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBp
bnQgZGV0YWlsLCBFbGVtZW50KiByZWxhdGVkVGFyZ2V0KSBjb25zdAogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFuZWVkc1F1aXJrcygpKQpAQCAtMTAx
NSwxMCArMTAzMywzMyBAQCBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmln
Z2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoY29uc3QgRWxlbQogICAgICAgICAgICAgICAg
IHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50Owog
ICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgLy8gTWljcm9zb2Z0IFRlYW1zIGxv
Z2luIGNhc2UuCisgICAgICAgIC8vIEZJWE1FKDIxODc3OSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9u
Y2UgbWljcm9zb2Z0LmNvbSBjb21wbGV0ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4KKyAg
ICAgICAgaWYgKGlzTWljcm9zb2Z0RG9tYWluKGRvbWFpbikgJiYgaXNNaWNyb3NvZnRMb2dpbkVs
ZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGF1dG8gdG9wRG9tYWluID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjptYXBUb1RvcERvbWFpbihSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbUhvc3QobV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
Lmhvc3QoKSkpOworICAgICAgICAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlu
c0luTmVlZE9mU3RvcmFnZUFjY2VzczsKKyAgICAgICAgICAgIGlmIChhdXRvIGxvZ2luRG9tYWlu
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbkZvckZpcnN0UGFydHkodG9wRG9t
YWluKSkgeworICAgICAgICAgICAgICAgIGlmICghUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLmhhc1N0b3JhZ2VBY2Nlc3NGb3JRdWlyaygqbG9naW5Eb21haW4sIHRvcERvbWFpbikpIHsK
KyAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0Zvck5vbkRvY3VtZW50UXVpcmsoKm1fZG9jdW1lbnQsIFdURk1vdmUoKmxvZ2luRG9t
YWluKSwgW3RvcERvbWFpbiwgbG9naW5Eb21haW4sICZlbGVtZW50LCBwbGF0Zm9ybUV2ZW50LCBl
dmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRhcmdldF0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQg
c3RvcmFnZUFjY2Vzc0dyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHN0b3JhZ2VBY2Nlc3NHcmFudGVkID09IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkKCkuc2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKHt7IHRvcERvbWFpbiwgKmxvZ2luRG9t
YWluIH19LCBbJmVsZW1lbnQsIHBsYXRmb3JtRXZlbnQsIGV2ZW50VHlwZSwgZGV0YWlsLCByZWxh
dGVkVGFyZ2V0XSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZGlz
cGF0Y2hNb3VzZUV2ZW50KHBsYXRmb3JtRXZlbnQsIGV2ZW50VHlwZSwgZGV0YWlsLCByZWxhdGVk
VGFyZ2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50Owor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBRdWly
a3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50OworICAgICAgICB9
CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CisgICAgVU5VU0VEX1BB
UkFNKHBsYXRmb3JtRXZlbnQpOwogICAgIFVOVVNFRF9QQVJBTShldmVudFR5cGUpOworICAgIFVO
VVNFRF9QQVJBTShkZXRhaWwpOworICAgIFVOVVNFRF9QQVJBTShyZWxhdGVkVGFyZ2V0KTsKICNl
bmRpZgogICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENh
bmNlbEV2ZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXggMmY1NDBlZmJiYTI2NmUwMjM4MDVl
Mjk5OTM1Yzg5YjFlNzlhZWJkZS4uMTJhMmY4MjIxMzI4YmQ5NWEzMDdmYzU0YTUwMTk4OTJkMjJj
Mzg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw2ICszOSw3IEBAIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xh
c3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgTGF5b3V0VW5p
dDsKK2NsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIAogY2xhc3MgUXVpcmtzIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShRdWlya3MpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEx
Miw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRBdm9pZFBhc3RpbmdJbWFnZXNB
c1dlYkNvbnRlbnQoKSBjb25zdDsKIAogICAgIGVudW0gU3RvcmFnZUFjY2Vzc1Jlc3VsdCA6IGJv
b2wgeyBTaG91bGROb3RDYW5jZWxFdmVudCwgU2hvdWxkQ2FuY2VsRXZlbnQgfTsKLSAgICBTdG9y
YWdlQWNjZXNzUmVzdWx0IHRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhjb25zdCBF
bGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKKyAgICBTdG9yYWdl
QWNjZXNzUmVzdWx0IHRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50Jiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBp
bnQsIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIGJvb2wgbmVlZHNWUDlGdWxsUmFuZ2VGbGFnUXVp
cmsoKSBjb25zdDsKICAgICBib29sIG5lZWRzSERSUGl4ZWxEZXB0aFF1aXJrKCkgY29uc3Q7CkBA
IC0xNTQsNCArMTU3LDQgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1f
bmVlZHNCbGFja0Z1bGxzY3JlZW5CYWNrZ3JvdW5kUXVpcms7CiB9OwogCi19Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggODQ2MThjZTQxMTkxMjFiN2RhOTU1
ODcwOGEyZjk0YjFlNGViZTQ5YS4uZDhkMDE1OWZmYmU5OWU5Njk0MDJjNjM0YWQyN2Y4MzIxYmFk
NWU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMjA5LDYgKzIwOSwxOCBAQCB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFy
dHkoY29uc3QgVmVjdAogICAgIG1fcmVnaXN0cmFibGVEb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
bkFzRmlyc3RQYXJ0eS5hZGQoZG9tYWlucy5iZWdpbigpLCBkb21haW5zLmVuZCgpKTsKIH0KIAor
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1
aXJrKGNvbnN0IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWlucykKK3sKKyAgICBtX3F1aXJrUGFpcnNHcmFudGVkU3RvcmFnZUFjY2Vzcy5jbGVhcigp
OworICAgIGZvciAoYXV0byYgdG9wRG9tYWluIDogZG9tYWlucy5rZXlzKCkpCisgICAgICAgIGdy
YW50UXVpcmtQYWlyU3RvcmFnZUFjY2Vzcyh0b3BEb21haW4sIGRvbWFpbnMuZ2V0KHRvcERvbWFp
bikpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRRdWlya1BhaXJTdG9y
YWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pCit7CisgICAgbV9xdWlya1BhaXJz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MuYWRkKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWlu
KTsKK30KKwogYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lSUQpIHsKQEAg
LTIyNyw2ICsyMzksMTAgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG8KICAgICAgICAgICAgIGlm
IChpdCAhPSBwYWdlc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZW5kKCkgJiYgaXQtPnZhbHVlID09
IHJlc291cmNlRG9tYWluKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CisKKyAgICAgICAgYXV0byBpdCA9IG1fcXVpcmtQYWlyc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZp
bmQoZmlyc3RQYXJ0eURvbWFpbik7CisgICAgICAgIGlmIChpdCAhPSBtX3F1aXJrUGFpcnNHcmFu
dGVkU3RvcmFnZUFjY2Vzcy5lbmQoKSAmJiBpdC0+dmFsdWUgPT0gcmVzb3VyY2VEb21haW4pCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NDQsNiArMjYwLDExIEBAIFZlY3RvcjxTdHJpbmc+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0
QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKSBjb25zdAogICAgIAogdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKKyAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbk1hdGNoZXNSZXF1
ZXN0aW5nRG9tYWluKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKSkgeworICAgICAg
ICBncmFudFF1aXJrUGFpclN0b3JhZ2VBY2Nlc3MoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VE
b21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFmcmFtZUlEKSB7CiAg
ICAgICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTI5Nyw2ICszMTgsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3Zl
QWxsU3RvcmFnZUFjY2VzcygpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNs
ZWFyKCk7CiAgICAgbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5jbGVhcigpOworICAgIG1f
cXVpcmtQYWlyc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CiB9CiAKIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhT
ZWNvbmRzIHNlY29uZHMpCkBAIC0zNTEsNiArMzczLDUzIEBAIE9wdGlvbmFsPFNlY29uZHM+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJs
ZURvCiAKICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsKIH0KKworSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+JiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VBY2Nlc3NRdWlya3MoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+IG1hcCA9
IFtdIHsKKyAgICAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21h
aW4+IG1hcDsKKyAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3Jl
YXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJtaWNyb3NvZnQuY29tIiksCisgICAgICAg
ICAgICBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9t
YWluU3RyaW5nKCJtaWNyb3NvZnRvbmxpbmUuY29tIl9zKSk7CisgICAgICAgIHJldHVybiBtYXA7
CisgICAgfSgpOworICAgIHJldHVybiBtYXAuZ2V0KCk7Cit9CisKK2Jvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRG9t
YWluKQoreworICAgIGF1dG8gbG9naW5Eb21haW4gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmxvZ2luRG9tYWluRm9yRmlyc3RQYXJ0eShmaXJzdFBhcnR5KTsKKyAgICByZXR1cm4g
bG9naW5Eb21haW4gJiYgc3ViRG9tYWluID09IGxvZ2luRG9tYWluOworfQorCitib29sIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2Vz
V2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluKQorewor
ICAgIHJldHVybiBsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKHRvcEZyYW1lRG9t
YWluLCBzdWJGcmFtZURvbWFpbik7Cit9CisKK09wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluRm9yRmlyc3RQYXJ0eShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbikKK3sKKyAgICBhdXRvIGl0ID0gc3RvcmFn
ZUFjY2Vzc1F1aXJrcygpLmZpbmQoZmlyc3RQYXJ0eURvbWFpbik7CisgICAgaWYgKGl0ICE9IHN0
b3JhZ2VBY2Nlc3NRdWlya3MoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitSZWdpc3RyYWJsZURvbWFpbiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246Om1hcFRvVG9wRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW5Ub01hcCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+PiBtYXAgPSBbXSB7CisgICAgICAgIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiBtYXA7CisgICAgICAgIG1hcC5h
ZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFp
blN0cmluZygibGl2ZS5jb20iKSwKKyAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoIm1pY3Jvc29mdC5jb20iX3Mp
KTsKKyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9KCk7CisKKyAgICBhdXRvIGl0ID0gbWFwLmdl
dCgpLmZpbmQoZG9tYWluVG9NYXApOworICAgIGlmIChpdCAhPSBtYXAuZ2V0KCkuZW5kKCkpCisg
ICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgcmV0dXJuIGRvbWFpblRvTWFwOworfQorCisK
ICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaAppbmRleCA0NGNhYzEwYWUyOTRmOGRjNDViMTUxODU2NzJlZTgyODE2MTQ0MzhjLi4yYTVi
ZGI4MzRmNjc4MWI2ZjM4ZjAyODM2OGIyYTUzZjg2YTQxMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAg
LTE5OSw2ICsxOTksOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2
YWxlbnREb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9t
YWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFj
dGlvbkFzRmlyc3RQYXJ0eShjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyayhjb25z
dCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50UXVpcmtQYWlyU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlc291cmNlRG9tYWluKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNs
aWVudFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiwgUGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxTdHJpbmc+IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7CkBA
IC0yMTIsNiArMjE0LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENv
bW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CisgICAgCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxl
RG9tYWluPiYgc3RvcmFnZUFjY2Vzc1F1aXJrcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlv
clVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBsb2dpbkRvbWFpbkZvckZp
cnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRG9t
YWluKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVnaXN0cmFibGVEb21haW4gbWFwVG9U
b3BEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICNlbmRpZgogICAgIAogI2lmIEVO
QUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTI3MSw2ICsyNzksNyBAQCBwcml2YXRlOgogICAg
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW5zV2l0aFVzZXJJ
bnRlcmFjdGlvbkFzRmlyc3RQYXJ0eTsKICAgICBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBIYXNo
TWFwPEZyYW1lSWRlbnRpZmllciwgUmVnaXN0cmFibGVEb21haW4+PiBtX2ZyYW1lc0dyYW50ZWRT
dG9yYWdlQWNjZXNzOwogICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8UmVnaXN0
cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNj
ZXNzOworICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiBt
X3F1aXJrUGFpcnNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBt
X2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXgg
NGU3YzYwOTllZDAyZWNjZTJkZDA2YTFkZGJmMzcxZjVhMDRjYmQ5MC4uOWQ0NzdjZDUwZDYwYjA1
MTUwOWVlZDdlZjVjZGUyOTVhZTMxMmEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0xMzI0LDcgKzEzMjQsMTAgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBBU1NFUlQoc3ViRnJhbWVTdGF0dXMuZmlyc3QgPT0gQWRkZWRSZWNvcmQ6Ok5vKTsK
LSAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgT3Bl
cmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBp
ZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dp
blB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BG
cmFtZURvbWFpbikpCisgICAgICAgICAgICBBU1NFUlQoaGFzSGFkVXNlckludGVyYWN0aW9uKHN1
YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZykpOworI2VuZGlmCiAgICAg
ICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3Qoc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJh
bWVEb21haW5zUXVlcnksIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+KHsgdG9wRnJhbWVEb21h
aW4gfSksICpzdWJGcmFtZVN0YXR1cy5zZWNvbmQpOwogICAgIH0KIApAQCAtMTM0OCw3ICsxMzUx
LDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdHVzLmZpcnN0ID09IEFkZGVkUmVjb3Jk
OjpObyk7Ci0gICAgICAgIEFTU0VSVChoYXNIYWRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21h
aW4sIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAg
ICAgICAgaWYgKCFOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNz
Rm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFp
biwgdG9wRnJhbWVEb21haW4pKQorICAgICAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFj
dGlvbihzdWJGcmFtZURvbWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsKKyNlbmRp
ZgogICAgICAgICBBU1NFUlQoaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21w
dCgqc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0b3BGcmFtZURvbWFpbikgPT0gU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duOjpZZXMpOwogI2VuZGlmCiAgICAgICAgIHNldFVzZXJJbnRlcmFjdGlv
bihzdWJGcmFtZURvbWFpbiwgdHJ1ZSwgV2FsbFRpbWU6Om5vdygpKTsKQEAgLTIwMDMsNyArMjAw
OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAgICAgcmVtb3ZlQWxsU3RvcmFnZUFjY2Vz
cyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFp
bnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciA9IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0Zv
ckRlYnVnTW9kZSgpOwotICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRv
bWFpbnNUb0Jsb2NrIHsgcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNG
b3IsIHsgfSwgeyB9IH07CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ig
ZG9tYWluc1RvQmxvY2sgeyByZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2ll
c0ZvciwgeyB9LCB7IH0sIHsgfSB9OwogICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlu
cyhkb21haW5zVG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIApAQCAtMjAz
Niw3ICsyMDQyLDcgQEAgQ29va2llQWNjZXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjb29raWVBY2Nlc3MoY29uc3QgU3ViUmVzb3VyY2UKICAgICBpZiAoIWFyZUFsbFRo
aXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKHRvcEZyYW1lRG9tYWluKSAmJiAhaXNQcmV2YWxl
bnQpCiAgICAgICAgIHJldHVybiBDb29raWVBY2Nlc3M6OkJhc2VkT25Db29raWVQb2xpY3k7CiAK
LSAgICBpZiAoIWhhZFVzZXJJbnRlcmFjdGlvbikKKyAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9y
VXNlckludGVyYWN0aW9uKHN1YnJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbikgJiYgIWhh
ZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0dXJuIENvb2tpZUFjY2Vzczo6Q2Fubm90UmVx
dWVzdDsKIAogICAgIHJldHVybiBDb29raWVBY2Nlc3M6Ok9ubHlJZkdyYW50ZWQ7CkBAIC0yMTAz
LDYgKzIxMDksMjIgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1dpdGhVc2VySW4KICAgICByZXR1cm4gcmVzdWx0
czsKIH0KIAorSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zV2l0aFN0b3JhZ2VBY2Nl
c3MoKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgSGFz
aE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IHJlc3VsdHM7CisgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAi
U0VMRUNUIHN1YkZyYW1lRG9tYWluLCByZWdpc3RyYWJsZURvbWFpbiBGUk9NIChTRUxFQ1Qgby5y
ZWdpc3RyYWJsZURvbWFpbiBhcyBzdWJGcmFtZURvbWFpbiwgcy50b3BMZXZlbERvbWFpbklEIGFz
IHRvcExldmVsRG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgYXMgbyBJTk5FUiBKT0lOIFN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyBhcyBzIFdIRVJFIG8uZG9tYWluSUQgPSBz
LmRvbWFpbklEKSBhcyB6IElOTkVSIEpPSU4gT2JzZXJ2ZWREb21haW5zIE9OIGRvbWFpbklEID0g
ei50b3BMZXZlbERvbWFpbklEOyJfcyk7CisKKyAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0spCisgICAgICAgIHJldHVybiByZXN1bHRzOworCisgICAgd2hpbGUgKHN0YXRl
bWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmVzdWx0cy5hZGQoUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzdGF0
ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSksIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVh
dGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkp
KTsKKworICAgIHJldHVybiByZXN1bHRzOworfQorCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CkBAIC0yMTEwLDEzICsyMTMyLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyCiAg
ICAgYXV0byBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSB0aGlzLT5kb21haW5z
VG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoKTsKICAgICBhdXRvIGRvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCk7
CiAgICAgYXV0byBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSA9IHRoaXMt
PmRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KCk7CisgICAgYXV0byBkb21h
aW5zV2l0aFN0b3JhZ2VBY2Nlc3MgPSB0aGlzLT5kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoKTsK
IAotICAgIGlmIChkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpICYm
IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNXaXRo
VXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5LmlzRW1wdHkoKSkgeworICAgIGlmIChkb21haW5z
VG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNG
aXJzdFBhcnR5LmlzRW1wdHkoKSAmJiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9j
ayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9tYWluc1RvQmxvY2tCdXRL
ZWVwQ29va2llc0ZvciwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkgfTsK
KyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7
IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9tYWluc1RvQmxvY2tCdXRLZWVw
Q29va2llc0ZvciwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHksIGRvbWFp
bnNXaXRoU3RvcmFnZUFjY2VzcyB9OwogCiAgICAgaWYgKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSAm
JiAoIWRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgfHwgIWRvbWFp
bnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpKSkKICAgICAgICAgZGVidWdMb2dE
b21haW5zSW5CYXRjaGVzKCJBcHBseWluZyBjcm9zcy1zaXRlIHRyYWNraW5nIHJlc3RyaWN0aW9u
cyIsIGRvbWFpbnNUb0Jsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggZDU1NTIzN2JkZDEyY2RjZGJkMTNjYzExYTBlZjRk
NmQ3OTEyYzIwOC4uYTBjYjc2NGJjYmJmZWVmM2YxZmYxNGE3NDY5YTBlZTJiOGYwOWYwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgK
QEAgLTE1OSw2ICsxNTksNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4gZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKCkgY29uc3Q7CiAgICAgVmVjdG9y
PFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCkgY29u
c3Q7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFVzZXJJbnRlcmFj
dGlvbkFzRmlyc3RQYXJ0eSgpIGNvbnN0OworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VB
Y2Nlc3MoKSBjb25zdDsKIAogICAgIHN0cnVjdCBEb21haW5EYXRhIHsKICAgICAgICAgdW5zaWdu
ZWQgZG9tYWluSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwCmluZGV4IGU0NDU2MDM1ZTE4MmFhZWI0YWRlMmI4NmRiMWE2OWFiMjg0MTQ4
YmMuLjgyMzFhZTRiNzU4N2U4ZWY4OGE5NTUzNTMyNWJmZmJkMGFmMmQ4Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC03ODUs
NyArNzg1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNsZWFy
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGUKICAgICByZW1vdmVBbGxTdG9yYWdl
QWNjZXNzKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKICAgICBhdXRvIHJlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yID0gZW5zdXJlUHJldmFsZW50UmVzb3Vy
Y2VzRm9yRGVidWdNb2RlKCk7Ci0gICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNG
b3IgZG9tYWluc1RvQmxvY2sgeyByZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29v
a2llc0ZvciwgeyB9LCB7IH0gfTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2ll
c0ZvciBkb21haW5zVG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVD
b29raWVzRm9yLCB7IH0sIHsgfSwgeyB9fTsKICAgICB1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRv
bWFpbnMoZG9tYWluc1RvQmxvY2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKQEAg
LTgzOCw3ICs4MzgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6
dXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXI8dgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWlu
c1RvQmxvY2sgeyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIGRvbWFpbnNUb0Js
b2NrQnV0S2VlcENvb2tpZXNGb3IsIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBh
cnR5IH07CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1Rv
QmxvY2sgeyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIGRvbWFpbnNUb0Jsb2Nr
QnV0S2VlcENvb2tpZXNGb3IsIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5
LCB7IH0gfTsKIAogICAgIGlmIChkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgJiYgKCFkb21haW5zVG9C
bG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpIHx8ICFkb21haW5zVG9CbG9ja0J1dEtl
ZXBDb29raWVzRm9yLmlzRW1wdHkoKSkpCiAgICAgICAgIGRlYnVnTG9nRG9tYWluc0luQmF0Y2hl
cygiQXBwbHlpbmcgY3Jvc3Mtc2l0ZSB0cmFja2luZyByZXN0cmljdGlvbnMiLCBkb21haW5zVG9C
bG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CmluZGV4IGQ1YTk2NTI1Y2JhZTZkZWE3NzMwYzJlOTQyN2M1NDlmZDE2YjZkMTcuLjI1M2MxYTVl
MWZmNTk5MTdlYTY1ODg0MzljZGNkMGY2OTFhNzY5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRXBoZW1l
cmFsKGNvbnN0IFJlZ2lzdHIKIHsKICAgICBBU1NFUlQoaXNFcGhlbWVyYWwoKSk7CiAKLSAgICBp
ZiAoIW1fbmV0d29ya1Nlc3Npb24gfHwgIW1fZG9tYWluc1dpdGhFcGhlbWVyYWxVc2VySW50ZXJh
Y3Rpb24uY29udGFpbnMoc3ViRnJhbWVEb21haW4pKQorICAgIGlmICghbV9uZXR3b3JrU2Vzc2lv
biB8fCAoIW1fZG9tYWluc1dpdGhFcGhlbWVyYWxVc2VySW50ZXJhY3Rpb24uY29udGFpbnMoc3Vi
RnJhbWVEb21haW4pICYmICFOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdl
QWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFt
ZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd246Ok5vLCBzY29wZSwgdG9wRnJhbWVEb21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwogCiAg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gcmVxdWVzdENvbmZpcm1hdGlvbkNvbXBs
ZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3Vi
RnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCB3ZWJQYWdlSUQsIHNjb3BlLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB1c2Vy
RGlkR3JhbnRBY2Nlc3MpIG11dGFibGUgewpAQCAtMTI1Nyw2ICsxMjU3LDIzIEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
QmxvY2tDb29raWVzRm9yCiAgICAgICAgICAgICBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
UXVpcmsgPSBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvblF1aXJrOwogICAgICAgICAgICAgbV9u
ZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXREb21haW5zV2l0aFVzZXJJ
bnRlcmFjdGlvbihkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvblF1aXJrKSwgMCk7CiAgICAgICAg
IH0KKworICAgICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFp
bj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7CisgICAgICAgIGZvciAoYXV0byYgZmly
c3RQYXJ0eURvbWFpbiA6IGRvbWFpbnNUb0Jsb2NrLmRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcy5r
ZXlzKCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmVxdWVzdGluZ0RvbWFpbiA9IGRvbWFpbnNUb0Js
b2NrLmRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcy5nZXQoZmlyc3RQYXJ0eURvbWFpbik7CisgICAg
ICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbk1hdGNoZXNSZXF1
ZXN0aW5nRG9tYWluKGZpcnN0UGFydHlEb21haW4sIHJlcXVlc3RpbmdEb21haW4pKQorICAgICAg
ICAgICAgICAgIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrLmFkZChmaXJzdFBhcnR5RG9t
YWluLCByZXF1ZXN0aW5nRG9tYWluKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX2RvbWFp
bnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrICE9IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJr
KSB7CisgICAgICAgICAgICBpZiAobV9uZXR3b3JrU2Vzc2lvbikgeworICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpKQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0RG9t
YWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmsoZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmsp
OworICAgICAgICAgICAgICAgIG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpTZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoZG9tYWluc1dpdGhT
dG9yYWdlQWNjZXNzUXVpcmspLCBbdGhpcywgZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmtd
ICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBtX2RvbWFpbnNXaXRoU3RvcmFnZUFj
Y2Vzc1F1aXJrID0gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CmluZGV4IDIxM2M4ZDBlZDBhNGRkZWZjMzliODA0MmUwNThmODAyNmFmYjY4NTQuLmQyYWRiNjky
YjRjOGE0NWUxYTAyOWVmZTIyNjlkZTg5ZDVhZDA2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTcyLDcgKzcyLDggQEAgc3RydWN0IFJlZ2lz
dHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcjsKICAgICBW
ZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENv
b2tpZXNGb3I7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eTsKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNU
b0Jsb2NrQ29va2llc0ZvciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvQmxvY2tC
dXRLZWVwQ29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rp
b25Bc0ZpcnN0UGFydHkuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIEhhc2hNYXA8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0
aFN0b3JhZ2VBY2Nlc3M7CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ig
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNv
b2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3Iu
aXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5Lmlz
b2xhdGVkQ29weSgpLCBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MgfTsgfQogfTsKIHN0cnVjdCBS
ZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB7CiAgICAg
VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVBbGxDb29r
aWVzRm9yOwpAQCAtMzMwLDYgKzMzMSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4gbV9kb21haW5zV2l0aEVwaGVtZXJhbFVzZXJJbnRlcmFjdGlvbjsKIAogICAg
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25R
dWlyazsKKyAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4g
bV9kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKIAogICAgIGJvb2wgbV9oYXNTY2hlZHVs
ZWRQcm9jZXNzU3RhdHMgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCBlNjI2MzQyNDRlODFhOWVj
NWU3NjdjYjcyYWYwNzFlZGUzNWRmOTUzLi5hMjhjYjM5MTJlY2JlNDVhZTVlN2YxZGFlMWZkZjdk
MDRmMzRiMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0
YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTQ5LDYgKzQ5LDggQEAgc3RydWN0IFdlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6
OkFsbCB9OwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NR
dWlyazsKKwogI2VuZGlmCiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7
IGZhbHNlIH07CiAKQEAgLTc1LDYgKzc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGU7CiAgICAgZW5jb2RlciA8PCBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAg
ICBlbmNvZGVyIDw8IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrOwogI2VuZGlmCiAgICAg
ZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKIH0KQEAgLTE1MSw2ICsx
NTQsMTEgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYlByb2Nl
c3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICBkZWNvZGVyID4+IGRvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uOwogICAgIGlmICghZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24p
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8SGFzaE1h
cDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
PiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKKyAgICBkZWNvZGVyID4+IGRvbWFpbnNX
aXRoU3RvcmFnZUFjY2Vzc1F1aXJrOworICAgIGlmICghZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNz
UXVpcmspCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIGJvb2wg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBmYWxzZTsKQEAgLTE3NCw2ICsxODIsNyBA
QCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgICAgICp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAogICAgICAgICBX
VEZNb3ZlKCpkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbiksCisgICAgICAgIFdURk1vdmUoKmRv
bWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKSwKICNlbmRpZgogICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZAogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2ZWUyNmQwNDZi
MGIyMTg4NzA3M2U2ZWU3MzQ5ODQzZGFkMzM1YWZhLi5lNjI1ZjA4YmUyOTUzNWVlNGI0NGE3ZDkw
NmI0ZGUyZmRhMmI4NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEyNjUsMTEgKzEyNjUsMjEgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3MKIHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKHNl
c3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQorCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykKIHsKICAgICBmb3IgKGF1
dG8qIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQogICAg
ICAgICBwcm9jZXNzUG9vbC0+c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4geyBkb21haW5zIH0pOwogfQorCit2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFJlZ2lz
dHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7ICAgIAorICAgIGF1dG8gY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIAorICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJQcm9j
ZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5zZXREb21h
aW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFi
bGVEb21haW4+IHsgZG9tYWlucyB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworfQorCiAj
ZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzZXRBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGUoYm9vbCBkZWJ1Z01v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCmluZGV4IGQwMzA0M2Y3OGQwMjEzMmY0MzkzMTFkMjYyN2IwOGMzYzdkYWFk
MjIuLjcxMzM3YjZlOWRmMDU4YmUxZmU2YjMzMTliYjU5ZmI3YTM1YjQzYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CkBAIC0yMDAsNiArMjAwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUhvc3RD
TkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eUhvc3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBjbmFtZURvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldERvbWFpbnNXaXRo
VXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpOwor
ICAgIHZvaWQgc2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1
dGlvbkRlYnVnTW9kZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAy
YWVhZmYzNGM3YTgwZTM5YzFhYzJkMzNmN2M0YTExNTJkMTg4ZDc0Li43OGQ2YmY2NGE3M2ZlN2Zi
ODcxNjE4NmU5YTk4ZmFlZmQ3MmEwOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CkBAIC00OCw2ICs0OCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5
UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vz
c0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKICAgICBEaWRDb21t
aXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShXZWJL
aXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQogICAgIFNldERvbWFpbnNXaXRoVXNl
ckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMp
CisgICAgU2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSAtPiAoKSBB
c3luYwogI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBDb250ZW50
RXh0ZW5zaW9uUnVsZXMoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5k
ZXggZTA0NTFmYjQ4YjJkMjc3ODBhMWFkZTljZjNkMTJmNjZiNGU0NGU0Yi4uNzQyMTIxNWZhNjJh
MmM0NDA0MzYyMGQwMDkxZjkyZTA0YzJjNWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNzM0LDYgKzczNCw3IEBAIFdlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cyhXZWJQCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgd2Vi
c2l0ZURhdGFTdG9yZS50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCiAgICAgICAgIG1f
ZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24sCisgICAgICAgIG1fZG9tYWluc1dpdGhTdG9yYWdl
QWNjZXNzUXVpcmssCiAjZW5kaWYKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCgpCiAgICAgfTsKQEAgLTE5ODUsNiArMTk4NiwxNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRAogICAgIG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24gPSBX
VEZNb3ZlKGRvbWFpbnMpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5zV2l0
aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21h
aW4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreyAgICAKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVn
YXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0
byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQorICAgICAgICBwcm9jZXNzLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcyhk
b21haW5zKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKworICAgIGZvciAoYXV0byYgdG9w
RG9tYWluIDogZG9tYWlucy5rZXlzKCkpCisgICAgICAgIG1fZG9tYWluc1dpdGhTdG9yYWdlQWNj
ZXNzUXVpcmsuYWRkKHRvcERvbWFpbiwgZG9tYWlucy5nZXQodG9wRG9tYWluKSk7Cit9CisKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRp
b24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCmluZGV4IDRlMmU5YTUyM2U0NmVlNDQ3NDdjZTM1MDJhZTk1MGU1OGY5OTUwMmUu
LjRkMmNiNWI3NmZlMmQ1NjFlZTJjM2M0OTU4ZDc3YTIzMjI5MWVjYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDYxLDYgKzQ2MSw3IEBAIHB1YmxpYzoK
IAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBzZXREb21h
aW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYmKTsKKyAgICB2b2lkIHNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlE
b21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZW5kUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFJbW1l
ZGlhdGVseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCkBAIC03NjksNiAr
NzcwLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWly
azsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5k
ZXggNDc3MjdjMzA0ZmVkNWIwZWFhZDAyMzJiMmQ3ZTRiOWI1YzMwNTE3OC4uZGQ1ZGE0ZmEwMDEx
MTQzYWZjNGFlNDY4OGVlMWNiMmFlN2YzZTZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuY3BwCkBAIC00MTgsNiArNDE4LDI0IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZ0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVE
CiAgICAgICAgIG1fbm90aWZpY2F0aW9uVGltZXIuc3RvcCgpOwogfQogCitib29sIFdlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpoYXNTdG9yYWdlQWNjZXNzRm9yUXVpcmsoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcERvbWFpbikg
Y29uc3QKK3sKKyAgICBhdXRvIGl0ID0gbV9kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MuZmluZCh0
b3BEb21haW4pOworCisgICAgaWYgKGl0ICE9IG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzLmVu
ZCgpKQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlID09IHN1YkRvbWFpbjsKKworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0RG9tYWluc1dp
dGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9t
YWluPiYmIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBmb3IgKGF1dG8mIHRvcERvbWFpbiA6IGRvbWFpbnMua2V5cygpKQorICAg
ICAgICBtX2RvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcy5hZGQodG9wRG9tYWluLCBkb21haW5zLmdl
dCh0b3BEb21haW4pKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggZGNjMWJhYjM5Y2Q0ODNi
Mzg1YTFlY2YwZTQ4YjUzYjJkZTdhMGZhYS4uNjBlNTcxYmI5MzUxMjM3YmYwODU2MmM1NGQ0MGFk
MTBjZWExMzEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTYzLDcg
KzYzLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1N0YXRpc3RpY3MoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAhbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgpOyB9CiAKICAgICB2b2lk
IHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+JiYgZG9tYWlucykgZmluYWwgeyBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
ID0gV1RGTW92ZShkb21haW5zKTsgfQorICAgIHZvaWQgc2V0RG9tYWluc1dpdGhTdG9yYWdlQWNj
ZXNzKEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIGJv
b2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yUXVpcmsoY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYpIGNvbnN0IGZpbmFsOworCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBzY2hlZHVsZU5v
dGlmaWNhdGlvbklmTmVlZGVkKCk7CkBAIC04MSw2ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgV2Vi
Q29yZTo6VGltZXIgbV9ub3RpZmljYXRpb25UaW1lcjsKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CisgICAgSGFz
aE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IG1fZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgIHVpbnQ2NF90IG1fbG9nZ2luZ0NvdW50ZXIgeyAwIH07CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkTG9nVXNlckludGVyYWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCmluZGV4IDM2ZGNhYzI2ZTFiMWMwYjc2MDcxYThmZjAyZmVhY2JiODk3M2U1OTAuLjNm
NWJlMzY5MWE2NmUyMDdlODJkYTdiMDc1NzBhZDBkOWU0MzJkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTUyOCw2ICs1MjgsOCBAQCB2b2lkIFdlYlByb2Nl
c3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJh
bWV0ZXJzJiYgcAogICAgICAgICBpZiAoIVJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4
aXN0cygpKQogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNoYXJlZCgqbmV3
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyKHBhcmFtZXRlcnMuc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkgPyBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDog
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6Ok5vKSk7CiAgICAg
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXREb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbihXVEZNb3ZlKHBhcmFtZXRlcnMuZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pKTsK
KyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQorICAgICAg
ICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoU3RvcmFn
ZUFjY2VzcyhXVEZNb3ZlKHBhcmFtZXRlcnMuZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmsp
LCBbXSB7IH0pOwogICAgIH0KICAgICAKICNlbmRpZgpAQCAtMjAwNiw2ICsyMDA4LDE1IEBAIHZv
aWQgV2ViUHJvY2Vzczo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpCiAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgp
LnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKFdURk1vdmUoZG9tYWlucykpOwogfQogCit2
b2lkIFdlYlByb2Nlc3M6OnNldERvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFJlZ2lz
dHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zLmtleXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHdlYlBhZ2UgOiBtX3Bh
Z2VNYXAudmFsdWVzKCkpCisgICAgICAgICAgICB3ZWJQYWdlLT5hZGREb21haW5XaXRoUGFnZUxl
dmVsU3RvcmFnZUFjY2Vzcyhkb21haW4sIGRvbWFpbnMuZ2V0KGRvbWFpbikpOworICAgIH0KKyAg
ICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0RG9tYWluc1dpdGhTdG9yYWdlQWNj
ZXNzKFdURk1vdmUoZG9tYWlucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwog
dm9pZCBXZWJQcm9jZXNzOjpzZW5kUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVs
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3Rv
cmUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKaW5kZXggNzE4YmZiMjYxODA5NWU0NjUzZDhlNjQ0ZDIwMDJmOWY1YzA3NDczNS4u
YTRlMTRmMTY2OTIxNzYxY2NhYmJlMTZhZTdmYTMzMGM2MmM2Y2I2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00OTYsNiArNDk2LDcgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0RG9tYWluc1dpdGhVc2Vy
SW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik7CisgICAg
dm9pZCBzZXREb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZW5kUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFJ
bW1lZGlhdGVseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggM2U1
ZTcxMTM1ZjliZTQ3ZTM5NTA2NTQxNDFlODI0MjZlMGQwZjE3ZS4uMzUwNWU0MzUzNTdiZDExZDg2
Y2NkNDc0ZmQ1MDI2OTRmZTZjNjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE2Myw2ICsxNjMsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIFNlZWRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJz
dFBhcnR5RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0aGlyZFBhcnR5RG9tYWlu
LCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKSAtPiAoKSBBc3luYwogICAgIFNldFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoZW51bTp1aW50OF90IFdlYkNvcmU6OlRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlKSAtPiAoKSBBc3luYwogICAgIFNldERv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IGRvbWFpbnMpCisgICAgU2V0RG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKEhhc2hNYXA8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21h
aW5zKSAtPiAoKSBBc3luYwogICAgIFNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVk
aWF0ZWx5KCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414099</attachid>
            <date>2020-11-13 15:44:48 -0800</date>
            <delta_ts>2020-11-13 16:55:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-218778-20201113154435.patch</filename>
            <type>text/plain</type>
            <size>52008</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTUyMDljYzg2NjUwNmZj
MDFlZTQwZGJiYmQyM2ZjYmMyYjQ5YmQ2YS4uMjMyZDg1Y2U2ZjkyZWE0OTdhMjZlYjYzNGI5YzA2
Mzk0ZmQyOGYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTExLTEzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbid0IGxv
Z2luIHRvIE1pY3Jvc29mdCBUZWFtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4Nzc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjMzMTU2OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBKb2huIFdpbGFuZGVyLgorCisgICAgICAgIFRoaXMgaXMg
YSB0ZW1wb3JhcnkgcXVpcmsgdG8gYXNzaXN0IGEgaGlnaC10cmFmZmljIHdlYnNpdGUgd2hpbGUg
dGhleQorICAgICAgICBjb21wbGV0ZSB0aGUgbGFyZ2UgdGFzayBvZiBtaWdyYXRpbmcgYXdheSBm
cm9tIGxvZ2luIGZsb3dzIHRoYXQKKyAgICAgICAgcmVxdWlyZSB0aGlyZCBwYXJ0eSBjb29raWVz
LiBUaGlzIHF1aXJrIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHRoZSBzaXRlCisgICAgICAgIGlzIHVw
ZGF0ZWQuCisKKyAgICAgICAgQ3JlYXRlIGEgcXVpcmsgdG8gY2FsbCB0aGUgU3RvcmFnZSBBY2Nl
c3MgQVBJIG9uIGJlaGFsZiBvZiBNaWNyb3NvZnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBz
aXRlLXNwZWNpZmljIHF1aXJrLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hNb3VzZUV2ZW50KToKKyAgICAgICAgUGFzcyBh
ZGRpdGlvbmFsIHBhcmFtZXRlcnMgdG8gYmUgYWJsZSB0byBkaXNwYXRjaCBhIHN5bnRoZXRpYyBj
bGljaworICAgICAgICBpZiBzdG9yYWdlIGFjY2VzcyBpcyBncmFudGVkLgorCisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2V0RG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNDcm9zc1BhZ2VTdG9yYWdl
QWNjZXNzIGNvbnN0KToKKyAgICAgICAgU3RvcmUgZG9tYWlucyBpbiB0aGUgd2ViIHByb2Nlc3Mg
dG8gYXZvaWQgYXN5bmMgY2FsbHMgdG8gdGhlIG5ldHdvcmsKKyAgICAgICAgcHJvY2Vzcy4KKwor
ICAgICAgICAoV2ViQ29yZTo6aXNNaWNyb3NvZnRMb2dpbkVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNNaWNyb3NvZnREb21haW4pOgorICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJr
IGNvbnN0KToKKyAgICAgICAgVGhpcyBpcyB0aGUgcXVpcmsuCisKKyAgICAgICAgKiBwYWdlL1F1
aXJrcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0RG9tYWlu
c1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z3JhbnRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2VzcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdyYW50U3RvcmFnZUFjY2Vz
cyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZUFsbFN0
b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlQWNjZXNzUXVpcmtzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9y
VXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6bG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6bWFwVG9Ub3BEb21haW4pOgorICAgICAgICBUaGUgdXNlciBtaWdodCBn
byBkaXJlY3RseSB0byBsb2dpbi5saXZlLmNvbSB0byBzaWduIGluIHRvIE1pY3Jvc29mdAorICAg
ICAgICBUZWFtcywgYnV0IG1heSBub3QgaGF2ZSBzZWVuIHRoZSBTdG9yYWdlIEFjY2VzcyBwcm9t
cHQuIEluIHRoaXMgY2FzZSwKKyAgICAgICAgd2Ugc2hvdWxkIG1hcCBsaXZlLmNvbSB0byBtaWNy
b3NvZnQuY29tIGFuZCByZXF1ZXN0IHN0b3JhZ2UgYWNjZXNzIGZvcgorICAgICAgICBtaWNyb3Nv
ZnRvbmxpbmUuY29tIHVuZGVyIG1pY3Jvc29mdC5jb20uIFNpbmNlIGxvZ2luLmxpdmUuY29tIGlz
IHVzZWQKKyAgICAgICAgZm9yIG90aGVyIE1pY3Jvc29mdCBsb2dpbiBmbG93cyBiZXNpZGVzIFRl
YW1zLCBhIHVzZXIgbWF5IGhhdmUgdG8KKyAgICAgICAgZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8g
bWljcm9zb2Z0b25saW5lLmNvbSBldmVuIHdoZW4gaXQgaXMgbm90IG5lZWRlZAorICAgICAgICB0
byBjb21wbGV0ZSB0aGUgbG9naW4uIEJ1dCB0aGlzIGd1YXJhbnRlZXMgdGhleSB3aWxsIGFsd2F5
cyBiZQorICAgICAgICBzdWNjZXNzZnVsbHkgbG9nZ2VkIGludG8gYWxsIE1pY3Jvc29mdCBhY2Nv
dW50cy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Lmg6CisgICAgICAgIEluIG9yZGVyIGZvciB0aGUgdXNlciB0byBzdGF5IGxvZ2dlZCBpbiBiZXR3
ZWVuIHNlc3Npb25zLCB3ZSBzaG91bGQKKyAgICAgICAgdXBkYXRlIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiB0byBncmFudCBzdG9yYWdlIGFjY2VzcyBiYXNlZCBvbiB2YWx1ZXMKKyAgICAgICAgc3Rv
cmVkIGluIHRoZSBJVFAgZGF0YWJhc2UgZm9yIHF1aXJrIGRvbWFpbnMuCisKIDIwMjAtMTEtMTIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRm9yY2Ug
d2hlZWwgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSByb290IHRvIGJlIHBhc3NpdmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMjdiYTY2Yzg3MjUxMGU4YTJmN2IxNjYwYmNkYTlkNTYzZjY0YzBhYy4uY2I5ZWE1OWIxMjU3
NzdhNzlkZTUwMmQyYjAwMTM5NjIwYWJiMTBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAor
MjAyMC0xMS0xMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKwor
ICAgICAgICBDYW4ndCBsb2dpbiB0byBNaWNyb3NvZnQgVGVhbXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc3OAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzYzMzE1Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBXaWxhbmRlci4KKwor
ICAgICAgICBUaGlzIGlzIGEgdGVtcG9yYXJ5IHF1aXJrIHRvIGFzc2lzdCBhIGhpZ2gtdHJhZmZp
YyB3ZWJzaXRlIHdoaWxlIHRoZXkKKyAgICAgICAgY29tcGxldGUgdGhlIGxhcmdlIHRhc2sgb2Yg
bWlncmF0aW5nIGF3YXkgZnJvbSBsb2dpbiBmbG93cyB0aGF0CisgICAgICAgIHJlcXVpcmUgdGhp
cmQgcGFydHkgY29va2llcy4gVGhpcyBxdWlyayB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUgc2l0
ZQorICAgICAgICBpcyB1cGRhdGVkLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJrIHRvIGNhbGwg
dGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBvbiBiZWhhbGYgb2YgTWljcm9zb2Z0LgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwp
OgorICAgICAgICBSZWxheCB0aGUgcmVxdWlyZW1lbnQgZm9yIHVzZXIgaW50ZXJhY3Rpb24gZm9y
IGEgc3BlY2lmaWMgdGhpcmQgcGFydHkKKyAgICAgICAgbmVlZGluZyBjb29raWVzIGZvciBhdXRo
ZW50aWNhdGlvbiBwdXJwb3Nlcy4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29va2llQWNjZXNzKToKKyAgICAgICAgUmVsYXgg
dGhlIHJlcXVpcmVtZW50IGZvciB1c2VyIGludGVyYWN0aW9uIGZvciBhIHNwZWNpZmljIHRoaXJk
IHBhcnR5CisgICAgICAgIG5lZWRpbmcgY29va2llcyBmb3IgYXV0aGVudGljYXRpb24gcHVycG9z
ZXMuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tp
bmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0VwaGVtZXJhbCk6CisgICAgICAgIFJl
bGF4IHVzZXIgaW50ZXJhY3Rpb24gZm9yIHJlYXNvbnMgYWJvdmUuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsVXBkYXRlUHJldmFsZW50RG9t
YWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3I6Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0RG9tYWluc1dp
dGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0
RG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6Omhhc0Nyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0RG9tYWluc1dpdGhDcm9zc1BhZ2VT
dG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXREb21haW5zV2l0aENyb3Nz
UGFnZVN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICBBZGQgcXVpcmsnZCBkb21haW5zIHRvIGhhdmUg
cGFnZSBsZXZlbCBzdG9yYWdlIGFjY2VzcyB0byBiZSBhYmxlIHRvCisgICAgICAgIHVzZSBkb2N1
bWVudC5jb29raWUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgIEZvcndhcmQg
ZG9tYWlucyB3aXRoIHRoZSBzdG9yYWdlIGFjY2VzcyBxdWlyayB0byB0aGUgd2ViIHByb2Nlc3Mg
dG8KKyAgICAgICAgYXZvaWQgYW4gYXN5bmMgY2FsbCB0byB0aGUgbmV0d29yayBwcm9jZXNzLgor
CiAyMDIwLTExLTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZvcmNlIHdoZWVsIGV2ZW50IGxpc3RlbmVycyBvbiB0aGUgcm9vdCB0byBiZSBwYXNz
aXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4
IDg3NGU1NjA4Y2RjYzFjZWZhY2I3ODZmYTBiMDNkMjAwN2JjNDQ5NmMuLjc2ZGY3N2NiYzgzYTVj
MDU2MDc3MDdhMTYxNzQ5NGNkNTU3YzU3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTI2NSw3ICsyNjYsOSBAQCB2b2lkIERvY3VtZW50U3Rv
cmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NRdWlyayhSZWdpc3RyYWJsZURvbWFpbiYm
IHJlcXVlcwogICAgIEFTU0VSVChtX2RvY3VtZW50LnNldHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQ
SUVuYWJsZWQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC5mcmFtZSgpICYmIG1f
ZG9jdW1lbnQuZnJhbWUoKS0+cGFnZSgpKTsKIAotICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+cGFn
ZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHJlcXVl
c3RpbmdEb21haW4pLCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qo
bV9kb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKSwgKm1fZG9j
dW1lbnQuZnJhbWUoKSwgbV9zdG9yYWdlQWNjZXNzU2NvcGUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgYXV0byB0b3BGcmFtZURvbWFpbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWFwVG9Ub3BE
b21haW4oUmVnaXN0cmFibGVEb21haW4obV9kb2N1bWVudC50b3BEb2N1bWVudCgpLnVybCgpKSk7
CisKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShyZXF1ZXN0aW5nRG9tYWluKSwgV1RGTW92ZSh0b3BG
cmFtZURvbWFpbiksICptX2RvY3VtZW50LmZyYW1lKCksIG1fc3RvcmFnZUFjY2Vzc1Njb3BlLCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZjc3ZTU2NjBjOTg5YTY1MWM3YTkxMzg0
ODhhNzFlMjJiYTk3MTM0Mi4uNzhhOTY0NjA3M2YwYTQ3YjJmOTdhZjIwODZmZTI4YWRkM2ZhOGFk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgRWxlbWVu
dDo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1F
dmVudCwgY29uc3QKICAgICBpZiAoZGlzcGF0Y2hQb2ludGVyRXZlbnRJZk5lZWRlZCgqdGhpcywg
bW91c2VFdmVudC5nZXQoKSwgcGxhdGZvcm1FdmVudCwgZGlkTm90U3dhbGxvd0V2ZW50KSA9PSBT
aG91bGRJZ25vcmVNb3VzZUV2ZW50OjpZZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGlmIChRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50ID09IGRv
Y3VtZW50KCkucXVpcmtzKCkudHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKCp0aGlz
LCBldmVudFR5cGUpKQorICAgIGlmIChRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3Vs
ZENhbmNlbEV2ZW50ID09IGRvY3VtZW50KCkucXVpcmtzKCkudHJpZ2dlck9wdGlvbmFsU3RvcmFn
ZUFjY2Vzc1F1aXJrKCp0aGlzLCBwbGF0Zm9ybUV2ZW50LCBldmVudFR5cGUsIGRldGFpbCwgcmVs
YXRlZFRhcmdldCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVCghbW91c2VF
dmVudC0+dGFyZ2V0KCkgfHwgbW91c2VFdmVudC0+dGFyZ2V0KCkgIT0gcmVsYXRlZFRhcmdldCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IDNl
OWMwZjg0ZjI1Y2ZkMWFiMDA5YmU3YzJhY2UyMDBlNGE1Nzk3ZWMuLmUwMmJmZDhhNGVkZDdjOWI3
ZjBlNDMwNTRiYzAzOTM3YjIyZDVkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5oCkBAIC0zOSw2ICszOSw5IEBAIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiBjbGFzcyBSZXNvdXJjZUxvYWRPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOworCiAgICAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcv
I3JlcXVlc3QtZGVzdGluYXRpb24tc2NyaXB0LWxpa2UKICAgICBlbnVtIGNsYXNzIEZldGNoRGVz
dGluYXRpb25Jc1NjcmlwdExpa2UgOiBib29sIHsgWWVzLCBObyB9OwogCkBAIC02NSw2ICs2OCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzU3RhdGlzdGljcygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RG9tYWluc1dpdGhVc2VySW50ZXJh
Y3Rpb24oSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFRvcEZyYW1lRG9t
YWluLCBTdWJSZXNvdXJjZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKaW5kZXgg
OTI3ZmFiOGEwNTM3NzdmNDRhMTRjNTMyMTdmMmY1ZWQ0NjA0NjQ1MC4uZjJhOWM2MjI1MDRhZjkx
YWJjOWE0OWRiNDEzOGI3YzFjYjVkYmEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcApAQCAtNDIs
NiArNDIsNyBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkxheW91
dFVuaXQuaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1
ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5o
IgpAQCAtOTYxLDkgKzk2MiwyNiBAQCBzdGF0aWMgYm9vbCBpc0tpbmphTG9naW5BdmF0YXJFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK3N0
YXRpYyBib29sIGlzTWljcm9zb2Z0TG9naW5FbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQp
Cit7CisgICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFtZXMoKTsKKyAgICByZXR1
cm4gY2xhc3NOYW1lcy5jb250YWlucygiZ2x5cGhfc2lnbkluX2NpcmNsZSIpIHx8IGNsYXNzTmFt
ZXMuY29udGFpbnMoIm1lY3RybF9oZWFkZXJ0ZXh0IikgfHwgY2xhc3NOYW1lcy5jb250YWlucygi
bWVjdHJsX2hlYWRlciIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImV4dC1idXR0b24gcHJpbWFy
eSIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImV4dC1wcmltYXJ5Iik7Cit9CisKK3N0YXRpYyBi
b29sIGlzTWljcm9zb2Z0RG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiBtaWNyb3NvZnRE
b3RDb20gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxl
RG9tYWluU3RyaW5nKCJtaWNyb3NvZnQuY29tIl9zKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmVnaXN0cmFibGVEb21haW4+IGxpdmVEb3RDb20gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJsaXZlLmNvbSJfcyk7CisK
KyAgICByZXR1cm4gZG9tYWluID09IG1pY3Jvc29mdERvdENvbSB8fCBkb21haW4gPT0gbGl2ZURv
dENvbTsKK30KICNlbmRpZgogCi1RdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0
cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdAorUXVpcmtzOjpTdG9yYWdlQWNjZXNz
UmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCwgY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWlsLCBFbGVtZW50KiByZWxhdGVkVGFyZ2V0
KSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYg
KCFuZWVkc1F1aXJrcygpKQpAQCAtMTAzMywxMCArMTA1MSwzMiBAQCBRdWlya3M6OlN0b3JhZ2VB
Y2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoY29u
c3QgRWxlbQogICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1
bHQ6OlNob3VsZENhbmNlbEV2ZW50OwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAg
ICAgLy8gTWljcm9zb2Z0IFRlYW1zIGxvZ2luIGNhc2UuCisgICAgICAgIC8vIEZJWE1FKDIxODc3
OSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2UgbWljcm9zb2Z0LmNvbSBjb21wbGV0ZXMgdGhlaXIg
bG9naW4gZmxvdyByZWRlc2lnbi4KKyAgICAgICAgaWYgKGlzTWljcm9zb2Z0RG9tYWluKGRvbWFp
bikgJiYgaXNNaWNyb3NvZnRMb2dpbkVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGF1
dG8gZmlyc3RQYXJ0eURvbWFpbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWFwVG9Ub3BEb21h
aW4oUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG1fZG9jdW1lbnQt
PnRvcERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5ob3N0KCkpKTsKKyAgICAgICAgICAgIGlm
IChhdXRvIGxvZ2luRG9tYWluID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbkZv
ckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKCps
b2dpbkRvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbikpIHsKKyAgICAgICAgICAgICAgICAgICAgRG9j
dW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zvck5vbkRvY3VtZW50UXVp
cmsoKm1fZG9jdW1lbnQsIFdURk1vdmUoKmxvZ2luRG9tYWluKSwgW2ZpcnN0UGFydHlEb21haW4s
IGxvZ2luRG9tYWluLCAmZWxlbWVudCwgcGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWws
IHJlbGF0ZWRUYXJnZXRdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHN0b3JhZ2VBY2Nlc3NHcmFu
dGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdG9yYWdlQWNjZXNz
R3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNX
aXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyh7eyBmaXJzdFBhcnR5RG9tYWluLCAqbG9naW5Eb21h
aW4gfX0sIFsmZWxlbWVudCwgcGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJlbGF0
ZWRUYXJnZXRdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5kaXNw
YXRjaE1vdXNlRXZlbnQocGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJlbGF0ZWRU
YXJnZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkQ2FuY2VsRXZlbnQ7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFF1aXJr
czo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CisgICAgICAgIH0K
ICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKKyAgICBVTlVTRURfUEFS
QU0ocGxhdGZvcm1FdmVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGV2ZW50VHlwZSk7CisgICAgVU5V
U0VEX1BBUkFNKGRldGFpbCk7CisgICAgVU5VU0VEX1BBUkFNKHJlbGF0ZWRUYXJnZXQpOwogI2Vu
ZGlmCiAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2Fu
Y2VsRXZlbnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaAppbmRleCAyZjU0MGVmYmJhMjY2ZTAyMzgwNWUy
OTk5MzVjODliMWU3OWFlYmRlLi41YTVmOGMxODI3YzkwMGUyYmUzM2VmNDk2ODI5OGMzYWI5YzM0
MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgRXZlbnRUYXJn
ZXQ7CiBjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBM
YXlvdXRVbml0OworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogCiBjbGFzcyBRdWlya3Mgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFF1aXJrcyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtMTEyLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEF2b2lkUGFzdGlu
Z0ltYWdlc0FzV2ViQ29udGVudCgpIGNvbnN0OwogCiAgICAgZW51bSBTdG9yYWdlQWNjZXNzUmVz
dWx0IDogYm9vbCB7IFNob3VsZE5vdENhbmNlbEV2ZW50LCBTaG91bGRDYW5jZWxFdmVudCB9Owot
ICAgIFN0b3JhZ2VBY2Nlc3NSZXN1bHQgdHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJr
KGNvbnN0IEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OworICAg
IFN0b3JhZ2VBY2Nlc3NSZXN1bHQgdHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVs
ZW1lbnQmLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUsIGludCwgRWxlbWVudCopIGNvbnN0OwogCiAgICAgYm9vbCBuZWVkc1ZQOUZ1bGxSYW5n
ZUZsYWdRdWlyaygpIGNvbnN0OwogICAgIGJvb2wgbmVlZHNIRFJQaXhlbERlcHRoUXVpcmsoKSBj
b25zdDsKQEAgLTE1NCw0ICsxNTUsNCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgT3B0aW9uYWw8
Ym9vbD4gbV9uZWVkc0JsYWNrRnVsbHNjcmVlbkJhY2tncm91bmRRdWlyazsKIH07CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCA4NDYxOGNlNDExOTEy
MWI3ZGE5NTU4NzA4YTJmOTRiMWU0ZWJlNDlhLi4xYTY3ZjMzNmUzMjc3ZTk5MjI4OWI1NWMzNjQy
MTc0ODYxM2UwOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC0yMDksNiArMjA5LDE4IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFz
Rmlyc3RQYXJ0eShjb25zdCBWZWN0CiAgICAgbV9yZWdpc3RyYWJsZURvbWFpbnNXaXRoVXNlcklu
dGVyYWN0aW9uQXNGaXJzdFBhcnR5LmFkZChkb21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkp
OwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0RG9tYWluc1dpdGhDcm9zc1Bh
Z2VTdG9yYWdlQWNjZXNzKGNvbnN0IEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1YlJlc291cmNl
RG9tYWluPiYgZG9tYWlucykKK3sKKyAgICBtX3BhaXJzR3JhbnRlZENyb3NzUGFnZVN0b3JhZ2VB
Y2Nlc3MuY2xlYXIoKTsKKyAgICBmb3IgKGF1dG8mIHRvcEZyYW1lRG9tYWluIDogZG9tYWlucy5r
ZXlzKCkpCisgICAgICAgIGdyYW50Q3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyh0b3BGcmFtZURvbWFp
biwgZG9tYWlucy5nZXQodG9wRnJhbWVEb21haW4pKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdyYW50Q3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFtZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiByZXNvdXJjZURvbWFp
bikKK3sKKyAgICBtX3BhaXJzR3JhbnRlZENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MuYWRkKHRvcEZy
YW1lRG9tYWluLCByZXNvdXJjZURvbWFpbik7Cit9CisKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAog
ewogICAgIGlmIChmcmFtZUlEKSB7CkBAIC0yMjcsNiArMjM5LDEwIEBAIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvCiAgICAgICAgICAgICBpZiAoaXQgIT0gcGFnZXNHcmFudGVkSXRlcmF0b3ItPnZh
bHVlLmVuZCgpICYmIGl0LT52YWx1ZSA9PSByZXNvdXJjZURvbWFpbikKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIGF1dG8gaXQgPSBtX3BhaXJzR3Jh
bnRlZENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MuZmluZChmaXJzdFBhcnR5RG9tYWluKTsKKyAgICAg
ICAgaWYgKGl0ICE9IG1fcGFpcnNHcmFudGVkQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcy5lbmQoKSAm
JiBpdC0+dmFsdWUgPT0gcmVzb3VyY2VEb21haW4pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDQsNiArMjYwLDExIEBAIFZlY3RvcjxT
dHJpbmc+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMo
KSBjb25zdAogICAgIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdyYW50U3RvcmFnZUFj
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKKyAgICBpZiAoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKGZpcnN0UGFydHlE
b21haW4sIHJlc291cmNlRG9tYWluKSkgeworICAgICAgICBncmFudENyb3NzUGFnZVN0b3JhZ2VB
Y2Nlc3MoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAgICAgIGlmIChmaXJzdFBhcnR5RG9t
YWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI5Nyw2ICszMTgsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpCiB7CiAg
ICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CiAgICAgbV9mcmFtZXNHcmFu
dGVkU3RvcmFnZUFjY2Vzcy5jbGVhcigpOworICAgIG1fcGFpcnNHcmFudGVkQ3Jvc3NQYWdlU3Rv
cmFnZUFjY2Vzcy5jbGVhcigpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbmRzKQpAQCAt
MzUxLDYgKzM3Myw1MiBAQCBPcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEbwogCiAgICAgcmV0dXJuIG1f
YWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXM7CiB9CisKK0hhc2hNYXA8UmVnaXN0cmFibGVEb21h
aW4sIFJlZ2lzdHJhYmxlRG9tYWluPiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlQWNj
ZXNzUXVpcmtzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+PiBtYXAgPSBbXSB7CisgICAgICAgIEhhc2hN
YXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiBtYXA7CisgICAgICAgIG1h
cC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURv
bWFpblN0cmluZygibWljcm9zb2Z0LmNvbSIpLAorICAgICAgICAgICAgUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0
b25saW5lLmNvbSJfcykpOworICAgICAgICByZXR1cm4gbWFwOworICAgIH0oKTsKKyAgICByZXR1
cm4gbWFwLmdldCgpOworfQorCitib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21h
aW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbihjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiByZXNvdXJjZURvbWFpbikKK3sKKyAgICBh
dXRvIGxvZ2luRG9tYWluID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRv
bWFpbkZvckZpcnN0UGFydHkodG9wRnJhbWVEb21haW4pOworICAgIHJldHVybiBsb2dpbkRvbWFp
biAmJiByZXNvdXJjZURvbWFpbiA9PSBsb2dpbkRvbWFpbjsKK30KKworYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhv
dXRQcmlvclVzZXJJbnRlcmFjdGlvbihjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbikKK3sKKyAgICByZXR1
cm4gbG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbih0b3BGcmFtZURvbWFpbiwgcmVz
b3VyY2VEb21haW4pOworfQorCitPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbkZvckZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluKQoreworICAgIGF1dG8gaXQgPSBzdG9yYWdlQWNjZXNzUXVp
cmtzKCkuZmluZCh0b3BGcmFtZURvbWFpbik7CisgICAgaWYgKGl0ICE9IHN0b3JhZ2VBY2Nlc3NR
dWlya3MoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworfQorCitSZWdpc3RyYWJsZURvbWFpbiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
Om1hcFRvVG9wRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Ub01hcCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVn
aXN0cmFibGVEb21haW4+PiBtYXAgPSBbXSB7CisgICAgICAgIEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiBtYXA7CisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibGl2
ZS5jb20iKSwKKyAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoIm1pY3Jvc29mdC5jb20iX3MpKTsKKyAgICAgICAg
cmV0dXJuIG1hcDsKKyAgICB9KCk7CisKKyAgICBhdXRvIGl0ID0gbWFwLmdldCgpLmZpbmQoZG9t
YWluVG9NYXApOworICAgIGlmIChpdCAhPSBtYXAuZ2V0KCkuZW5kKCkpCisgICAgICAgIHJldHVy
biBpdC0+dmFsdWU7CisgICAgcmV0dXJuIGRvbWFpblRvTWFwOworfQorCiAjZW5kaWYgLy8gRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggNDRj
YWMxMGFlMjk0ZjhkYzQ1YjE1MTg1NjcyZWU4MjgxNjE0NDM4Yy4uY2EzNGU4OWI1YzQyZTgyNDY2
ZTYwMWZkNDQwOGU1Y2JjNjkzMjI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0xOTksNiArMTk5LDgg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1Rv
QmxvY2tBbmREZWxldGVDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4m
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFy
dHkoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0RG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKGNvbnN0IEhhc2hNYXA8
VG9wRnJhbWVEb21haW4sIFN1YlJlc291cmNlRG9tYWluPiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ3JhbnRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Y29uc3QgU3ViUmVzb3VyY2VEb21haW4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
c291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgUGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkg
Y29uc3Q7CkBAIC0yMTIsNiArMjE0LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJl
c291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVj
b3JhdGlvbkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0
cmFibGVEb21haW4+JiBzdG9yYWdlQWNjZXNzUXVpcmtzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgY2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91
dFByaW9yVXNlckludGVyYWN0aW9uKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UmVnaXN0
cmFibGVEb21haW4+IGxvZ2luRG9tYWluRm9yRmlyc3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGxvZ2luRG9tYWluTWF0Y2hl
c1JlcXVlc3RpbmdEb21haW4oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJSZXNvdXJj
ZURvbWFpbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWdpc3RyYWJsZURvbWFpbiBt
YXBUb1RvcERvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogI2VuZGlmCiAgICAgCiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtMjcxLDYgKzI3OSw3IEBAIHByaXZhdGU6
CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNXaXRo
VXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5OwogICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIs
IEhhc2hNYXA8RnJhbWVJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4+IG1fZnJhbWVzR3Jh
bnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDxS
ZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+PiBtX3BhZ2VzR3JhbnRlZFN0b3Jh
Z2VBY2Nlc3M7CisgICAgSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+
IG1fcGFpcnNHcmFudGVkQ3Jvc3NQYWdlU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRp
b25hbDxTZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRp
b25hbDxTZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
aW5kZXggNGU3YzYwOTllZDAyZWNjZTJkZDA2YTFkZGJmMzcxZjVhMDRjYmQ5MC4uYjczMGRkZTg4
YjQwNDZjZjU5MDNlYzNkNjk4MTNmNjJkNzYxN2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0xMzI0LDcgKzEzMjQs
MTAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9y
YWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBBU1NFUlQoc3ViRnJhbWVTdGF0dXMuZmlyc3QgPT0gQWRkZWRSZWNvcmQ6
Ok5vKTsKLSAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFp
biwgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAg
ICAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NG
b3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWlu
LCB0b3BGcmFtZURvbWFpbikpCisgICAgICAgICAgICBBU1NFUlQoaGFzSGFkVXNlckludGVyYWN0
aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZykpOworI2VuZGlm
CiAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3Qoc3RvcmFnZUFjY2Vzc1VuZGVy
VG9wRnJhbWVEb21haW5zUXVlcnksIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+KHsgdG9wRnJh
bWVEb21haW4gfSksICpzdWJGcmFtZVN0YXR1cy5zZWNvbmQpOwogICAgIH0KIApAQCAtMTM0OCw3
ICsxMzUxLDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omdy
YW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdHVzLmZpcnN0ID09IEFkZGVk
UmVjb3JkOjpObyk7Ci0gICAgICAgIEFTU0VSVChoYXNIYWRVc2VySW50ZXJhY3Rpb24oc3ViRnJh
bWVEb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSk7CisjaWYgQVNTRVJUX0VOQUJM
RUQKKyAgICAgICAgaWYgKCFOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdl
QWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFt
ZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKQorICAgICAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsK
KyNlbmRpZgogICAgICAgICBBU1NFUlQoaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3Vn
aFByb21wdCgqc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0b3BGcmFtZURvbWFpbikgPT0gU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpOwogI2VuZGlmCiAgICAgICAgIHNldFVzZXJJbnRl
cmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdHJ1ZSwgV2FsbFRpbWU6Om5vdygpKTsKQEAgLTIwMDMs
NyArMjAwOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAgICAgcmVtb3ZlQWxsU3RvcmFn
ZUFjY2VzcyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogCiAgICAgYXV0byByZWdpc3RyYWJs
ZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciA9IGVuc3VyZVByZXZhbGVudFJlc291
cmNlc0ZvckRlYnVnTW9kZSgpOwotICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVz
Rm9yIGRvbWFpbnNUb0Jsb2NrIHsgcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNv
b2tpZXNGb3IsIHsgfSwgeyB9IH07CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tp
ZXNGb3IgZG9tYWluc1RvQmxvY2sgeyByZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRl
Q29va2llc0ZvciwgeyB9LCB7IH0sIHsgfSB9OwogICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9y
RG9tYWlucyhkb21haW5zVG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIApA
QCAtMjAzNiw3ICsyMDQyLDcgQEAgQ29va2llQWNjZXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjb29raWVBY2Nlc3MoY29uc3QgU3ViUmVzb3VyY2UKICAgICBpZiAoIWFy
ZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKHRvcEZyYW1lRG9tYWluKSAmJiAhaXNQ
cmV2YWxlbnQpCiAgICAgICAgIHJldHVybiBDb29raWVBY2Nlc3M6OkJhc2VkT25Db29raWVQb2xp
Y3k7CiAKLSAgICBpZiAoIWhhZFVzZXJJbnRlcmFjdGlvbikKKyAgICBpZiAoIU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91
dFByaW9yVXNlckludGVyYWN0aW9uKHN1YnJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbikg
JiYgIWhhZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0dXJuIENvb2tpZUFjY2Vzczo6Q2Fu
bm90UmVxdWVzdDsKIAogICAgIHJldHVybiBDb29raWVBY2Nlc3M6Ok9ubHlJZkdyYW50ZWQ7CkBA
IC0yMTAzLDYgKzIxMDksMjIgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1dpdGhVc2VySW4KICAgICByZXR1cm4g
cmVzdWx0czsKIH0KIAorSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zV2l0aFN0b3JhZ2VB
Y2Nlc3MoKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAg
SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IHJlc3VsdHM7CisgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNl
LCAiU0VMRUNUIHN1YkZyYW1lRG9tYWluLCByZWdpc3RyYWJsZURvbWFpbiBGUk9NIChTRUxFQ1Qg
by5yZWdpc3RyYWJsZURvbWFpbiBhcyBzdWJGcmFtZURvbWFpbiwgcy50b3BMZXZlbERvbWFpbklE
IGFzIHRvcExldmVsRG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgYXMgbyBJTk5FUiBKT0lO
IFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyBhcyBzIFdIRVJFIG8uZG9tYWluSUQg
PSBzLmRvbWFpbklEKSBhcyB6IElOTkVSIEpPSU4gT2JzZXJ2ZWREb21haW5zIE9OIGRvbWFpbklE
ID0gei50b3BMZXZlbERvbWFpbklEOyJfcyk7CisKKyAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0spCisgICAgICAgIHJldHVybiByZXN1bHRzOworCisgICAgd2hpbGUgKHN0
YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmVzdWx0cy5hZGQoUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhz
dGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSksIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRD
cmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc3RhdGVtZW50LmdldENvbHVtblRleHQo
MCkpKTsKKworICAgIHJldHVybiByZXN1bHRzOworfQorCiB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CkBAIC0yMTEwLDEzICsyMTMyLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVy
CiAgICAgYXV0byBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSB0aGlzLT5kb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoKTsKICAgICBhdXRvIGRvbWFpbnNUb0Jsb2Nr
QnV0S2VlcENvb2tpZXNGb3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9y
KCk7CiAgICAgYXV0byBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSA9IHRo
aXMtPmRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KCk7CisgICAgYXV0byBk
b21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MgPSB0aGlzLT5kb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3Mo
KTsKIAotICAgIGlmIChkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgp
ICYmIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5LmlzRW1wdHkoKSkgeworICAgIGlmIChkb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0Jsb2Nr
QnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5LmlzRW1wdHkoKSAmJiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9C
bG9jayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9tYWluc1RvQmxvY2tC
dXRLZWVwQ29va2llc0ZvciwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkg
fTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9j
ayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9tYWluc1RvQmxvY2tCdXRL
ZWVwQ29va2llc0ZvciwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHksIGRv
bWFpbnNXaXRoU3RvcmFnZUFjY2VzcyB9OwogCiAgICAgaWYgKGRlYnVnTG9nZ2luZ0VuYWJsZWQo
KSAmJiAoIWRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgfHwgIWRv
bWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpKSkKICAgICAgICAgZGVidWdM
b2dEb21haW5zSW5CYXRjaGVzKCJBcHBseWluZyBjcm9zcy1zaXRlIHRyYWNraW5nIHJlc3RyaWN0
aW9ucyIsIGRvbWFpbnNUb0Jsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggZDU1NTIzN2JkZDEyY2RjZGJkMTNjYzExYTBl
ZjRkNmQ3OTEyYzIwOC4uMjY0ZWFhYTA1ZTQ1NzJjZGUxZDAwMjQ1MDFiYzRjOWY1MTdjNzFlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmgKQEAgLTE1OSw2ICsxNTksNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4gZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKCkgY29uc3Q7CiAgICAgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCkg
Y29uc3Q7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbkFzRmlyc3RQYXJ0eSgpIGNvbnN0OworICAgIEhhc2hNYXA8VG9wRnJhbWVEb21haW4s
IFN1YlJlc291cmNlRG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoKSBjb25zdDsKIAog
ICAgIHN0cnVjdCBEb21haW5EYXRhIHsKICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4
IGU0NDU2MDM1ZTE4MmFhZWI0YWRlMmI4NmRiMWE2OWFiMjg0MTQ4YmMuLjgyMzFhZTRiNzU4N2U4
ZWY4OGE5NTUzNTMyNWJmZmJkMGFmMmQ4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGUKICAgICByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsgfSk7CiAKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmRE
ZWxldGVDb29raWVzRm9yID0gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCk7
Ci0gICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sg
eyByZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgeyB9LCB7IH0g
fTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9j
ayB7IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0sIHsg
fSwgeyB9fTsKICAgICB1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMoZG9tYWluc1RvQmxv
Y2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKQEAgLTgzOCw3ICs4MzgsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyBkb21haW5z
VG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNG
b3IsIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5IH07CisgICAgUmVnaXN0
cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyBkb21haW5zVG9C
bG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3Is
IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5LCB7IH0gfTsKIAogICAgIGlm
IChkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgJiYgKCFkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tp
ZXNGb3IuaXNFbXB0eSgpIHx8ICFkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmlzRW1w
dHkoKSkpCiAgICAgICAgIGRlYnVnTG9nRG9tYWluc0luQmF0Y2hlcygiQXBwbHlpbmcgY3Jvc3Mt
c2l0ZSB0cmFja2luZyByZXN0cmljdGlvbnMiLCBkb21haW5zVG9CbG9jayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGQ1YTk2NTI1Y2Jh
ZTZkZWE3NzMwYzJlOTQyN2M1NDlmZDE2YjZkMTcuLmExNzMwOTg3MmU5Mjg2MzJlYjY1MmI5OTk2
YjMwMDg5M2U2OGRiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRXBoZW1lcmFsKGNvbnN0IFJlZ2lzdHIK
IHsKICAgICBBU1NFUlQoaXNFcGhlbWVyYWwoKSk7CiAKLSAgICBpZiAoIW1fbmV0d29ya1Nlc3Np
b24gfHwgIW1fZG9tYWluc1dpdGhFcGhlbWVyYWxVc2VySW50ZXJhY3Rpb24uY29udGFpbnMoc3Vi
RnJhbWVEb21haW4pKQorICAgIGlmICghbV9uZXR3b3JrU2Vzc2lvbiB8fCAoIW1fZG9tYWluc1dp
dGhFcGhlbWVyYWxVc2VySW50ZXJhY3Rpb24uY29udGFpbnMoc3ViRnJhbWVEb21haW4pICYmICFO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJw
b3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVE
b21haW4pKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBzY29wZSwg
dG9wRnJhbWVEb21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwogCiAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4gcmVxdWVzdENvbmZpcm1hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVEb21haW4sIHRvcEZy
YW1lRG9tYWluLCBmcmFtZUlELCB3ZWJQYWdlSUQsIHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIG11
dGFibGUgewpAQCAtMTI1Nyw2ICsxMjU3LDIzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yCiAg
ICAgICAgICAgICBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uUXVpcmsgPSBkb21haW5zV2l0
aFVzZXJJbnRlcmFjdGlvblF1aXJrOwogICAgICAgICAgICAgbV9uZXR3b3JrU2Vzc2lvbi0+bmV0
d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvblF1aXJrKSwgMCk7CiAgICAgICAgIH0KKworICAgICAgICBIYXNo
TWFwPFRvcEZyYW1lRG9tYWluLCBTdWJSZXNvdXJjZURvbWFpbj4gZG9tYWluc1dpdGhTdG9yYWdl
QWNjZXNzUXVpcms7CisgICAgICAgIGZvciAoYXV0byYgZmlyc3RQYXJ0eURvbWFpbiA6IGRvbWFp
bnNUb0Jsb2NrLmRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcy5rZXlzKCkpIHsKKyAgICAgICAgICAg
IGF1dG8gcmVxdWVzdGluZ0RvbWFpbiA9IGRvbWFpbnNUb0Jsb2NrLmRvbWFpbnNXaXRoU3RvcmFn
ZUFjY2Vzcy5nZXQoZmlyc3RQYXJ0eURvbWFpbik7CisgICAgICAgICAgICBpZiAoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKGZpcnN0UGFy
dHlEb21haW4sIHJlcXVlc3RpbmdEb21haW4pKQorICAgICAgICAgICAgICAgIGRvbWFpbnNXaXRo
U3RvcmFnZUFjY2Vzc1F1aXJrLmFkZChmaXJzdFBhcnR5RG9tYWluLCByZXF1ZXN0aW5nRG9tYWlu
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX2RvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFn
ZUFjY2Vzc1F1aXJrICE9IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKSB7CisgICAgICAg
ICAgICBpZiAobV9uZXR3b3JrU2Vzc2lvbikgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
KQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0RG9tYWluc1dpdGhDcm9z
c1BhZ2VTdG9yYWdlQWNjZXNzKGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKTsKKyAgICAg
ICAgICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6U2V0RG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKGRvbWFpbnNXaXRo
U3RvcmFnZUFjY2Vzc1F1aXJrKSwgW3RoaXMsIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJr
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9kb21haW5zV2l0aENyb3NzUGFn
ZVN0b3JhZ2VBY2Nlc3NRdWlyayA9IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAppbmRleCAyMTNjOGQwZWQwYTRkZGVmYzM5YjgwNDJlMDU4ZjgwMjZhZmI2ODU0
Li5lM2ZlMzcxOTkzMzEwYmVlZmUyZWNhZjRmNGQ5YTdiNzIwMzM5Mzk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC02OCwxMSArNjgsMTYgQEAg
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBTaG91bGRJbmNsdWRlTG9jYWxob3N0IDogYm9vbCB7
IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSA6IGJvb2wgeyBObywgWWVzIH07CisKK3VzaW5nIFRvcEZyYW1lRG9tYWluID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW47Cit1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOworCiBzdHJ1Y3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3IgewogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlu
c1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yOwogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4gZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKICAgICBWZWN0b3I8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNG
aXJzdFBhcnR5OwotICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVz
Rm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmlzb2xh
dGVkQ29weSgpLCBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eS5pc29sYXRl
ZENvcHkoKSB9OyB9CisgICAgSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21h
aW4+IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzczsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQ29va2llc0ZvciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0Js
b2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvQmxvY2tCdXRL
ZWVwQ29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25B
c0ZpcnN0UGFydHkuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyB9OyB9
CiB9Owogc3RydWN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVE
YXRhRm9yIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNU
b0RlbGV0ZUFsbENvb2tpZXNGb3I7CkBAIC0zMzAsNiArMzM1LDcgQEAgcHJpdmF0ZToKICAgICBI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoRXBoZW1lcmFsVXNlckludGVy
YWN0aW9uOwogCiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvblF1aXJrOworICAgIEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1YlJlc291
cmNlRG9tYWluPiBtX2RvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzc1F1aXJrOwogCiAg
ICAgYm9vbCBtX2hhc1NjaGVkdWxlZFByb2Nlc3NTdGF0cyB7IGZhbHNlIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCmlu
ZGV4IGU2MjYzNDI0NGU4MWE5ZWM1ZTc2N2NiNzJhZjA3MWVkZTM1ZGY5NTMuLmVlOWRhYWIzZGZi
MzJlODg5MDYxOWE4M2ZlMDMzNTJkMTNkNGFiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtMzMsNiArMzMsOSBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycyB7CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKKyAgICB1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOworCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwogICAgIFN0cmluZyBhcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBhcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwpAQCAtNDksNiArNTIsOCBAQCBz
dHJ1Y3QgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTo6QWxsIH07CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CisgICAgSGFzaE1hcDxUb3BGcmFt
ZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJr
OworCiAjZW5kaWYKICAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHsgZmFs
c2UgfTsKIApAQCAtNzUsNiArODAsNyBAQCB2b2lkIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIGVuY29kZXIgPDwgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZTsKICAgICBlbmNvZGVyIDw8IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOworICAgIGVu
Y29kZXIgPDwgZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7CiAjZW5kaWYKICAgICBlbmNv
ZGVyIDw8IHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwogfQpAQCAtMTUxLDYgKzE1Nywx
MSBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgIGRlY29kZXIgPj4gZG9tYWluc1dpdGhV
c2VySW50ZXJhY3Rpb247CiAgICAgaWYgKCFkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbikKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxIYXNoTWFwPFRv
cEZyYW1lRG9tYWluLCBTdWJSZXNvdXJjZURvbWFpbj4+IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vz
c1F1aXJrOworICAgIGRlY29kZXIgPj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7Cisg
ICAgaWYgKCFkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyaykKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCA9IGZhbHNlOwpAQCAtMTc0LDYgKzE4NSw3IEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERl
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgKnRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUsCiAgICAgICAgIFdURk1vdmUoKmRvbWFpbnNXaXRoVXNlcklu
dGVyYWN0aW9uKSwKKyAgICAgICAgV1RGTW92ZSgqZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVp
cmspLAogI2VuZGlmCiAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCiAgICAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDdiMjQ1ZTNjMDQ4NWM1M2NiNzkzZjNmNGMyYjcwYWIzZGQw
MWI4NTEuLjM0ODdkNGUzNDRlMThhMjAyM2QyOWJlYzQ2MGNhY2FlMDU1MjU3ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTI2NSwxMSArMTI2NSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzcwog
ewogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFRo
aXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmcoc2Vzc2lvbklELCBkb21haW4pLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0
RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4mJiBkb21haW5zKQogewogICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJQcm9j
ZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCiAgICAgICAgIHByb2Nlc3NQb29sLT5zZXREb21h
aW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiB7IGRvbWFpbnMgfSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0RG9tYWlu
c1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1YlJl
c291cmNlRG9tYWluPiYmIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sgICAgCisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
CisgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNz
UG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPnNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3Rv
cmFnZUFjY2VzcyhIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBTdWJSZXNvdXJjZURvbWFpbj4geyBk
b21haW5zIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Cit9CisKICNlbmRpZiAvLyBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKGJvb2wgZGVidWdNb2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAppbmRleCBiNmVmNzU0YmI1MTJhZTA4OGQ1MDIyZGJhOGE1NGZlODQwNGEyNzRlLi4xMzMz
OTBhMmQ3YTJhMDg1Nzk4YjliNjQ3YTkzMWE1ZjdiYTRhMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjAw
LDYgKzIwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21h
aW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlIb3N0
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgY25hbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKKyAgICB2b2lk
IHNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFRvcEZyYW1lRG9t
YWluLCBTdWJSZXNvdXJjZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZShi
b29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyYWVhZmYzNGM3YTgwZTM5
YzFhYzJkMzNmN2M0YTExNTJkMTg4ZDc0Li41ZTYyMDVlNWZkNDFhZTM2YzcxYTM2ZjdjYzdlNGFk
YjA5YWQ2YzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00OCw2ICs0OCw3
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgTm90UmVm
Q291bnRlZCB7CiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNX
aXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKICAgICBEaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlEKQogICAgIFNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpCisgICAgU2V0RG9tYWlu
c1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSAtPiAoKSBBc3luYwog
I2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBDb250ZW50RXh0ZW5z
aW9uUnVsZXMoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNzBm
ZGRhZjhkZDAwNTZjYTI5NDhlOWYxMzI1MGM5YWJhMGExYmY4Yy4uMGIwYjgzNDYwYjc5MzcyNDdh
ODViNWQzZTQ0ZjU4ZmYzZjc4Y2IxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcApAQCAtNzU5LDYgKzc1OSw3IEBAIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJh
bWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQ
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgd2Vic2l0ZURh
dGFTdG9yZS50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCiAgICAgICAgIG1fZG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb24sCisgICAgICAgIG1fZG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9y
YWdlQWNjZXNzUXVpcmssCiAjZW5kaWYKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpCiAgICAgfTsKQEAgLTIwMTEsNiArMjAxMiwxNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRAogICAgIG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24g
PSBXVEZNb3ZlKGRvbWFpbnMpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5z
V2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVz
b3VyY2VEb21haW4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreyAgICAKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxi
YWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAg
IGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQorICAgICAgICBwcm9jZXNzLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldERvbWFpbnNXaXRoQ3Jvc3NQ
YWdlU3RvcmFnZUFjY2Vzcyhkb21haW5zKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKwor
ICAgIGZvciAoYXV0byYgdG9wRG9tYWluIDogZG9tYWlucy5rZXlzKCkpCisgICAgICAgIG1fZG9t
YWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzUXVpcmsuYWRkKHRvcERvbWFpbiwgZG9tYWlu
cy5nZXQodG9wRG9tYWluKSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlZWRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJv
b2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENh
bGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGFhYjczNmM4YTk0NDJh
MDM2MzExOGMwNGRhODYyNzQ3NGRiZDc5MzUuLmZhOWIyZWFlZWI3NTZmYzk0Mjg0M2E2MGU4ZjQ1
MDU4NzZlNTVmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApA
QCAtNDY1LDYgKzQ2NSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKKyAgICB2b2lkIHNldERvbWFpbnNXaXRo
Q3Jvc3NQYWdlU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBTdWJSZXNvdXJj
ZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNlZWRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZW5kUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFJbW1lZGlhdGVseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2Vu
ZGlmCkBAIC03ODIsNiArNzgzLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
bV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBIYXNoTWFwPFRvcEZyYW1lRG9tYWlu
LCBTdWJSZXNvdXJjZURvbWFpbj4gbV9kb21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3NR
dWlyazsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAK
aW5kZXggNDc3MjdjMzA0ZmVkNWIwZWFhZDAyMzJiMmQ3ZTRiOWI1YzMwNTE3OC4uMjZhOTk3NTA0
Zjc3MmM1MmI0ZDg0MzEzMDczY2EwM2Y1ODNmNTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCkBAIC00MTgsNiArNDE4LDI0IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZ0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFi
bGVECiAgICAgICAgIG1fbm90aWZpY2F0aW9uVGltZXIuc3RvcCgpOwogfQogCitib29sIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpoYXNDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiBzdWJEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BEb21haW4pIGNv
bnN0Cit7CisgICAgYXV0byBpdCA9IG1fZG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNz
LmZpbmQodG9wRG9tYWluKTsKKworICAgIGlmIChpdCAhPSBtX2RvbWFpbnNXaXRoQ3Jvc3NQYWdl
U3RvcmFnZUFjY2Vzcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZSA9PSBzdWJEb21h
aW47CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFRvcEZyYW1l
RG9tYWluLCBTdWJGcmFtZURvbWFpbj4mJiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZm9yIChhdXRvJiB0b3BEb21haW4gOiBk
b21haW5zLmtleXMoKSkKKyAgICAgICAgbV9kb21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nl
c3MuYWRkKHRvcERvbWFpbiwgZG9tYWlucy5nZXQodG9wRG9tYWluKSk7CisKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5oCmluZGV4IGRjYzFiYWIzOWNkNDgzYjM4NWExZWNmMGU0OGI1M2IyZGU3YTBmYWEuLjgy
ZTAxNzhlNjdlNDU5ZGY5YTA2ODEzYTdkNDkyMmYwN2E4MDJmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5oCkBAIC0zOSw2ICszOSw5IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNs
YXNzIFdlYlJlc291cmNlTG9hZE9ic2VydmVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyIHsKIHB1YmxpYzoKKyAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFN1YkZyYW1lRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47CisKICAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcihX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCk7CiAgICAgfldlYlJl
c291cmNlTG9hZE9ic2VydmVyKCk7CiAKQEAgLTYzLDcgKzY2LDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1N0YXRpc3RpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAuaXNFbXB0eSgpOyB9CiAKICAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykgZmlu
YWwgeyBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uID0gV1RGTW92ZShkb21haW5zKTsgfQor
ICAgIHZvaWQgc2V0RG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKEhhc2hNYXA8VG9w
RnJhbWVEb21haW4sIFN1YkZyYW1lRG9tYWluPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIGZpbmFsOwogICAgIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBoYXNDcm9zc1BhZ2VT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
KSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZvaWQgc2NoZWR1bGVOb3RpZmlj
YXRpb25JZk5lZWRlZCgpOwpAQCAtODEsNiArODcsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OlRpbWVyIG1fbm90aWZpY2F0aW9uVGltZXI7CiAKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOworICAgIEhhc2hNYXA8
VG9wRnJhbWVEb21haW4sIFN1YkZyYW1lRG9tYWluPiBtX2RvbWFpbnNXaXRoQ3Jvc3NQYWdlU3Rv
cmFnZUFjY2VzczsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICB1aW50NjRfdCBtX2xv
Z2dpbmdDb3VudGVyIHsgMCB9OwogICAgIHN0YXRpYyBib29sIHNob3VsZExvZ1VzZXJJbnRlcmFj
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBiNzZmMTE5
NWNlZTY5NmI3NTgxYjE2NTYzYmUzMzUyNmZhYzlkYTFjLi4wOTViNzQwMTMwY2JlNDdmNWVhOTVm
N2VmMjMwYWJlZDVhN2YyY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC01MjgsNiArNTI4LDggQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyYmIHAKICAgICAgICAg
aWYgKCFSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkSWZFeGlzdHMoKSkKICAgICAgICAgICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5ldyBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcihwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwogICAgICAgICBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkKCkuc2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oV1RGTW92ZShwYXJh
bWV0ZXJzLmRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKSk7CisgICAgICAgIGlmICghcGFyYW1l
dGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5zZXREb21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MoV1RG
TW92ZShwYXJhbWV0ZXJzLmRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKSwgW10geyB9KTsK
ICAgICB9CiAgICAgCiAjZW5kaWYKQEAgLTIwMDYsNiArMjAwOCwxNSBAQCB2b2lkIFdlYlByb2Nl
c3M6OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haQogICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXREb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbihXVEZNb3ZlKGRvbWFpbnMpKTsKIH0KIAordm9pZCBXZWJQcm9j
ZXNzOjpzZXREb21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxUb3BGcmFt
ZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGZvciAoYXV0byYgZG9tYWluIDog
ZG9tYWlucy5rZXlzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiB3ZWJQYWdlIDogbV9wYWdlTWFw
LnZhbHVlcygpKQorICAgICAgICAgICAgd2ViUGFnZS0+YWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0
b3JhZ2VBY2Nlc3MoZG9tYWluLCBkb21haW5zLmdldChkb21haW4pKTsKKyAgICB9CisgICAgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFn
ZUFjY2VzcyhXVEZNb3ZlKGRvbWFpbnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisKIHZvaWQgV2ViUHJvY2Vzczo6c2VuZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhSW1tZWRp
YXRlbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS51cGRhdGVDZW50cmFsU3RhdGlzdGlj
c1N0b3JlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCmluZGV4IDRkZTI2MTQ5NTQ0ZmRlM2Q4NmQzOTBlOGRlZmRkODIzZmQwODky
ZjkuLjdhOTllOTE1N2JjN2FiNGExMWU1NjZkNWQ3MDk2MzE4NTMwMzUzNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTQ1LDYgKzE0NSw5IEBAIGNsYXNzIFdlYlBy
b2Nlc3MgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2VzcwogewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgorICAgIHVzaW5nIFRvcEZyYW1lRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47CisgICAgdXNpbmcgU3ViUmVzb3VyY2VEb21haW4gPSBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjsKKwogICAgIHN0YXRpYyBXZWJQcm9jZXNzJiBzaW5nbGV0b24oKTsK
ICAgICBzdGF0aWMgY29uc3RleHByIFByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlID0gUHJvY2Vzc1R5
cGU6OldlYkNvbnRlbnQ7CiAKQEAgLTQ5Niw2ICs0OTksNyBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKKyAgICB2b2lk
IHNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFRvcEZyYW1lRG9t
YWluLCBTdWJSZXNvdXJjZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVkaWF0ZWx5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAzZTVlNzExMzVmOWJlNDdlMzk1
MDY1NDE0MWU4MjQyNmUwZDBmMTdlLi43YWIxYTQ3OGEzNTAxNDkxN2ZiOTBhMDQ4NTQzN2I4ZTZk
NGJkYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMTYzLDYgKzE2Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgU2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NG
b3JUZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2No
ZWR1bGVOb3RpZmljYXRpb24pIC0+ICgpIEFzeW5jCiAgICAgU2V0VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0RG9tYWluc1dpdGhVc2VySW50
ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykKKyAg
ICBTZXREb21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MoSGFzaE1hcDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpIC0+
ICgpIEFzeW5jCiAgICAgU2VuZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhSW1tZWRpYXRlbHko
KSAtPiAoKSBBc3luYwogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>