<?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>126918</bug_id>
          
          <creation_ts>2014-01-13 10:51:00 -0800</creation_ts>
          <short_desc>Identifier for sessions</short_desc>
          <delta_ts>2014-01-18 13:10:31 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>127216</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Hock">mhock</reporter>
          <assigned_to name="Martin Hock">mhock</assigned_to>
          <cc>ap</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>967407</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-13 10:51:00 -0800</bug_when>
    <thetext>Sessions should be identified by a uint64 (much like web pages).  The uint64 can be passed among processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967410</commentid>
    <comment_count>1</comment_count>
      <attachid>221064</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-13 10:54:28 -0800</bug_when>
    <thetext>Created attachment 221064
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967413</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-13 10:57:08 -0800</bug_when>
    <thetext>Attachment 221064 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebProcessProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebProcessProxy.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:166:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebKit2/UIProcess/WebProcessProxy.cpp:85:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967416</commentid>
    <comment_count>3</comment_count>
      <attachid>221065</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-13 11:01:13 -0800</bug_when>
    <thetext>Created attachment 221065
style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967428</commentid>
    <comment_count>4</comment_count>
      <attachid>221065</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-13 11:38:49 -0800</bug_when>
    <thetext>Comment on attachment 221065
style

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

&gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h:96
&gt; +    void startDownloadSession(uint64_t sessionID, uint64_t downloadID, const WebCore::ResourceRequest&amp;);
&gt; +
&gt; +    void cookiesForDOMSession(uint64_t sessionID, const WebCore::URL&amp; firstParty, const WebCore::URL&amp;, String&amp; result);
&gt; +    void setCookiesFromDOMSession(uint64_t sessionID, const WebCore::URL&amp; firstParty, const WebCore::URL&amp;, const String&amp;);
&gt; +    void cookiesEnabledSession(uint64_t sessionID, const WebCore::URL&amp; firstParty, const WebCore::URL&amp;, bool&amp; result);
&gt; +    void cookieRequestHeaderFieldValueSession(uint64_t sessionID, const WebCore::URL&amp; firstParty, const WebCore::URL&amp;, String&amp; result);
&gt; +    void getRawCookiesSession(uint64_t sessionID, const WebCore::URL&amp; firstParty, const WebCore::URL&amp;, Vector&lt;WebCore::Cookie&gt;&amp;);
&gt; +    void deleteCookieSession(uint64_t sessionID, const WebCore::URL&amp;, const String&amp; cookieName);

I don&apos;t think that we need to add any new functions here. What I had in mind when adding privateBrowsingEnabled flag was that it would be replaced with session ID eventually.

&gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:184
&gt; +    uint64_t sessionID = generateSessionID(isEphemeral);

This means that multiple pages with ephemeral sessions will never use the same session. I don&apos;t think that this is how the API should work - the client should provide a session.

&gt; Source/WebKit2/UIProcess/WebProcessProxy.h:80
&gt; +    PassRefPtr&lt;WebPageProxy&gt; createWebPage(PageClient&amp;, WebPageGroup&amp;, bool);

This new boolean arguments looks mysterious - there is no way for me to know what it does from this line of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968138</commentid>
    <comment_count>5</comment_count>
      <attachid>221223</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-14 18:26:53 -0800</bug_when>
    <thetext>Created attachment 221223
WIP sessions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968142</commentid>
    <comment_count>6</comment_count>
      <attachid>221223</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-14 18:46:58 -0800</bug_when>
    <thetext>Comment on attachment 221223
WIP sessions

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

&gt; Source/WebKit2/UIProcess/APISession.cpp:35
&gt; +    ASSERT(isMainThread());

No need for this.

&gt; Source/WebKit2/UIProcess/APISession.cpp:44
&gt; +    ASSERT(isMainThread());

No need for this.

&gt; Source/WebKit2/UIProcess/APISession.cpp:52
&gt; +    ASSERT(isMainThread());

No need for this.

&gt; Source/WebKit2/UIProcess/APISession.h:39
&gt;      static PassRefPtr&lt;Session&gt; create(bool isEphemeral);

Perhaps we should have this called createEphemeral() instead since it is illegal currently to call if with isEphemeral=false.  Also, please add a FIXME about adding support for non-default, non-ephemeral sessions.

&gt; Source/WebKit2/UIProcess/APISession.h:48
&gt; +    static uint64_t generateID(bool isEphemeral);

This does not need to be a member.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:1314
&gt; +    API::Session m_session;

This needs to be a RefPtr&lt;API::Session&gt;

&gt; Source/WebKit2/UIProcess/WebProcessProxy.h:96
&gt; +    static bool isEphemeralSession(uint64_t);

This doesn&apos;t seem to have an implemenation.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:41
&gt; +#import &lt;wtf/text/CString.h&gt;

This should be an #include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968148</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-14 19:15:43 -0800</bug_when>
    <thetext>Thanks for taking a look.

(In reply to comment #6)
&gt; (From update of attachment 221223 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221223&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/APISession.cpp:35
&gt; &gt; +    ASSERT(isMainThread());
&gt; 
&gt; No need for this.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/APISession.cpp:44
&gt; &gt; +    ASSERT(isMainThread());
&gt; 
&gt; No need for this.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/APISession.cpp:52
&gt; &gt; +    ASSERT(isMainThread());
&gt; 
&gt; No need for this.

It&apos;s true that these methods aren&apos;t thread safe, though - why isn&apos;t it needed?

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/APISession.h:48
&gt; &gt; +    static uint64_t generateID(bool isEphemeral);
&gt; 
&gt; This does not need to be a member.

I wanted it to be able to access private static members.  But I guess those members can be translation unit static variables instead, so I&apos;ll do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968157</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-14 20:39:49 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Thanks for taking a look.
&gt; 
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 221223 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221223&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/APISession.cpp:35
&gt; &gt; &gt; +    ASSERT(isMainThread());
&gt; &gt; 
&gt; &gt; No need for this.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/APISession.cpp:44
&gt; &gt; &gt; +    ASSERT(isMainThread());
&gt; &gt; 
&gt; &gt; No need for this.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/APISession.cpp:52
&gt; &gt; &gt; +    ASSERT(isMainThread());
&gt; &gt; 
&gt; &gt; No need for this.
&gt; 
&gt; It&apos;s true that these methods aren&apos;t thread safe, though - why isn&apos;t it needed?

We don&apos;t annotate all non-thread safe things, just ones where it might be confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968190</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-14 23:17:25 -0800</bug_when>
    <thetext>I find these assertions very useful as a debugging tool.

First, a function like Session::defaultSession() could be called very deep in specialized code that may not even know itself which thread it is running on.

Second, quickly catching API misuse by clients is invaluable when debugging issues caused by such misuse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968359</commentid>
    <comment_count>10</comment_count>
      <attachid>221223</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-15 09:30:42 -0800</bug_when>
    <thetext>Comment on attachment 221223
WIP sessions

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

&gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:153
&gt; +    if (API::Session::isEphemeralID(sessionID)) {

I&apos;m not sure about how we use API objects in general. Is it right to use API objects in NetworkProcess code?

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:42
&gt; +static HashMap&lt;uint64_t, std::unique_ptr&lt;NetworkStorageSession&gt;&gt;&amp; sessionMap()

We need this kind of session map in both network process and web process. Where can we put it in shared code?

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:121
&gt; +    RetainPtr&lt;CFStringRef&gt; cfIdentifier = String::format(&quot;%s.%lld.PrivateBrowsing&quot;, privateBrowsingStorageSessionIdentifierBase().utf8().data() , sessionID).createCFString();

I don&apos;t think that this is quite right. String::format only works with Latin-1 strings, not utf-8.

Please use either StringBuilder or &quot;+&quot; instead. The plus operator is overridden in a way that makes it efficient (and this is a super cold code path anyway).

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:129
&gt; +    privateBrowsingStorageSession(sessionID) = nullptr;
&gt; +    sessionMap().remove(sessionID);

Why is the first assignment needed?

&gt; Source/WebKit2/UIProcess/WebContext.cpp:482
&gt; +void WebContext::ensurePrivateBrowsingSession(uint64_t sessionID)

Is this called from anywhere in this patch? I couldn&apos;t find it.

Should probably add the appropriate calls to round up the patch.

&gt; Source/WebKit2/UIProcess/WebContext.h:296
&gt; +    static bool isEphemeralSession(uint64_t sessionID);

Why is this a member of WebContext?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:60
&gt; +
&gt; +

Extra newline here, please remove.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:85
&gt; +    privateSession(sessionID) = NetworkStorageSession::createPrivateBrowsingSession(String::format(&quot;%s.%lld&quot;, base.utf8().data(), sessionID));

Same comment about String::format.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:92
&gt; +    privateSession(sessionID) = nullptr;

Really need to share all this code.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:103
&gt; +    for (const auto&amp; i : sessionMap())

Good names are particularly helpful for auto variables. What is &quot;i&quot;, is it a &quot;sessionIterator&quot;?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:105
&gt; +        if (i.value)
&gt; +            WKSetHTTPCookieAcceptPolicy(i.value-&gt;cookieStorage().get(), policy);

There are two lines of code here, so the block needs braces.

I&apos;d personally add a variable for i.value, too. This is not WTF code :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969254</commentid>
    <comment_count>11</comment_count>
      <attachid>221491</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-17 14:10:41 -0800</bug_when>
    <thetext>Created attachment 221491
Fleshed-out sessions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969259</commentid>
    <comment_count>12</comment_count>
      <attachid>221493</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-17 14:19:14 -0800</bug_when>
    <thetext>Created attachment 221493
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969261</commentid>
    <comment_count>13</comment_count>
      <attachid>221491</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 14:34:34 -0800</bug_when>
    <thetext>Comment on attachment 221491
Fleshed-out sessions

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

Looks almost ready to land to me. Let&apos;s also check EWS results for the patch you uploaded.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:165
&gt; -        RemoteNetworkingContext::ensurePrivateBrowsingSession();
&gt; +        RemoteNetworkingContext::ensurePrivateBrowsingSession(SessionTracker::legacyPrivateSessionID);

Longer term, I think that we should remove parameters.privateBrowsingEnabled, and just send an explicit message after process initialization. That will let us remove the knowledge of legacy private browsing session from WebProcess and NetworkProcess.

Please add a FIXME to this effect if you agree.

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:33
&gt; +#import &lt;wtf/HashMap.h&gt;

This seems unneeded now.

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:36
&gt; +#import &lt;wtf/text/CString.h&gt;

Ditto.

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:65
&gt;  NetworkStorageSession&amp; RemoteNetworkingContext::storageSession() const
&gt;  {
&gt;      if (m_privateBrowsingEnabled) {
&gt; -        NetworkStorageSession* privateSession = privateBrowsingStorageSession().get();
&gt; +        NetworkStorageSession* privateSession = SessionTracker::session(SessionTracker::legacyPrivateSessionID).get();

An I correct to understand that the next patch will make NetworkingContext hold a session ID (or take it from Frame in other subclasses)? The knowledge of legacy private browsing session should be expunged from lower levels if WebKit.

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:86
&gt; +void RemoteNetworkingContext::ensurePrivateBrowsingSession(uint64_t sessionID)

I&apos;m not sure if I understand why ensurePrivateBrowsingSession() stays in this class. All this code does is call through to SessionTracker.

Is this to make keep platform dependent code as it is now? We should probably move it to SessionTracker anyway longer term (please add a FIXME).

&gt; Source/WebKit2/Shared/SessionTracker.h:29
&gt; +#include &lt;WebCore/NetworkStorageSession.h&gt;

This doesn&apos;t seem needed, can we forward declare NetworkStorageSession?

&gt; Source/WebKit2/Shared/SessionTracker.h:32
&gt; +#include &lt;wtf/text/CString.h&gt;

This is not needed.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:137
&gt; +        if (!WebProcess::shared().networkConnection()-&gt;connection()-&gt;sendSync(Messages::NetworkConnectionToWebProcess::CookiesForDOM(session.isPrivateBrowsingSession() ? SessionTracker::legacyPrivateSessionID : SessionTracker::defaultSessionID, firstParty, url), Messages::NetworkConnectionToWebProcess::CookiesForDOM::Reply(result), 0))

Can this copy/pasted code be encapsulated somewhere?

session.isPrivateBrowsingSession() ? SessionTracker::legacyPrivateSessionID : SessionTracker::defaultSessionID

I&apos;d say SessionTracker::sessionID(session).

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:41
&gt; +#include &lt;wtf/HashMap.h&gt;
&gt;  #include &lt;wtf/NeverDestroyed.h&gt;
&gt; +#include &lt;wtf/text/CString.h&gt;

Unneeded includes here, too.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:68
&gt; +    for (const auto&amp; sessionPair : SessionTracker::getSessionMap()) {

Why is this a pair? I thought it was an iterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969297</commentid>
    <comment_count>14</comment_count>
      <attachid>221502</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-17 15:54:22 -0800</bug_when>
    <thetext>Created attachment 221502
address comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969309</commentid>
    <comment_count>15</comment_count>
      <attachid>221502</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 16:18:26 -0800</bug_when>
    <thetext>Comment on attachment 221502
address comments

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

Looks good to me. Please fix failing builds (gtk-wk2 is red, it&apos;s a shame that we are no longer informed about such failures immediately, and have to poll).

Please also run all tests in a local debug build.

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:90
&gt; +    SessionTracker::session(sessionID) = std::move(NetworkStorageSession::createPrivateBrowsingSession(SessionTracker::getIdentifierBase() + &apos;.&apos; + String::number(sessionID)));

Is this std::move needed?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:55
&gt; +    SessionTracker::session(sessionID) = std::move(NetworkStorageSession::createPrivateBrowsingSession(base + &apos;.&apos; + String::number(sessionID)));

Is this std::move needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969324</commentid>
    <comment_count>16</comment_count>
      <attachid>221512</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-17 16:49:51 -0800</bug_when>
    <thetext>Created attachment 221512
address comments + soup build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969337</commentid>
    <comment_count>17</comment_count>
      <attachid>221516</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-17 17:23:50 -0800</bug_when>
    <thetext>Created attachment 221516
more soup fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969340</commentid>
    <comment_count>18</comment_count>
      <attachid>221516</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 17:30:00 -0800</bug_when>
    <thetext>Comment on attachment 221516
more soup fixes

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969352</commentid>
    <comment_count>19</comment_count>
      <attachid>221516</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-17 18:13:37 -0800</bug_when>
    <thetext>Comment on attachment 221516
more soup fixes

Clearing flags on attachment: 221516

Committed r162237: &lt;http://trac.webkit.org/changeset/162237&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969353</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-17 18:13:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969395</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 22:18:45 -0800</bug_when>
    <thetext>This broke 63 API tests on debug bots: http://build.webkit.org/builders/Apple%20Mavericks%20Debug%20WK2%20(Tests)/builds/1747/steps/run-api-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969396</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 22:21:24 -0800</bug_when>
    <thetext>Note also this build fix: &lt;http://trac.webkit.org/changeset/162241&gt; that I&apos;m also rolling out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969398</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-17 22:21:43 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 127216</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969403</commentid>
    <comment_count>24</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 22:30:15 -0800</bug_when>
    <thetext>The bot was seeing crashes like this in NetworkProcess:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebKit2             	0x0000000102657953 WebKit::storageSession(unsigned long long) + 15 (memory:2666)
1   com.apple.WebKit2             	0x00000001026579f2 WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue(unsigned long long, WebCore::URL const&amp;, WebCore::URL const&amp;, WTF::String&amp;) + 32 (NetworkConnectionToWebProcess.cpp:203)
2   com.apple.WebKit2             	0x0000000102659469 void IPC::handleMessage&lt;Messages::NetworkConnectionToWebProcess::CookieRequestHeaderFieldValue, WebKit::NetworkConnectionToWebProcess, void (WebKit::NetworkConnectionToWebProcess::*)(unsigned long long, WebCore::URL const&amp;, WebCore::URL const&amp;, WTF::String&amp;)&gt;(IPC::MessageDecoder&amp;, IPC::MessageEncoder&amp;, WebKit::NetworkConnectionToWebProcess*, void (WebKit::NetworkConnectionToWebProcess::*)(unsigned long long, WebCore::URL const&amp;, WebCore::URL const&amp;, WTF::String&amp;)) + 158 (ArgumentEncoder.h:55)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969404</commentid>
    <comment_count>25</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 22:39:19 -0800</bug_when>
    <thetext>Locally, I&apos;m seeing this in WebProcess:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebKit2             	0x000000010f1a8d4c WTF::RefPtr&lt;WebKit::WebPreferences&gt;::operator!() const + 12 (RefPtr.h:66)
1   com.apple.WebKit2             	0x000000010f1a8115 WebKit::WebPageGroup::preferences() const + 37 (WebPageGroup.cpp:119)
2   com.apple.WebKit2             	0x000000010f0705b7 WebKit::WebContext::createWebPage(WebKit::PageClient&amp;, WebKit::WebPageGroup*, WebKit::WebPageProxy*) + 71 (WebContext.cpp:765)
3   com.apple.WebKit2             	0x000000010f3a052d -[WKView(Private) initWithFrame:contextRef:pageGroupRef:relatedToPage:] + 1613 (WKView.mm:2864)
4   com.apple.WebKit2             	0x000000010f39fed9 -[WKView(Private) initWithFrame:contextRef:pageGroupRef:] + 153 (WKView.mm:2834)
5   TestWebKitAPI                 	0x000000010cbc5975 TestWebKitAPI::PlatformWebView::PlatformWebView(OpaqueWKContext const*, OpaqueWKPageGroup const*) + 277 (PlatformWebViewMac.mm:47)
6   TestWebKitAPI                 	0x000000010cbc5855 TestWebKitAPI::PlatformWebView::PlatformWebView(OpaqueWKContext const*, OpaqueWKPageGroup const*) + 37 (PlatformWebViewMac.mm:56)
7   TestWebKitAPI                 	0x000000010caaf7cf TestWebKitAPI::WebKit2_AboutBlankLoad_Test::TestBody() + 63 (AboutBlankLoad.cpp:44)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969405</commentid>
    <comment_count>26</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 22:39:54 -0800</bug_when>
    <thetext>Err, in UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969406</commentid>
    <comment_count>27</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 22:53:34 -0800</bug_when>
    <thetext>So the crash from comment 25 is easy to fix, we just need to handle null pageGroups.

But crash in comment 24 is worse. These NetworkProcess crashes correspond to layout test regressions that were only occurring on one bot, Apple Mavericks Release:

http/tests/media/pdf-served-as-pdf.html
http/tests/security/contentSecurityPolicy/media-src-blocked.html

Rolling out fixed these regressions, so they are definitely caused by this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969408</commentid>
    <comment_count>28</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 23:09:28 -0800</bug_when>
    <thetext>Oh I see, that&apos;s because cookie related IPC calls are also made in CookieStorageShim, and that was not updated to use sessionID integer instead of privateBrowsing boolean.

The code in CookieStorageShim is pretty horribly broken, as it doesn&apos;t respect private browsing!

It&apos;s also quite unfortunate that we don&apos;t catch NetworkProcess crashes when running tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969447</commentid>
    <comment_count>29</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-01-18 09:00:35 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Oh I see, that&apos;s because cookie related IPC calls are also made in CookieStorageShim, and that was not updated to use sessionID integer instead of privateBrowsing boolean.
&gt; 
&gt; The code in CookieStorageShim is pretty horribly broken, as it doesn&apos;t respect private browsing!
&gt; 
&gt; It&apos;s also quite unfortunate that we don&apos;t catch NetworkProcess crashes when running tests.

I&apos;m working on updating the CookieStorageShim to fix an unrelated issue in bug #127207.  I adopted SessionTracker between when this was committed and when it was rolled out.

We should definitely figure out how to signal to the shim to use private browsing mode, but it will be difficult to associate a specific session ID to a specific cookie request. We should track that in a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969465</commentid>
    <comment_count>30</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-18 10:25:46 -0800</bug_when>
    <thetext>Thanks for weighing in! So the fix for this issue is to simply hardcode the default session instead of &quot;false&quot; in the cookie shim for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969483</commentid>
    <comment_count>31</comment_count>
      <attachid>221559</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-18 11:24:05 -0800</bug_when>
    <thetext>Created attachment 221559
test fixes + EFL build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969491</commentid>
    <comment_count>32</comment_count>
      <attachid>221559</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-18 11:45:11 -0800</bug_when>
    <thetext>Comment on attachment 221559
test fixes + EFL build fix

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

&gt; Source/WebKit2/UIProcess/WebContext.cpp:765
&gt; +    return createWebPage(pageClient, pageGroup, pageGroup &amp;&amp; pageGroup-&gt;preferences() &amp;&amp; pageGroup-&gt;preferences()-&gt;privateBrowsingEnabled() ? API::Session::legacyPrivateSession() : API::Session::defaultSession(), relatedPage);

I don&apos;t think that using the default session is right. The function above does a different thing: 

    return process-&gt;createWebPage(pageClient, pageGroup ? *pageGroup : m_defaultPageGroup.get(), session);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969497</commentid>
    <comment_count>33</comment_count>
      <attachid>221564</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-18 12:20:43 -0800</bug_when>
    <thetext>Created attachment 221564
address comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969498</commentid>
    <comment_count>34</comment_count>
      <attachid>221564</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-18 12:25:32 -0800</bug_when>
    <thetext>Comment on attachment 221564
address comment

The patch doesn&apos;t build:

/Volumes/Data/EWS/WebKit/Source/WebKit2/UIProcess/WebContext.cpp:765:37: error: incompatible operand types (&apos;WebKit::WebPageGroup *&apos; and &apos;WebKit::WebPageGroup&apos;)
    WebPageGroup* group = pageGroup ? pageGroup : m_defaultPageGroup.get();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969499</commentid>
    <comment_count>35</comment_count>
      <attachid>221565</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-18 12:30:21 -0800</bug_when>
    <thetext>Created attachment 221565
missing deref (where did it go!?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969502</commentid>
    <comment_count>36</comment_count>
      <attachid>221565</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-18 12:38:29 -0800</bug_when>
    <thetext>Comment on attachment 221565
missing deref (where did it go!?)

OK, this patch definitely builds :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969509</commentid>
    <comment_count>37</comment_count>
      <attachid>221565</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-18 13:10:25 -0800</bug_when>
    <thetext>Comment on attachment 221565
missing deref (where did it go!?)

Clearing flags on attachment: 221565

Committed r162271: &lt;http://trac.webkit.org/changeset/162271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969510</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-18 13:10:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221064</attachid>
            <date>2014-01-13 10:54:28 -0800</date>
            <delta_ts>2014-01-13 11:01:13 -0800</delta_ts>
            <desc>patch</desc>
            <filename>sessionid.01.diff</filename>
            <type>text/plain</type>
            <size>15290</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhMDIxZTdiLi43NDdjMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTQtMDEtMTMgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IElkZW50aWZpZXIgZm9yIHNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjY5MTggCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWRTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNv
b2tpZXNGb3JET01TZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZFNlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXNTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZVNlc3Npb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vzc2lvbklEKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Z2VuZXJhdGVTZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmlzRXBoZW1lcmFsU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgor
CiAyMDE0LTAxLTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbU09VUF0gQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0byB3cmFwIGEg
U291cFNlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBmNTk5NDQ2Li43
OWQ5NDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNjAsNiArMTYwLDEy
IEBAIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAorc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc3RvcmFnZVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIC8vIEZJWE1FOiBy
ZXRyaWV2ZSBzZXNzaW9uIGJhc2VkIG9uIElECisgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCA9PSAwKTsKK30KKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25s
b2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICAvLyBGSVhNRTog
RG8gc29tZXRoaW5nIHdpdGggdGhlIHByaXZhdGUgYnJvd3NpbmcgZmxhZy4KQEAgLTIxMiw2ICsy
MTgsNDIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2ll
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY28KICAgICBXZWJDb3JlOjpkZWxldGVDb29r
aWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFt
ZSk7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxv
YWRTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcg
d2l0aCB0aGUgcHJpdmF0ZSBicm93c2luZyBmbGFnLgorICAgIE5ldHdvcmtQcm9jZXNzOjpzaGFy
ZWQoKS5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3Qp
OworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9N
U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tp
ZXNGb3JET00oc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJsKTsKK30K
Kwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET01T
ZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit7CisgICAgV2ViQ29yZTo6c2V0
Q29va2llc0Zyb21ET00oc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJs
LCBjb29raWVTdHJpbmcpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojpjb29raWVzRW5hYmxlZFNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBib29sJiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0g
V2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQ
YXJ0eSwgdXJsKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit7Cisg
ICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJsKTsKK30KKwordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llc1Nlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29v
a2llPiYgcmVzdWx0KQoreworICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOworfQorCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWVTZXNzaW9uKHVpbnQ2NF90IHNl
c3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3sKKyAg
ICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSwgdXJsLCBj
b29raWVOYW1lKTsKK30KKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYg
ZGF0YSkKIHsKICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBleHRlbnNpb25z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggOTQ1NzM3NS4uYzg0ZGU0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC04Niw2ICs4NiwxNSBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAK
KyAgICB2b2lkIHN0YXJ0RG93bmxvYWRTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgdWludDY0
X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisKKyAgICB2
b2lkIGNvb2tpZXNGb3JET01TZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7
CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0VuYWJsZWRTZXNzaW9uKHVpbnQ2NF90IHNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBib29sJiByZXN1bHQpOworICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVT
ZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRSYXdD
b29raWVzU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsK
KyAgICB2b2lkIGRlbGV0ZUNvb2tpZVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOworCiAgICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgQmxvYlJlZ2lzdHJhdGlvbkRh
dGEmKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwpOwogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDdlODkwMzUuLjI3MTE5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00Miw2ICs0MiwxNSBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgR2V0
UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJz
dFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29v
a2llcykKICAgICBEZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJD
b3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAorICAgIFN0YXJ0RG93bmxvYWRTZXNz
aW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisKKyAgICBDb29raWVzRm9yRE9NU2Vzc2lvbih1aW50NjRf
dCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAt
PiAoU3RyaW5nIHJlc3VsdCkKKyAgICBTZXRDb29raWVzRnJvbURPTVNlc3Npb24odWludDY0X3Qg
c2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCwgU3Ry
aW5nIGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRW5hYmxlZFNlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKGJv
b2wgZW5hYmxlZCkKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZVNlc3Npb24odWlu
dDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVy
bCkgLT4gKFN0cmluZyByZXN1bHQpCisgICAgR2V0UmF3Q29va2llc1Nlc3Npb24odWludDY0X3Qg
c2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4g
KFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCisgICAgRGVsZXRlQ29va2llU2Vzc2lv
bih1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1l
KQorCiAgICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFdlYktpdDo6QmxvYlJl
Z2lzdHJhdGlvbkRhdGEgZGF0YSkKICAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFdlYkNvcmU6
OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwpCiAgICAgVW5yZWdpc3RlckJsb2JVUkwoV2Vi
Q29yZTo6VVJMIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRl
eCBjMGJjMzg3Li5kNDk0ZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwCkBAIC03MzYsNyArNzM2LDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250ZXh0OjpjcmVh
dGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCkKICAgICByZXR1cm4g
KnJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0
ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAs
IFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2Vi
Q29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSwgYm9vbCBpc0VwaGVtZXJh
bCkKIHsKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzOwogICAgIGlmIChtX3By
b2Nlc3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7CkBAIC03
NTIsNyArNzUyLDcgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0
ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGEKICAgICAgICAgICAgIHByb2Nl
c3MgPSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOwog
ICAgIH0KIAotICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHBh
Z2VHcm91cCA/ICpwYWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCkpOworICAgIHJl
dHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHBhZ2VHcm91cCA/ICpwYWdl
R3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCksIGlzRXBoZW1lcmFsKTsKIH0KIAogRG93
bmxvYWRQcm94eSogV2ViQ29udGV4dDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5n
UGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmgKaW5kZXggNjk2MGNkZC4uZDgwZGRiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogCiAgICAgU3Rv
cmFnZU1hbmFnZXImIHN0b3JhZ2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gKm1fc3RvcmFnZU1h
bmFnZXI7IH0KIAotICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBh
Z2VDbGllbnQmLCBXZWJQYWdlR3JvdXAqLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gMCk7
CisgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYs
IFdlYlBhZ2VHcm91cCosIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UgPSAwLCBib29sIGlzRXBo
ZW1lcmFsID0gZmFsc2UpOwogCiAgICAgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgo
KSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc1OGVlNGYuLmZjODExOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMjgsMTIgKzIyOCwx
MiBAQCBzdGF0aWMgY29uc3QgY2hhciogd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcoV2ViRXZl
bnQ6OlR5cGUgdHlwZSkKIH0KICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAKLVBhc3NSZWZQdHI8
V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCB1aW50
NjRfdCBwYWdlSUQpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVh
dGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJQ
YWdlR3JvdXAmIHBhZ2VHcm91cCwgdWludDY0X3Qgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJv
Y2VzcywgcGFnZUdyb3VwLCBwYWdlSUQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBh
Z2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlR3JvdXAsIHNlc3Npb25JRCwgcGFnZUlE
KSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAsIHVp
bnQ2NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUGFnZUdyb3VwJiBwYWdlR3Jv
dXAsIHVpbnQ2NF90IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQogICAgIDogbV9wYWdlQ2xp
ZW50KHBhZ2VDbGllbnQpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKICAgICAsIG1fcGFnZUdy
b3VwKHBhZ2VHcm91cCkKQEAgLTI3OSw2ICsyNzksNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdl
YgogICAgICwgbV9uZWVkVG91Y2hFdmVudHMoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fcGFnZUlE
KHBhZ2VJRCkKKyAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1faXNQYWdlU3Vz
cGVuZGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1faXNTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoVGV4dENoZWNrZXI6OmlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYmY1MGZjMi4uOTBhNzNi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBXZWJQYWdlUHJveHlfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiQVBJU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkF1dG9Db3JyZWN0aW9uQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rp
b24uaCIKQEAgLTMyNiwxMCArMzI3LDExIEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgLCBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBh
Z2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlR3Jv
dXAmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94
eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlR3JvdXAmLCB1
aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdmlydHVhbCB+V2ViUGFn
ZVByb3h5KCk7CiAKICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJ
RDsgfQorICAgIHVpbnQ2NF90IHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklE
OyB9CiAKICAgICBXZWJGcmFtZVByb3h5KiBtYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21h
aW5GcmFtZS5nZXQoKTsgfQogICAgIFdlYkZyYW1lUHJveHkqIGZvY3VzZWRGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9jdXNlZEZyYW1lLmdldCgpOyB9CkBAIC04NTUsNyArODU3LDcgQEAgcHVi
bGljOgogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVo
YXZpb3IoKSB7IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQogICAgICAgICAKIHBy
aXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBX
ZWJQYWdlR3JvdXAmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgdWludDY0X3Qgc2Vzc2lvbklE
LCB1aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAgICAg
dm9pZCBpbml0aWFsaXplQ3JlYXRpb25QYXJhbWV0ZXJzKCk7CiAKQEAgLTEzMDgsNiArMTMxMCw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIHVpbnQ2
NF90IG1fc2Vzc2lvbklEOwogCiAgICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwY2M2MWRkLi5h
N2QzMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cApAQCAtNzIsNiArNzIsMjAgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFnZUlEKCkKICAg
ICByZXR1cm4gKyt1bmlxdWVQYWdlSUQ7CiB9CiAKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBkZWZh
dWx0U2Vzc2lvbklEID0gMDsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU2Vzc2lvbklEKGJv
b2wgaXNFcGhlbWVyYWwpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVNlc3Npb25JRDsK
KyAgICBpZiAoaXNFcGhlbWVyYWwpCisgICAgICAgIHJldHVybiArK3VuaXF1ZVNlc3Npb25JRDsK
KyAgICByZXR1cm4gZGVmYXVsdFNlc3Npb25JRDsKK30KKworYm9vbCBXZWJQcm9jZXNzUHJveHk6
OmlzRXBoZW1lcmFsU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpIHsKKyAgICByZXR1cm4gc2Vz
c2lvbklEICE9IGRlZmF1bHRTZXNzaW9uSUQ7Cit9CisKIHN0YXRpYyBXZWJQcm9jZXNzUHJveHk6
OldlYlBhZ2VQcm94eU1hcCYgZ2xvYmFsUGFnZU1hcCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKQEAgLTE2MywxMCArMTc3LDExIEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vz
c1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1h
cCgpLmdldChwYWdlSUQpOwogfQogCi1QYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91
cCYgcGFnZUdyb3VwKQorUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAmIHBhZ2VH
cm91cCwgYm9vbCBpc0VwaGVtZXJhbCkKIHsKICAgICB1aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0
ZVBhZ2VJRCgpOwotICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJv
eHk6OmNyZWF0ZShwYWdlQ2xpZW50LCAqdGhpcywgcGFnZUdyb3VwLCBwYWdlSUQpOworICAgIHVp
bnQ2NF90IHNlc3Npb25JRCA9IGdlbmVyYXRlU2Vzc2lvbklEKGlzRXBoZW1lcmFsKTsKKyAgICBS
ZWZQdHI8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNs
aWVudCwgKnRoaXMsIHBhZ2VHcm91cCwgc2Vzc2lvbklELCBwYWdlSUQpOwogICAgIG1fcGFnZU1h
cC5zZXQocGFnZUlELCB3ZWJQYWdlLmdldCgpKTsKICAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHBh
Z2VJRCwgd2ViUGFnZS5nZXQoKSk7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDgzMzQzODUuLjU4NzI3MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTc3LDcgKzc3LDcg
QEAgcHVibGljOgogICAgIFdlYkNvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQu
Z2V0KCk7IH0KIAogICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2UodWludDY0X3QgcGFn
ZUlEKTsKLSAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiwgV2ViUGFnZUdyb3VwJik7CisgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0
ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFdlYlBhZ2VHcm91cCYsIGJvb2wpOwogICAgIHZvaWQgYWRk
RXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9p
ZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgVmVjdG9yPFdlYlBhZ2VQcm94
eSo+IHBhZ2VzKCkgY29uc3Q7CkBAIC05Miw2ICs5Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
c2Nvbm5lY3RGcmFtZXNGcm9tUGFnZShXZWJQYWdlUHJveHkqKTsgLy8gSW5jbHVkaW5nIG1haW4g
ZnJhbWUuCiAgICAgc2l6ZV90IGZyYW1lQ291bnRJblBhZ2UoV2ViUGFnZVByb3h5KikgY29uc3Q7
IC8vIEluY2x1ZGluZyBtYWluIGZyYW1lLgogCisgICAgc3RhdGljIGJvb2wgaXNFcGhlbWVyYWxT
ZXNzaW9uKHVpbnQ2NF90KTsKKwogICAgIHZvaWQgdXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwog
CiAgICAgdm9pZCByZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221065</attachid>
            <date>2014-01-13 11:01:13 -0800</date>
            <delta_ts>2014-01-14 18:26:53 -0800</delta_ts>
            <desc>style</desc>
            <filename>sessionid.02.diff</filename>
            <type>text/plain</type>
            <size>15286</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhMDIxZTdiLi43NDdjMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTQtMDEtMTMgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IElkZW50aWZpZXIgZm9yIHNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjY5MTggCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWRTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNv
b2tpZXNGb3JET01TZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZFNlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXNTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZVNlc3Npb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vzc2lvbklEKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Z2VuZXJhdGVTZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmlzRXBoZW1lcmFsU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgor
CiAyMDE0LTAxLTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbU09VUF0gQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0byB3cmFwIGEg
U291cFNlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBmNTk5NDQ2Li5h
MGJiYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNjAsNiArMTYwLDEy
IEBAIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAorc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc3RvcmFnZVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIC8vIEZJWE1FOiBy
ZXRyaWV2ZSBzZXNzaW9uIGJhc2VkIG9uIElECisgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCk7Cit9CisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0
RG93bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCB1aW50NjRfdCBkb3dubG9hZElE
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgLy8gRklYTUU6IERvIHNv
bWV0aGluZyB3aXRoIHRoZSBwcml2YXRlIGJyb3dzaW5nIGZsYWcuCkBAIC0yMTIsNiArMjE4LDQy
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvCiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0
b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tpZU5hbWUpOwog
fQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkU2Vz
c2lvbih1aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIHdpdGgg
dGhlIHByaXZhdGUgYnJvd3NpbmcgZmxhZy4KKyAgICBOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCku
ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChkb3dubG9hZElELCByZXF1ZXN0KTsKK30K
Kwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTVNlc3Np
b24odWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYg
dXJsLCBTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRm9y
RE9NKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCk7Cit9CisKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NU2Vzc2lv
bih1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQoreworICAgIFdlYkNvcmU6OnNldENvb2tp
ZXNGcm9tRE9NKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCwgY29v
a2llU3RyaW5nKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0VuYWJsZWRTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IFdlYkNv
cmU6OmNvb2tpZXNFbmFibGVkKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHks
IHVybCk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQoreworICAgIHJl
c3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXNTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25J
RCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IHJlc3VsdCkKK3sKKyAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCksIGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit7CisgICAgV2Vi
Q29yZTo6ZGVsZXRlQ29va2llKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2ll
TmFtZSk7Cit9CisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgQmxvYlJlZ2lzdHJhdGlvbkRhdGEmIGRhdGEp
CiB7CiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gZXh0ZW5zaW9uczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDk0NTczNzUuLmM4NGRlNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaApAQCAtODYsNiArODYsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik7CiAgICAgdm9pZCBkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCisgICAg
dm9pZCBzdGFydERvd25sb2FkU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRv
d25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworCisgICAgdm9pZCBj
b29raWVzRm9yRE9NU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAg
IHZvaWQgc2V0Q29va2llc0Zyb21ET01TZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIGNvb2tpZXNFbmFibGVkU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9v
bCYgcmVzdWx0KTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlU2Vzc2lv
bih1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgZ2V0UmF3Q29va2ll
c1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAg
dm9pZCBkZWxldGVDb29raWVTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKwogICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IEJsb2JSZWdpc3RyYXRpb25EYXRhJik7
CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKTsKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCA3ZTg5MDM1Li4yNzExOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDIsNiArNDIsMTUgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdldFJhd0Nv
b2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0
eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMp
CiAgICAgRGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6
VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCiAKKyAgICBTdGFydERvd25sb2FkU2Vzc2lvbih1
aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KQorCisgICAgQ29va2llc0ZvckRPTVNlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0
cmluZyByZXN1bHQpCisgICAgU2V0Q29va2llc0Zyb21ET01TZXNzaW9uKHVpbnQ2NF90IHNlc3Np
b25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBj
b29raWVTdHJpbmcpCisgICAgQ29va2llc0VuYWJsZWRTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25J
RCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChib29sIGVu
YWJsZWQpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVTZXNzaW9uKHVpbnQ2NF90
IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+
IChTdHJpbmcgcmVzdWx0KQorICAgIEdldFJhd0Nvb2tpZXNTZXNzaW9uKHVpbnQ2NF90IHNlc3Np
b25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tpZVNlc3Npb24odWlu
dDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKKwog
ICAgIFJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OkJsb2JSZWdpc3Ry
YXRpb25EYXRhIGRhdGEpCiAgICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpVUkwg
dXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMKQogICAgIFVucmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6
OlVSTCB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggYzBi
YzM4Ny4uZDQ5NGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApA
QCAtNzM2LDcgKzczNiw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViQ29udGV4dDo6Y3JlYXRlTmV3
V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpCiAgICAgcmV0dXJuICpyZXN1
bHQ7CiB9CiAKLVBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQ
YWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJQ
YWdlUHJveHkqIHJlbGF0ZWRQYWdlKQorUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRl
eHQ6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwKiBw
YWdlR3JvdXAsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UsIGJvb2wgaXNFcGhlbWVyYWwpCiB7
CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKICAgICBpZiAobV9wcm9jZXNz
TW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgewpAQCAtNzUyLDcg
Kzc1Miw3IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQ
YWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhCiAgICAgICAgICAgICBwcm9jZXNzID0g
JmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKICAgICB9
CiAKLSAgICByZXR1cm4gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBwYWdlR3Jv
dXAgPyAqcGFnZUdyb3VwIDogbV9kZWZhdWx0UGFnZUdyb3VwLmdldCgpKTsKKyAgICByZXR1cm4g
cHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBwYWdlR3JvdXAgPyAqcGFnZUdyb3Vw
IDogbV9kZWZhdWx0UGFnZUdyb3VwLmdldCgpLCBpc0VwaGVtZXJhbCk7CiB9CiAKIERvd25sb2Fk
UHJveHkqIFdlYkNvbnRleHQ6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2Us
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5oCmluZGV4IDY5NjBjZGQuLmQ4MGRkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKIAogICAgIFN0b3JhZ2VN
YW5hZ2VyJiBzdG9yYWdlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuICptX3N0b3JhZ2VNYW5hZ2Vy
OyB9CiAKLSAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiwgV2ViUGFnZUdyb3VwKiwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IDApOworICAg
IFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQ
YWdlR3JvdXAqLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gMCwgYm9vbCBpc0VwaGVtZXJh
bCA9IGZhbHNlKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29u
c3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZVBhdGg7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3NThlZTRmLi5mYzgxMTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjI4LDEyICsyMjgsMTIgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHdlYktleWJvYXJkRXZlbnRUeXBlU3RyaW5nKFdlYkV2ZW50OjpU
eXBlIHR5cGUpCiB9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogCi1QYXNzUmVmUHRyPFdlYlBh
Z2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCwgdWludDY0X3Qg
cGFnZUlEKQorUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUGFnZUdy
b3VwJiBwYWdlR3JvdXAsIHVpbnQ2NF90IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZVByb3h5KHBhZ2VDbGllbnQsIHByb2Nlc3Ms
IHBhZ2VHcm91cCwgcGFnZUlEKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQYWdlUHJv
eHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUdyb3VwLCBzZXNzaW9uSUQsIHBhZ2VJRCkpOwog
fQogCi1XZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCB1aW50NjRf
dCBwYWdlSUQpCitXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCB1
aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKICAgICA6IG1fcGFnZUNsaWVudChw
YWdlQ2xpZW50KQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cChw
YWdlR3JvdXApCkBAIC0yNzksNiArMjc5LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWIKICAg
ICAsIG1fbmVlZFRvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdl
SUQpCisgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2lzUGFnZVN1c3BlbmRl
ZChmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2lzU21hcnRJbnNlcnREZWxldGVF
bmFibGVkKFRleHRDaGVja2VyOjppc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGJmNTBmYzIuLjkwYTczYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgV2ViUGFnZVByb3h5X2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1
ZGUgIkFQSVNlc3Npb24uaCIKICNpbmNsdWRlICJBdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyQWN0aW9uLmgi
CkBAIC0zMjYsMTAgKzMyNywxMSBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgICwgcHVibGljIElQQzo6TWVz
c2FnZVNlbmRlciB7CiBwdWJsaWM6CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwg
dWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNy
ZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgdWludDY0
X3Qgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOwogICAgIHZpcnR1YWwgfldlYlBhZ2VQcm94
eSgpOwogCiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0K
KyAgICB1aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQog
CiAgICAgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJh
bWUuZ2V0KCk7IH0KICAgICBXZWJGcmFtZVByb3h5KiBmb2N1c2VkRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX2ZvY3VzZWRGcmFtZS5nZXQoKTsgfQpAQCAtODU1LDcgKzg1Nyw3IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9y
KCkgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KICAgICAgICAgCiBwcml2YXRl
OgotICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFn
ZUdyb3VwJiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYs
IFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIHVpbnQ2NF90IHNlc3Npb25JRCwgdWlu
dDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogICAgIHZvaWQg
aW5pdGlhbGl6ZUNyZWF0aW9uUGFyYW1ldGVycygpOwogCkBAIC0xMzA4LDYgKzEzMTAsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICB1aW50NjRfdCBt
X3Nlc3Npb25JRDsKIAogICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5kZWQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMGNjNjFkZC4uNWZjMjdh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTcyLDYgKzcyLDIxIEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgpCiAgICAgcmV0
dXJuICsrdW5pcXVlUGFnZUlEOwogfQogCitzdGF0aWMgY29uc3QgdWludDY0X3QgZGVmYXVsdFNl
c3Npb25JRCA9IDA7CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVNlc3Npb25JRChib29sIGlz
RXBoZW1lcmFsKQoreworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVTZXNzaW9uSUQ7CisgICAg
aWYgKGlzRXBoZW1lcmFsKQorICAgICAgICByZXR1cm4gKyt1bmlxdWVTZXNzaW9uSUQ7CisgICAg
cmV0dXJuIGRlZmF1bHRTZXNzaW9uSUQ7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5Ojppc0Vw
aGVtZXJhbFNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIHJldHVybiBzZXNzaW9u
SUQgIT0gZGVmYXVsdFNlc3Npb25JRDsKK30KKwogc3RhdGljIFdlYlByb2Nlc3NQcm94eTo6V2Vi
UGFnZVByb3h5TWFwJiBnbG9iYWxQYWdlTWFwKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpAQCAtMTYzLDEwICsxNzgsMTEgQEAgV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogICAgIHJldHVybiBnbG9iYWxQYWdlTWFwKCku
Z2V0KHBhZ2VJRCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJv
eHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwJiBw
YWdlR3JvdXApCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVh
dGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3Vw
LCBib29sIGlzRXBoZW1lcmFsKQogewogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGdlbmVyYXRlUGFn
ZUlEKCk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6
Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlR3JvdXAsIHBhZ2VJRCk7CisgICAgdWludDY0
X3Qgc2Vzc2lvbklEID0gZ2VuZXJhdGVTZXNzaW9uSUQoaXNFcGhlbWVyYWwpOworICAgIFJlZlB0
cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xpZW50
LCAqdGhpcywgcGFnZUdyb3VwLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnNl
dChwYWdlSUQsIHdlYlBhZ2UuZ2V0KCkpOwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlE
LCB3ZWJQYWdlLmdldCgpKTsKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggODMzNDM4NS4uNTg3MjcwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBw
dWJsaWM6CiAgICAgV2ViQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQo
KTsgfQogCiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQp
OwotICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQm
LCBXZWJQYWdlR3JvdXAmKTsKKyAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2Vi
UGFnZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwJiwgYm9vbCk7CiAgICAgdm9pZCBhZGRFeGlz
dGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJl
bW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKICAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4g
cGFnZXMoKSBjb25zdDsKQEAgLTkyLDYgKzkyLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29u
bmVjdEZyYW1lc0Zyb21QYWdlKFdlYlBhZ2VQcm94eSopOyAvLyBJbmNsdWRpbmcgbWFpbiBmcmFt
ZS4KICAgICBzaXplX3QgZnJhbWVDb3VudEluUGFnZShXZWJQYWdlUHJveHkqKSBjb25zdDsgLy8g
SW5jbHVkaW5nIG1haW4gZnJhbWUuCiAKKyAgICBzdGF0aWMgYm9vbCBpc0VwaGVtZXJhbFNlc3Np
b24odWludDY0X3QpOworCiAgICAgdm9pZCB1cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CiAKICAg
ICB2b2lkIHJlZ2lzdGVyTmV3V2ViQmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221223</attachid>
            <date>2014-01-14 18:26:53 -0800</date>
            <delta_ts>2014-01-17 14:10:41 -0800</delta_ts>
            <desc>WIP sessions</desc>
            <filename>sessionid.08.diff</filename>
            <type>text/plain</type>
            <size>43324</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkYjE5ZGJiLi5kY2YyMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYg
QEAKKzIwMTQtMDEtMTQgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEZpbGwgb3V0IHNlc3Npb25zIGEgYml0IG1vcmUuCisgICAgICAgIERPIE5PVCBTVUJNSVQgKGtu
b3duIHJlZ3Jlc3Npb25zKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjkxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2ll
c0Zyb21ET00pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29va2llc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQubW06CisgICAgICAgIChXZWJLaXQ6OnNlc3Npb25NYXApOgorICAgICAgICAoV2ViS2l0Ojpw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUElTZXNzaW9uLmNw
cDoKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6Z2VuZXJhdGVJRCk6CisgICAgICAgIChBUEk6OlNl
c3Npb246OmRlZmF1bHRTZXNzaW9uKToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6bGVnYWN5UHJp
dmF0ZVNlc3Npb24pOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjpTZXNzaW9uKToKKyAgICAgICAg
KEFQSTo6U2Vzc2lvbjo6aXNFcGhlbWVyYWwpOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjpnZXRJ
RCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSVNlc3Npb24uaDoKKyAgICAgICAgKEFQSTo6U2Vz
c2lvbjo6aXNFcGhlbWVyYWxJRCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXNzaW9uSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0
ZVdlYlBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZXNzaW9uTWFwKToK
KyAgICAgICAgKFdlYktpdDo6cHJpdmF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKwogMjAxNC0wMS0xNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYlBhZ2VQcm94eSdzIHNldFVzZXJBZ2VudCBwcml2
YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZjU5OTQ0Ni4uNmUwMDM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkFQSVNlc3Npb24uaCIKICNpbmNs
dWRlICJCbG9iUmVnaXN0cmF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb25TdGFjay5o
IgogI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKQEAgLTE0NywxMCArMTQ4LDEwIEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldFNlcmlhbExvYWRpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3NlcmlhbExvYWRpbmdFbmFibGVkID0gZW5hYmxlZDsK
IH0KIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkKQorc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3Rv
cmFnZVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotICAgIGlmIChwcml2YXRlQnJvd3Np
bmdFbmFibGVkKSB7Ci0gICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Np
b24gPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwor
ICAgIGlmIChBUEk6OlNlc3Npb246OmlzRXBoZW1lcmFsSUQoc2Vzc2lvbklEKSkgeworICAgICAg
ICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uID0gUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKICAgICAgICAgaWYg
KHByaXZhdGVTZXNzaW9uKQogICAgICAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbjsKICAg
ICAgICAgLy8gU29tZSByZXF1ZXN0cyB3aXRoIHByaXZhdGUgYnJvd3NpbmcgbW9kZSByZXF1ZXN0
ZWQgbWF5IHN0aWxsIGJlIGNvbWluZyBzaG9ydGx5IGFmdGVyIE5ldHdvcmtQcm9jZXNzIHdhcyB0
b2xkIHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24uCkBAIC0xNjAsOSArMTYxLDkgQEAgc3RhdGljIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkKQogICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFy
dERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJ
RCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZCh1aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICAvLyBG
SVhNRTogRG8gc29tZXRoaW5nIHdpdGggdGhlIHByaXZhdGUgYnJvd3NpbmcgZmxhZy4KKyAgICAv
LyBGSVhNRTogRG8gc29tZXRoaW5nIHdpdGggdGhlIHNlc3Npb24gSUQuCiAgICAgTmV0d29ya1By
b2Nlc3M6OnNoYXJlZCgpLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoZG93bmxvYWRJ
RCwgcmVxdWVzdCk7CiB9CiAKQEAgLTE4MiwzNCArMTgzLDM0IEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50
NjRfdCBtCiAgICAgbG9hZGVyLT5kaWRDb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCgpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVzRm9yRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6
Y29va2llc0ZvckRPTShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmly
c3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzZXRDb29raWVzRnJvbURPTSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewot
ICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93
c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29y
ZTo6c2V0Q29va2llc0Zyb21ET00oc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0
eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKHVpbnQ2NF90IHNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgYm9vbCYgcmVzdWx0
KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHN0b3JhZ2VTZXNzaW9u
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9
IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0
UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFy
dHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJh
d0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmVzdWx0KQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyh1aW50NjRfdCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBy
ZXN1bHQpCiB7Ci0gICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihwcml2
YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOworICAgIFdlYkNv
cmU6OmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwg
dXJsLCByZXN1bHQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
ZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGVsZXRlQ29va2llKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3Rv
cmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7Cisg
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwg
Y29va2llTmFtZSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgQmxvYlJlZ2lzdHJhdGlvbkRhdGEm
IGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA5NDU3Mzc1Li4zOTgxZmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTc2LDE1ICs3NiwxNSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc2VydmVQZW5k
aW5nUmVxdWVzdHModWludDMyX3QgcmVzb3VyY2VMb2FkUHJpb3JpdHkpOwogICAgIHZvaWQgc2V0
U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCk7Ci0gICAgdm9pZCBzdGFydERvd25sb2FkKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBzdGFydERvd25sb2FkKHVpbnQ2NF90IHNl
c3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0
X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
U3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgY29va2llc0VuYWJsZWQoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wmIHJlc3VsdCk7Ci0gICAgdm9pZCBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1
bHQpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcm
IHJlc3VsdCk7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTSh1aW50NjRfdCBzZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRW5hYmxlZCh1aW50NjRfdCBzZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9v
bCYgcmVzdWx0KTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHVpbnQ2
NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKHVpbnQ2
NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IEJsb2JSZWdpc3RyYXRpb25EYXRhJik7CiAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Jj
VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
N2U4OTAzNS4uYTQ1OTdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTMyLDE1ICszMiwxNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgCiAgICAgU2V0U2VyaWFsTG9hZGlu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKSAtPiAoKQogCi0gICAgU3RhcnREb3dubG9hZChib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFN0YXJ0RG93bmxvYWQodWludDY0X3Qgc2Vzc2lvbklE
LCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkK
ICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogCi0g
ICAgQ29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKLSAgICBT
ZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llU3RyaW5nKQotICAg
IENvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJM
IGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChib29sIGVuYWJsZWQpCi0gICAgQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBX
ZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1
bHQpCi0gICAgR2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNv
cmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llcykKLSAgICBEZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKKyAgICBDb29raWVz
Rm9yRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQorICAgIFNldENvb2tpZXNGcm9tRE9NKHVp
bnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1
cmwsIFN0cmluZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0VuYWJsZWQodWludDY0X3Qgc2Vz
c2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKGJv
b2wgZW5hYmxlZCkKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSh1aW50NjRfdCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAo
U3RyaW5nIHJlc3VsdCkKKyAgICBHZXRSYXdDb29raWVzKHVpbnQ2NF90IHNlc3Npb25JRCwgV2Vi
Q29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tpZSh1aW50NjRfdCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJCbG9i
VVJMKFdlYkNvcmU6OlVSTCB1cmwsIFdlYktpdDo6QmxvYlJlZ2lzdHJhdGlvbkRhdGEgZGF0YSkK
ICAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVS
TCBzcmNVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggZTUwMDBmNS4uZjlmZmNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkFQSVNlc3Npb24uaCIKICNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKQEAgLTE2MSw3ICsxNjIsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZQogI2VuZGlmCiAKICAgICBpZiAocGFyYW1ldGVycy5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKQotICAgICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQpOwogCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtT
ZXNzaW9uKQogICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKTsKQEAgLTIxMiwxNCArMjEzLDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNy
ZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNlbmRpZgogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklE
KQogewotICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCk7CisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotICAgIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNz
aW9uSUQpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QodWludDY0
X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMjQ4ZTNhYy4u
MDM0ZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCkBAIC0xMDQsOCArMTA0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVO
ZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcygpOwotICAgIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
OwotICAgIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICB2b2lkIGVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICB2b2lk
IGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CiAgICAg
dm9pZCBkb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3du
bG9hZElEKTsKICAgICB2b2lkIHNldENhY2hlTW9kZWwodWludDMyX3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCA2YWQ2YzI1Li5jNGE3MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzQsOCArMzQs
OCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgVXNl
clByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzKQogI2Vu
ZGlmCiAKLSAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKLSAgICBEZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpCisgICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1
aW50NjRfdCBzZXNzaW9uSUQpCisgICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWlu
dDY0X3Qgc2Vzc2lvbklEKQogCiAgICAgRG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2Fk
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQogICAgIENhbmNlbERvd25sb2Fk
KHVpbnQ2NF90IGRvd25sb2FkSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAppbmRleCAzYjc0MTM1Li4yNTZjNzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0LmgKQEAgLTQwLDEwICs0MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0g
ICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgc3RhdGljIHZvaWQg
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25J
RCk7CiAKLSAgICBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCk7CisgICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiogcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOwogCiAgICAg
dmlydHVhbCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3Q7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IGEzODI5ZTguLjViMjJk
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9t
YWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTI2LDIxICsyNiwzMCBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgogCisjaW1w
b3J0ICJBUElTZXNzaW9uLmgiCiAjaW1wb3J0ICJXZWJFcnJvcnMuaCIKICNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Cisj
aW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKQorc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc2Vzc2lvbk1hcCgpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+IHNlc3Npb247Ci0gICAgcmV0dXJuIHNlc3Npb247Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+Pj4gc2Vzc2lvbk1hcDsKKworICAgIHJldHVybiBzZXNz
aW9uTWFwLmdldCgpOworfQorCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25J
RCkKK3sKKyAgICByZXR1cm4gc2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKIH0KIAogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6On5SZW1vdGVOZXR3
b3JraW5nQ29udGV4dCgpCkBAIC02NSw3ICs3NCw3IEBAIGJvb2wgUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OmxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdAogTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBj
b25zdAogewogICAgIGlmIChtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKCkuZ2V0KCk7CisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0
ZVNlc3Npb24gPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbihBUEk6OlNlc3Npb246Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQpLmdldCgpOwogICAgICAgICBpZiAocHJpdmF0ZVNlc3Npb24p
CiAgICAgICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uOwogICAgICAgICAvLyBTb21lIHJl
cXVlc3RzIHdpdGggcHJpdmF0ZSBicm93c2luZyBtb2RlIHJlcXVlc3RlZCBtYXkgc3RpbGwgYmUg
Y29taW5nIHNob3J0bHkgYWZ0ZXIgTmV0d29ya1Byb2Nlc3Mgd2FzIHRvbGQgdG8gZGVzdHJveSBp
dHMgc2Vzc2lvbi4KQEAgLTc2LDkgKzg1LDkgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1v
dGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogICAgIHJldHVybiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi1OZXR3
b3JrU3RvcmFnZVNlc3Npb24qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiogUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotICAgIHJl
dHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpLmdldCgpOworICAgIHJldHVybiBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLmdldCgpOwogfQogCiBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c291cmNlQXBwbGljYXRp
b25BdWRpdERhdGEoKSBjb25zdApAQCAtMTAzLDIwICsxMTIsMjEgQEAgdm9pZCBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVy
QmFzZShjb24KICAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNl
KCkgPSBpZGVudGlmaWVyOwogfQogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotICAg
IGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQorICAgIGlmIChwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKICAgICBB
U1NFUlQoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051
bGwoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmco
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpICsgIi5Qcml2YXRl
QnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2ZJZGVudGlmaWVyID0gU3RyaW5nOjpmb3JtYXQoIiVzLiVsbGQuUHJpdmF0ZUJyb3dzaW5nIiwg
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLnV0ZjgoKS5kYXRh
KCkgLCBzZXNzaW9uSUQpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKLSAgICBwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbigpID0gc3RkOjptb3ZlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKCkpKTsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpID0gc3RkOjptb3ZlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkp
KTsKIH0KIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZh
dGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotICAgIHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOworICAgIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkgPSBudWxscHRyOworICAgIHNlc3Npb25NYXAoKS5yZW1vdmUo
c2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uY3Bw
CmluZGV4IDQyMzEyYmIuLjgxNTNmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUElTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vz
c2lvbi5jcHAKQEAgLTI2LDEwICsyNiw0NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkFQSVNlc3Npb24uaCIKIAorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKIG5hbWVz
cGFjZSBBUEkgewogCit1aW50NjRfdCBTZXNzaW9uOjpnZW5lcmF0ZUlEKGJvb2wgaXNFcGhlbWVy
YWwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyB1aW50NjRf
dCB1bmlxdWVTZXNzaW9uSUQgPSBsZWdhY3lQcml2YXRlU2Vzc2lvbklEOworICAgIEFTU0VSVChp
c0VwaGVtZXJhbCk7CisgICAgcmV0dXJuICsrdW5pcXVlU2Vzc2lvbklEOworfQorCitTZXNzaW9u
JiBTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIHN0YXRpYyBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IG5ldyBTZXNzaW9uKGZh
bHNlLCBkZWZhdWx0U2Vzc2lvbklEKTsKKyAgICByZXR1cm4gKmRlZmF1bHRTZXNzaW9uOworfQor
CitTZXNzaW9uJiBTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBTZXNzaW9uKiBsZWdhY3lQcml2YXRlU2Vz
c2lvbiA9IG5ldyBTZXNzaW9uKHRydWUsIGxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpOworICAgIHJl
dHVybiAqbGVnYWN5UHJpdmF0ZVNlc3Npb247Cit9CisKIFNlc3Npb246OlNlc3Npb24oYm9vbCBp
c0VwaGVtZXJhbCkKICAgICA6IG1faXNFcGhlbWVyYWwoaXNFcGhlbWVyYWwpCisgICAgLCBtX3Nl
c3Npb25JRChnZW5lcmF0ZUlEKGlzRXBoZW1lcmFsKSkKK3sKK30KKworU2Vzc2lvbjo6U2Vzc2lv
bihib29sIGlzRXBoZW1lcmFsLCB1aW50NjRfdCBzZXNzaW9uSUQpCisgICAgOiBtX2lzRXBoZW1l
cmFsKGlzRXBoZW1lcmFsKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogfQogCkBA
IC0zOCwxMSArNzIsMTYgQEAgUGFzc1JlZlB0cjxTZXNzaW9uPiBTZXNzaW9uOjpjcmVhdGUoYm9v
bCBpc0VwaGVtZXJhbCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlc3Npb24oaXNFcGhlbWVy
YWwpKTsKIH0KIAotYm9vbCBTZXNzaW9uOjppc0VwaGVtZXJhbCgpCitib29sIFNlc3Npb246Omlz
RXBoZW1lcmFsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc0VwaGVtZXJhbDsKIH0KIAordWlu
dDY0X3QgU2Vzc2lvbjo6Z2V0SUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nlc3Npb25JRDsK
K30KKwogU2Vzc2lvbjo6flNlc3Npb24oKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElT
ZXNzaW9uLmgKaW5kZXggM2ZiNWY2Ny4uZGFiNWE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJU2Vzc2lvbi5oCkBAIC0zMywxMyArMzMsMjMgQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IFNlc3Npb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTZXNz
aW9uPiB7CiBwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGRlZmF1bHRTZXNzaW9u
SUQgPSAxOworICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBsZWdhY3lQcml2YXRlU2Vzc2lvbklE
ID0gMjsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlc3Npb24+IGNyZWF0ZShib29sIGlzRXBo
ZW1lcmFsKTsKLSAgICBib29sIGlzRXBoZW1lcmFsKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGRl
ZmF1bHRTZXNzaW9uKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGxlZ2FjeVByaXZhdGVTZXNzaW9u
KCk7CisgICAgc3RhdGljIGJvb2wgaXNFcGhlbWVyYWxJRCh1aW50NjRfdCBzZXNzaW9uSUQpIHsg
cmV0dXJuIHNlc3Npb25JRCAhPSBkZWZhdWx0U2Vzc2lvbklEOyB9CisgICAgYm9vbCBpc0VwaGVt
ZXJhbCgpIGNvbnN0OworICAgIHVpbnQ2NF90IGdldElEKCkgY29uc3Q7CiAgICAgdmlydHVhbCB+
U2Vzc2lvbigpOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlEKGJv
b2wgaXNFcGhlbWVyYWwpOwogICAgIGV4cGxpY2l0IFNlc3Npb24oYm9vbCBpc0VwaGVtZXJhbCk7
CisgICAgU2Vzc2lvbihib29sIGlzRXBoZW1lcmFsLCB1aW50NjRfdCBzZXNzaW9uSUQpOwogICAg
IGJvb2wgbV9pc0VwaGVtZXJhbDsKKyAgICB1aW50NjRfdCBtX3Nlc3Npb25JRDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmlu
ZGV4IGUxMDUxNWIuLmYxZDdlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAKQEAgLTQ2NywxNiArNDY3LDQ0IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0QW55UGFnZUdy
b3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93CiAjaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYg
bmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkK
LSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIDApOworICAgICAgICAgICAgbmV0
d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKSwg
MCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAw
KTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihBUEk6OlNlc3Npb246OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQpLCAwKTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFRChORVRXT1JL
X1BST0NFU1MpCiAKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgc2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkpOworICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oQVBJOjpTZXNzaW9uOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKSk7CiAgICAgZWxzZQotICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpOwor
ICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKEFQSTo6U2Vzc2lvbjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCkpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
dWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIEFTU0VSVChpc0VwaGVtZXJhbFNlc3Npb24oc2Vz
c2lvbklEKSk7CisKKyAgICAvLyBGSVhNRTogZmlndXJlIG91dCB3aGF0IHRvIGRvIHdpdGggbV9p
Y29uRGF0YWJhc2UKKworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgaWYgKHVzZXNO
ZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgIG5ldHdvcmtQcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHNlc3Npb25JRCksIDApOworI2VuZGlmIC8vIEVOQUJMRUQoTkVUV09SS19QUk9D
RVNTKQorCisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCkpOworfQorCit2b2lkIFdlYkNvbnRl
eHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKK3sK
KyAgICBBU1NFUlQoaXNFcGhlbWVyYWxTZXNzaW9uKHNlc3Npb25JRCkpOworCisgICAgLy8gRklY
TUU6IGZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIG1faWNvbkRhdGFiYXNlCisKKyNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQorICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3
b3JrUHJvY2VzcygpKQorICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKSwg
MCk7CisjZW5kaWYgLy8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCisKKyAgICBzZW5kVG9BbGxQ
cm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKHNlc3Npb25JRCkpOwogfQogCiB2b2lkICgqc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKShX
S1N0cmluZ1JlZiBtZXNzYWdlTmFtZSk7CkBAIC01OTcsNyArNjI1LDcgQEAgV2ViUHJvY2Vzc1By
b3h5JiBXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpJbml0aWFsaXplV2ViUHJvY2VzcyhwYXJhbWV0ZXJzLCBX
ZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKGluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25V
c2VyRGF0YS5nZXQoKSwgKnByb2Nlc3MpKSwgMCk7CiAKICAgICBpZiAoV2ViUHJlZmVyZW5jZXM6
OmFueVBhZ2VHcm91cHNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCksIDApOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKEFQSTo6U2Vzc2lvbjo6bGVnYWN5UHJpdmF0ZVNlc3Np
b25JRCksIDApOwogCiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOwogCkBAIC03NDAs
NyArNzY4LDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9j
ZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCkKICAgICByZXR1cm4gKnJlc3VsdDsKIH0K
IAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdlYlBhZ2VQcm94
eSogcmVsYXRlZFBhZ2UpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3Jl
YXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91
cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQogewog
ICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7CiAgICAgaWYgKG1fcHJvY2Vzc01v
ZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKQEAgLTc1Niw3ICs3
ODQsMTIgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZVdlYlBh
Z2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGEKICAgICAgICAgICAgIHByb2Nlc3MgPSAm
Y3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOwogICAgIH0K
IAotICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHBhZ2VHcm91
cCA/ICpwYWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCkpOworICAgIHJldHVybiBw
cm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHBhZ2VHcm91cCA/ICpwYWdlR3JvdXAg
OiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCksIHNlc3Npb24pOworfQorCitQYXNzUmVmUHRyPFdl
YlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkK
K3sKKyAgICByZXR1cm4gY3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBwYWdlR3JvdXAsIHBhZ2VH
cm91cC0+cHJlZmVyZW5jZXMoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gQVBJOjpTZXNz
aW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpIDogQVBJOjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lv
bigpLCByZWxhdGVkUGFnZSk7CiB9CiAKIERvd25sb2FkUHJveHkqIFdlYkNvbnRleHQ6OmRvd25s
b2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDY5NjBjZGQu
LmI0ZTBhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMTQ5LDYg
KzE0OSw3IEBAIHB1YmxpYzoKIAogICAgIFN0b3JhZ2VNYW5hZ2VyJiBzdG9yYWdlTWFuYWdlcigp
IGNvbnN0IHsgcmV0dXJuICptX3N0b3JhZ2VNYW5hZ2VyOyB9CiAKKyAgICBQYXNzUmVmUHRyPFdl
YlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwKiwgQVBJ
OjpTZXNzaW9uJiwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IDApOwogICAgIFBhc3NSZWZQ
dHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlR3JvdXAq
LCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gMCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGlu
amVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGVQYXRoOyB9
CkBAIC0yOTIsNiArMjkzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdpbGxTdGFydFVz
aW5nUHJpdmF0ZUJyb3dzaW5nKCk7CiAgICAgc3RhdGljIHZvaWQgd2lsbFN0b3BVc2luZ1ByaXZh
dGVCcm93c2luZygpOwogCisgICAgc3RhdGljIGJvb2wgaXNFcGhlbWVyYWxTZXNzaW9uKHVpbnQ2
NF90IHNlc3Npb25JRCk7CisKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldElnbm9yZVRMU0Vy
cm9ycyhib29sKTsKICAgICBib29sIGlnbm9yZVRMU0Vycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1f
aWdub3JlVExTRXJyb3JzOyB9CkBAIC00MDEsNiArNDA0LDkgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgc2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sKTsK
IAorICAgIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9u
SUQpOworICAgIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklEKTsKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIC8vIFBsdWdp
bkluZm9TdG9yZUNsaWVudDoKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luSW5mb1N0b3JlRGlkTG9h
ZFBsdWdpbnMoUGx1Z2luSW5mb1N0b3JlKikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc1OGVlNGYuLjg4Y2UyNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMjgsMTIgKzIyOCwxMiBAQCBz
dGF0aWMgY29uc3QgY2hhciogd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcoV2ViRXZlbnQ6OlR5
cGUgdHlwZSkKIH0KICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAKLVBhc3NSZWZQdHI8V2ViUGFn
ZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCB1aW50NjRfdCBw
YWdlSUQpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJQYWdlR3Jv
dXAmIHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCB1aW50NjRfdCBwYWdlSUQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2Vz
cywgcGFnZUdyb3VwLCBwYWdlSUQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBhZ2VQ
cm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlR3JvdXAsIHNlc3Npb24sIHBhZ2VJRCkpOwog
fQogCi1XZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCB1aW50NjRf
dCBwYWdlSUQpCitXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCBB
UEk6OlNlc3Npb24mIHNlc3Npb24sIHVpbnQ2NF90IHBhZ2VJRCkKICAgICA6IG1fcGFnZUNsaWVu
dChwYWdlQ2xpZW50KQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91
cChwYWdlR3JvdXApCkBAIC0yNzksNiArMjc5LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJv
eHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWIK
ICAgICAsIG1fbmVlZFRvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChw
YWdlSUQpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKICAgICAsIG1faXNQYWdlU3VzcGVuZGVk
KGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1faXNTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoVGV4dENoZWNrZXI6OmlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDkwYjNlNi4uNmY2NTgxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAog
I2RlZmluZSBXZWJQYWdlUHJveHlfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVk
ZSAiQVBJU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkF1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIK
QEAgLTMyNiwxMCArMzI3LDExIEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgLCBwdWJsaWMgSVBDOjpNZXNz
YWdlU2VuZGVyIHsKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94
eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlR3JvdXAmLCB1
aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3Jl
YXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlR3JvdXAmLCBBUEk6OlNl
c3Npb24mLCB1aW50NjRfdCBwYWdlSUQpOwogICAgIHZpcnR1YWwgfldlYlBhZ2VQcm94eSgpOwog
CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICB1
aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0SUQoKTsgfQog
CiAgICAgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJh
bWUuZ2V0KCk7IH0KICAgICBXZWJGcmFtZVByb3h5KiBmb2N1c2VkRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX2ZvY3VzZWRGcmFtZS5nZXQoKTsgfQpAQCAtODU0LDcgKzg1Niw3IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9y
KCkgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KICAgICAgICAgCiBwcml2YXRl
OgotICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFn
ZUdyb3VwJiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYs
IFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYsIHVpbnQ2NF90
IHBhZ2VJRCk7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKICAgICB2b2lkIGluaXRp
YWxpemVDcmVhdGlvblBhcmFtZXRlcnMoKTsKIApAQCAtMTMwOSw2ICsxMzExLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgQVBJOjpTZXNzaW9uIG1f
c2Vzc2lvbjsKIAogICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5kZWQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMTBmMWFiMC4uNDc2NmI5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE2
NywxMCArMTY3LDEwIEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwog
fQogCi1QYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQ
YWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwKQorUGFz
c1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9u
JiBzZXNzaW9uKQogewogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7Ci0g
ICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBh
Z2VDbGllbnQsICp0aGlzLCBwYWdlR3JvdXAsIHBhZ2VJRCk7CisgICAgUmVmUHRyPFdlYlBhZ2VQ
cm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBw
YWdlR3JvdXAsIHNlc3Npb24sIHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdl
YlBhZ2UuZ2V0KCkpOwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlLmdl
dCgpKTsKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggMGY0YTRlMi4uMWEyZGYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJQ
cm9jZXNzUHJveHlfaAogI2RlZmluZSBXZWJQcm9jZXNzUHJveHlfaAogCisjaW5jbHVkZSAiQVBJ
U2Vzc2lvbi5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
IgpAQCAtNzcsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29udGV4dCYgY29udGV4dCgpIHsg
cmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2Vi
UGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVh
dGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlR3JvdXAmKTsKKyAgICBQYXNzUmVmUHRyPFdl
YlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwJiwgQVBJ
OjpTZXNzaW9uJik7CiAgICAgdm9pZCBhZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5Kiwg
dWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlE
KTsKICAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcGFnZXMoKSBjb25zdDsKQEAgLTkyLDYgKzkz
LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lc0Zyb21QYWdlKFdlYlBhZ2VQ
cm94eSopOyAvLyBJbmNsdWRpbmcgbWFpbiBmcmFtZS4KICAgICBzaXplX3QgZnJhbWVDb3VudElu
UGFnZShXZWJQYWdlUHJveHkqKSBjb25zdDsgLy8gSW5jbHVkaW5nIG1haW4gZnJhbWUuCiAKKyAg
ICBzdGF0aWMgYm9vbCBpc0VwaGVtZXJhbFNlc3Npb24odWludDY0X3QpOworCiAgICAgdm9pZCB1
cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyTmV3V2ViQmFja0Zv
cndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCmluZGV4IDJhOGY0MjcuLmMzYTdhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKIAogI2luY2x1ZGUgIkFQ
SUFycmF5LmgiCisjaW5jbHVkZSAiQVBJU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCkBAIC0yOTksOSArMzAwLDkgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94
eSogcGFnZUdyb3VwLCBib28KICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBUaGlzIHRl
c3Qtb25seSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgd2l0aCBOZXR3b3JrUHJvY2VzcywgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUyNzQ+LgogI2lmIFBMQVRGT1JN
KE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCiAgICAgaWYgKGVuYWJsZWQpCi0g
ICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKTsKKyAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpOwog
ICAgIGVsc2UKLSAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKTsKICNlbmRpZgogICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBh
Z2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKTsKICAg
ICBmb3IgKEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpdGVyID0gcGFnZXMuYmVnaW4oKTsgaXRl
ciAhPSBwYWdlcy5lbmQoKTsgKytpdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oCmluZGV4IDAxYjk5ZDMuLjRhOTM4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQwLDggKzQwLDggQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCk7CisgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CiAgICAgc3RhdGljIHZvaWQg
c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk7CiAKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmlu
ZGV4IGY4MDg2N2MuLjM4ZGNkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbQpAQCAtMjQsNiArMjQsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIkFQSVNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KQEAgLTM0LDE4ICszNiwyOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRl
IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZVNlc3Np
b24oKQorc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+PiYgc2Vzc2lvbk1hcCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBzZXNzaW9uOwotICAgIHJl
dHVybiBzZXNzaW9uOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+Pj4gc2Vzc2lvbk1hcDsKKworICAgIHJldHVybiBzZXNzaW9uTWFwLmdldCgp
OwogfQogCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHBy
aXZhdGVTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKK3sKKyAgICByZXR1cm4gc2Vzc2lvbk1h
cCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKK30KKworCiBzdGF0
aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gYmFzZTsKQEAgLTU5LDExICs3MSw5IEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShj
CiAgICAgaWRlbnRpZmllckJhc2UoKSA9IGJhc2U7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qg
c2Vzc2lvbklEKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBpZiAocHJp
dmF0ZVNlc3Npb24oKSkKKyAgICBpZiAocHJpdmF0ZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGJhc2U7CkBAIC03MiwxNCArODIsMTUgQEAgdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkK
ICAgICBlbHNlCiAgICAgICAgIGJhc2UgPSBpZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0
ZVNlc3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihiYXNlKTsKKyAgICBwcml2YXRlU2Vzc2lvbihzZXNzaW9uSUQpID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFN0cmluZzo6Zm9ybWF0
KCIlcy4lbGxkIiwgYmFzZS51dGY4KCkuZGF0YSgpLCBzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
Cit2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgcHJpdmF0ZVNlc3Npb24oKSA9IG51bGxwdHI7CisgICAgcHJpdmF0ZVNlc3Npb24o
c2Vzc2lvbklEKSA9IG51bGxwdHI7CisgICAgc2Vzc2lvbk1hcCgpLnJlbW92ZShzZXNzaW9uSUQp
OwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBv
bGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQpAQCAtODks
OCArMTAwLDkgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2Nl
cHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWMKICAgICBpZiAoUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKSkKICAgICAgICAgV0tT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiAK
LSAgICBpZiAocHJpdmF0ZVNlc3Npb24oKSkKLSAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHByaXZhdGVTZXNzaW9uKCktPmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGkgOiBzZXNzaW9uTWFwKCkpCisgICAgICAgIGlmIChpLnZh
bHVlKQorICAgICAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGkudmFsdWUtPmNv
b2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKIH0KICAgICAKIGJvb2wgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdApAQCAtMTI1LDcg
KzEzNyw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
ICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKSkKLSAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOworICAgICAgICByZXR1
cm4gKnByaXZhdGVTZXNzaW9uKEFQSTo6U2Vzc2lvbjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7
CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGFk
MWQ2MTQuLjhjZjgwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cApAQCAtNDUyLDE3ICs0NTIsMTcgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nl
c3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCiAgICAgbV9mdWxs
S2V5Ym9hcmRBY2Nlc3NFbmFibGVkID0gZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgV2Vi
UHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQp
CiB7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoU09VUCkKLSAg
ICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCk7CisgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihzZXNzaW9uSUQpOwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQordm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7CiAjaWYgUExBVEZPUk0oTUFD
KSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoU09VUCkKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBm
ZDFlMmFhLi44YmI4NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApA
QCAtMTY1LDkgKzE2NSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50
MzJfdCk7CiAKLSAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICB2
b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgCisgICAgdm9pZCBlbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CisgICAgdm9pZCBk
ZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworCiAgICAg
dm9pZCBwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHBhZ2VX
aWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFnZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDFjOGY4Y2IuLjJhMDc4ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTUxLDkgKzUxLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogI2VuZGlm
CiAKLSAgICAvLyBQcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gaXMgcGVyIHByb2Nlc3MuIEluZGl2
aWR1YWwgcGFnZXMgb3IgcGFnZSBncm91cHMgbWF5IHVzZSB0aGUgcHJpdmF0ZSBzZXNzaW9uIG9y
IHRoZSBkZWZhdWx0IG9uZSBhcyBhcHByb3ByaWF0ZS4KLSAgICBFbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkKLSAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCisgICAgLy8g
TGVnYWN5IHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbiBpcyBwZXIgcHJvY2Vzcy4gSW5kaXZpZHVh
bCBwYWdlcyBvciBwYWdlIGdyb3VwcyBtYXkgdXNlIHRoZSBwcml2YXRlIHNlc3Npb24gb3IgdGhl
IGRlZmF1bHQgb25lIGFzIGFwcHJvcHJpYXRlLgorICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQorICAgIERlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIAogICAgICMgUGx1Zy1pbnMuCiAgICAgRGlkQWRkUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1aW50MzJfdCBoYXNoLCBkb3VibGUgZXhwaXJhdGlvblRp
bWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221491</attachid>
            <date>2014-01-17 14:10:41 -0800</date>
            <delta_ts>2014-01-17 14:34:45 -0800</delta_ts>
            <desc>Fleshed-out sessions</desc>
            <filename>sessionid.14.diff</filename>
            <type>text/plain</type>
            <size>54904</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkYjE5ZGJiLi4xYzBkN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTQtMDEtMTcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEZsZXNoIG91dCBzZXNzaW9uIEFQSXMgKHN0aWxsIG5vdCBlbmFibGVkIGF0IEFQSSBsZXZlbCku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY5MTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbik6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwLgorICAgICAgICAoV2Vi
S2l0OjpzZXNzaW9uTWFwKToKKyAgICAgICAgKFdlYktpdDo6aWRlbnRpZmllckJhc2UpOgorICAg
ICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6Z2V0U2Vzc2lvbk1hcCk6CisgICAgICAgIChX
ZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSk6CisgICAgICAgIChXZWJL
aXQ6OlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRy
YWNrZXI6OmRlc3Ryb3lTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6
OnNldElkZW50aWZpZXJCYXNlKToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaC4KKyAgICAg
ICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmlzRXBoZW1lcmFsSUQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUElTZXNzaW9uLmNwcDoKKyAgICAgICAgKEFQSTo6Z2VuZXJhdGVJRCk6CisgICAg
ICAgIChBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKToKKyAgICAgICAgKEFQSTo6U2Vzc2lv
bjo6bGVnYWN5UHJpdmF0ZVNlc3Npb24pOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjpTZXNzaW9u
KToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6U2Vzc2lv
bjo6aXNFcGhlbWVyYWwpOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjpnZXRJRCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSVNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldEFueVBhZ2VHcm91cE1pZ2h0
SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3Jl
YXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNlc3Npb25JRCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2Vi
UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxD
b250ZXh0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0
b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE0LTAxLTE0ICBCZW5qYW1pbiBQb3VsYWlu
ICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIE1ha2UgV2ViUGFnZVByb3h5
J3Mgc2V0VXNlckFnZW50IHByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCBmNTk5NDQ2Li5iMWRkNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9CbG9iRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oPgpAQCAtMTQ3LDEw
ICsxNDgsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0U2VyaWFs
TG9hZGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2VyaWFsTG9hZGluZ0VuYWJsZWQg
PSBlbmFibGVkOwogfQogCi1zdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vz
c2lvbihib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCitzdGF0aWMgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBw
cml2YXRlU2Vzc2lvbiA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCk7CisgICAgaWYgKFNlc3Npb25UcmFja2VyOjppc0VwaGVtZXJhbElEKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IFNl
c3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkuZ2V0KCk7CiAgICAgICAgIGlmIChwcml2
YXRlU2Vzc2lvbikKICAgICAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb247CiAgICAgICAg
IC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgcmVxdWVzdGVkIG1h
eSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3b3JrUHJvY2VzcyB3YXMgdG9sZCB0
byBkZXN0cm95IGl0cyBzZXNzaW9uLgpAQCAtMTYwLDkgKzE2MSw5IEBAIHN0YXRpYyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCkKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3du
bG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQodWludDY0X3Qgc2Vzc2lvbklELCB1aW50NjRfdCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgLy8gRklYTUU6
IERvIHNvbWV0aGluZyB3aXRoIHRoZSBwcml2YXRlIGJyb3dzaW5nIGZsYWcuCisgICAgLy8gRklY
TUU6IERvIHNvbWV0aGluZyB3aXRoIHRoZSBzZXNzaW9uIElELgogICAgIE5ldHdvcmtQcm9jZXNz
OjpzaGFyZWQoKS5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKGRvd25sb2FkSUQsIHJl
cXVlc3QpOwogfQogCkBAIC0xODIsMzQgKzE4MywzNCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3Qg
bQogICAgIGxvYWRlci0+ZGlkQ29udmVydEhhbmRsZVRvRG93bmxvYWQoKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0
cmluZyYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2ll
c0ZvckRPTSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tp
ZXNGb3JET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFy
dHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c2V0Q29va2llc0Zyb21ET00odWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBX
ZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdF
bmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNl
dENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBib29sJiByZXN1bHQpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZCh1aW50NjRfdCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKIHsK
LSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzdG9yYWdlU2Vzc2lvbihwcml2
YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJD
b3JlOjpjb29raWVzRW5hYmxlZChzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCBmaXJzdFBhcnR5
LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUodWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYg
dXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVk
KSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCBmaXJzdFBhcnR5LCB1
cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29r
aWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXModWludDY0X3Qgc2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmVzdWx0
KQogewotICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKKyAgICBXZWJDb3JlOjpn
ZXRSYXdDb29raWVzKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCwg
cmVzdWx0KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRl
Q29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0b3JhZ2VT
ZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdl
YkNvcmU6OmRlbGV0ZUNvb2tpZShzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCB1cmwsIGNvb2tp
ZU5hbWUpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IEJsb2JSZWdpc3RyYXRpb25EYXRhJiBkYXRh
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggOTQ1NzM3NS4uMzk4MWZhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC03NiwxNSArNzYsMTUgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1Jl
cXVlc3RzKHVpbnQzMl90IHJlc291cmNlTG9hZFByaW9yaXR5KTsKICAgICB2b2lkIHNldFNlcmlh
bExvYWRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgc3RhcnREb3dubG9hZCh1aW50NjRfdCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1h
aW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmlu
ZyYgcmVzdWx0KTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNvb2tpZXNFbmFibGVkKGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVzdWx0KTsK
LSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpOworICAgIHZvaWQgY29va2llc0ZvckRPTSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1
bHQpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00odWludDY0X3Qgc2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgY29va2llc0VuYWJsZWQodWludDY0X3Qgc2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wmIHJl
c3VsdCk7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSh1aW50NjRfdCBz
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyh1aW50NjRfdCBz
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZSh1
aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYpOwogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
RnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDdlODkw
MzUuLmE0NTk3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0zMiwxNSArMzIsMTUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIAogICAgIFNldFNlcmlhbExvYWRpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkgLT4gKCkKIAotICAgIFN0YXJ0RG93bmxvYWQoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCkKKyAgICBTdGFydERvd25sb2FkKHVpbnQ2NF90IHNlc3Npb25JRCwgdWlu
dDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAg
Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENv
b2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmly
c3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpCi0gICAgU2V0Q29v
a2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmly
c3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZVN0cmluZykKLSAgICBDb29r
aWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJz
dFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoYm9vbCBlbmFibGVkKQotICAgIENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29y
ZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQot
ICAgIEdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpV
UkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgQ29va2llc0ZvckRP
TSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpV
UkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKKyAgICBTZXRDb29raWVzRnJvbURPTSh1aW50NjRf
dCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsLCBT
dHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNFbmFibGVkKHVpbnQ2NF90IHNlc3Npb25J
RCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChib29sIGVu
YWJsZWQpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUodWludDY0X3Qgc2Vzc2lv
bklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmlu
ZyByZXN1bHQpCisgICAgR2V0UmF3Q29va2llcyh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcykKKyAgICBEZWxldGVDb29raWUodWludDY0X3Qgc2Vzc2lvbklELCBXZWJD
b3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAogICAgIFJlZ2lzdGVyQmxvYlVSTChX
ZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OkJsb2JSZWdpc3RyYXRpb25EYXRhIGRhdGEpCiAgICAg
UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3Jj
VVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IGU1MDAwZjUuLjQzYzQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1
ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgi
CkBAIC0xNTcsMTEgKzE1OCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogICAgIHNldENh
Y2hlTW9kZWwoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBhcmFtZXRlcnMuY2FjaGVNb2RlbCkpOwog
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNl
KHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CisgICAgU2Vzc2lvblRyYWNr
ZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmll
cik7CiAjZW5kaWYKIAogICAgIGlmIChwYXJhbWV0ZXJzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQp
Ci0gICAgICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCk7CisgICAgICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKTsK
IAogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAg
ICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7
CkBAIC0yMTIsMTQgKzIxMywxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwor
ICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBTZXNzaW9uVHJhY2tl
cjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDI0OGUzYWMuLjAzNGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTA0LDggKzEwNCw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biosIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJv
Y2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQg
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKLSAgICB2b2lkIGVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCk7CisgICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90
IHNlc3Npb25JRCk7CisgICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50
NjRfdCBzZXNzaW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25s
b2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2Vs
RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVp
bnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNmFkNmMyNS4uYzRhNzE0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKFZlY3RvcjxT
dHJpbmc+IGxhbmd1YWdlcykKICNlbmRpZgogCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpCi0gICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQorICAgIEVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQorICAgIERlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIAogICAgIERvd25sb2FkUmVx
dWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgK
aW5kZXggM2I3NDEzNS4uMzdlN2M2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC0zOSwxMSArMzksNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KCk7
CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpOwotCi0gICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiog
cHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKIAogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCBhMzgyOWU4Li45N2NmZDM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCkBAIC0yNiwyMiArMjYsMTkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCIKIAorI2ltcG9ydCAiU2Vzc2lvblRy
YWNrZXIuaCIKICNpbXBvcnQgIldlYkVycm9ycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbXBvcnQgPHd0
Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+IHNlc3Npb247
Ci0gICAgcmV0dXJuIHNlc3Npb247Ci19CiAKIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojp+UmVt
b3RlTmV0d29ya2luZ0NvbnRleHQoKQogewpAQCAtNjUsNyArNjIsNyBAQCBib29sIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0Ojpsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QK
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VT
ZXNzaW9uKCkgY29uc3QKIHsKICAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7Ci0g
ICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb24gPSBwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbigpLmdldCgpOworICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Np
b24qIHByaXZhdGVTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oU2Vzc2lvblRyYWNr
ZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpLmdldCgpOwogICAgICAgICBpZiAocHJpdmF0ZVNl
c3Npb24pCiAgICAgICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uOwogICAgICAgICAvLyBT
b21lIHJlcXVlc3RzIHdpdGggcHJpdmF0ZSBicm93c2luZyBtb2RlIHJlcXVlc3RlZCBtYXkgc3Rp
bGwgYmUgY29taW5nIHNob3J0bHkgYWZ0ZXIgTmV0d29ya1Byb2Nlc3Mgd2FzIHRvbGQgdG8gZGVz
dHJveSBpdHMgc2Vzc2lvbi4KQEAgLTc2LDExICs3Myw2IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKICAgICBy
ZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0K
IAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKCkuZ2V0KCk7Ci19Ci0KIFJldGFpblB0cjxDRkRhdGFSZWY+IFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Ojpzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG5pbDsKQEAgLTkxLDMyICs4MywxMyBAQCBSZXNvdXJjZUVycm9yIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAg
IHJldHVybiBXZWJLaXQ6OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAotc3RhdGljIFN0cmlu
ZyYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpCi17Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiBiYXNlOwotICAgIHJldHVybiBiYXNlOwotfQotCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotICAgIHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSA9IGlkZW50aWZpZXI7Ci19
Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKQotewotICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQorICAg
IGlmIChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBBU1NFUlQoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKS5pc051bGwoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIg
PSBTdHJpbmcocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpICsg
Ii5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOwotCi0gICAgcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb24oKSA9IHN0ZDo6bW92ZShOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNy
ZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24ocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25J
ZGVudGlmaWVyQmFzZSgpKSk7Ci19Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRl
c3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKLXsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKKyAgICBBU1NFUlQoIVNlc3Npb25UcmFja2VyOjpnZXRJ
ZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihz
ZXNzaW9uSUQpID0gc3RkOjptb3ZlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKSArICcu
JyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uY2VjM2FhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNz
aW9uVHJhY2tlci5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgorCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBzZXNzaW9u
TWFwKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+Pj4gbWFwOworICAgIHJldHVybiBtYXAuZ2V0KCk7Cit9CisKK3N0YXRpYyBTdHJp
bmcmIGlkZW50aWZpZXJCYXNlKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYmFzZTsKKyAgICByZXR1cm4gYmFzZTsK
K30KKworY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4+JiBTZXNzaW9uVHJhY2tlcjo6Z2V0U2Vzc2lvbk1hcCgpCit7CisgICAgcmV0
dXJuIHNlc3Npb25NYXAoKTsKK30KKworY29uc3QgU3RyaW5nJiBTZXNzaW9uVHJhY2tlcjo6Z2V0
SWRlbnRpZmllckJhc2UoKQoreworICAgIHJldHVybiBpZGVudGlmaWVyQmFzZSgpOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgU2Vzc2lvblRyYWNrZXI6OnNl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIHJldHVybiBzZXNzaW9uTWFwKCkuYWRk
KHNlc3Npb25JRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworfQorCit2b2lkIFNlc3Npb25U
cmFja2VyOjpkZXN0cm95U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKworICAgIHNlc3Npb25NYXAoKS5yZW1vdmUoc2Vzc2lvbklEKTsK
K30KKwordm9pZCBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZGVu
dGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjUyYzZlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2Vzc2lvblRyYWNrZXIuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBTZXNzaW9uVHJhY2tlcl9oCisjZGVmaW5lIFNlc3Npb25UcmFja2VyX2gKKworI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTZXNzaW9uVHJhY2tlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Vzc2lvblRyYWNrZXIpOworcHVibGljOgorICAg
IHN0YXRpYyBjb25zdCB1aW50NjRfdCBkZWZhdWx0U2Vzc2lvbklEID0gMTsKKyAgICBzdGF0aWMg
Y29uc3QgdWludDY0X3QgbGVnYWN5UHJpdmF0ZVNlc3Npb25JRCA9IDI7CisgICAgc3RhdGljIGJv
b2wgaXNFcGhlbWVyYWxJRCh1aW50NjRfdCBzZXNzaW9uSUQpIHsgcmV0dXJuIHNlc3Npb25JRCAh
PSBTZXNzaW9uVHJhY2tlcjo6ZGVmYXVsdFNlc3Npb25JRDsgfQorICAgIHN0YXRpYyBjb25zdCBI
YXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPj4mIGdldFNlc3Npb25NYXAoKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBnZXRJ
ZGVudGlmaWVyQmFzZSgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPiYgc2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3lTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CisgICAgc3RhdGlj
IHZvaWQgc2V0SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFNlc3Npb25UcmFja2VyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUElTZXNzaW9uLmNwcAppbmRleCA0MjMxMmJiLi5jMmEyNjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCkBAIC0yNiwyMyArMjYsNjMgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElTZXNzaW9uLmgiCiAKKyNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgorCiBuYW1lc3BhY2UgQVBJIHsKIAorc3RhdGljIHVpbnQ2NF90IGdlbmVy
YXRlSUQoYm9vbCBpc0VwaGVtZXJhbCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVNlc3Npb25JRCA9IFdlYktpdDo6U2Vzc2lvblRy
YWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQ7CisgICAgQVNTRVJUKGlzRXBoZW1lcmFsKTsK
KyAgICByZXR1cm4gKyt1bmlxdWVTZXNzaW9uSUQ7Cit9CisKK1Nlc3Npb24mIFNlc3Npb246OmRl
ZmF1bHRTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc3Rh
dGljIFNlc3Npb24qIGRlZmF1bHRTZXNzaW9uID0gbmV3IFNlc3Npb24oZmFsc2UsIFdlYktpdDo6
U2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQpOworICAgIHJldHVybiAqZGVmYXVsdFNl
c3Npb247Cit9CisKK1Nlc3Npb24mIFNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc3RhdGljIFNlc3Npb24qIGxlZ2Fj
eVByaXZhdGVTZXNzaW9uID0gbmV3IFNlc3Npb24odHJ1ZSwgV2ViS2l0OjpTZXNzaW9uVHJhY2tl
cjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CisgICAgcmV0dXJuICpsZWdhY3lQcml2YXRlU2Vz
c2lvbjsKK30KKwogU2Vzc2lvbjo6U2Vzc2lvbihib29sIGlzRXBoZW1lcmFsKQogICAgIDogbV9p
c0VwaGVtZXJhbChpc0VwaGVtZXJhbCkKKyAgICAsIG1fc2Vzc2lvbklEKGdlbmVyYXRlSUQoaXNF
cGhlbWVyYWwpKQoreworfQorCitTZXNzaW9uOjpTZXNzaW9uKGJvb2wgaXNFcGhlbWVyYWwsIHVp
bnQ2NF90IHNlc3Npb25JRCkKKyAgICA6IG1faXNFcGhlbWVyYWwoaXNFcGhlbWVyYWwpCisgICAg
LCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiB9CiAKIFBhc3NSZWZQdHI8U2Vzc2lvbj4gU2Vz
c2lvbjo6Y3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpCiB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQg
Y3JlYXRpb24gb2Ygbm9uLWRlZmF1bHQsIG5vbi1lcGhlbWVyYWwgc2Vzc2lvbnMKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNlc3Npb24oaXNFcGhlbWVyYWwpKTsKIH0KIAotYm9vbCBTZXNzaW9u
Ojppc0VwaGVtZXJhbCgpCitib29sIFNlc3Npb246OmlzRXBoZW1lcmFsKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9pc0VwaGVtZXJhbDsKIH0KIAordWludDY0X3QgU2Vzc2lvbjo6Z2V0SUQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3Nlc3Npb25JRDsKK30KKwogU2Vzc2lvbjo6flNlc3Npb24o
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmgKaW5kZXggM2ZiNWY2Ny4u
ZGY3MTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIEFQSVNlc3Npb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgQVBJIHsKQEAgLTM0LDEyICszNSwxNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNs
YXNzIFNlc3Npb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpT
ZXNzaW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Vzc2lvbj4gY3JlYXRl
KGJvb2wgaXNFcGhlbWVyYWwpOwotICAgIGJvb2wgaXNFcGhlbWVyYWwoKTsKKyAgICBzdGF0aWMg
U2Vzc2lvbiYgZGVmYXVsdFNlc3Npb24oKTsKKyAgICBzdGF0aWMgU2Vzc2lvbiYgbGVnYWN5UHJp
dmF0ZVNlc3Npb24oKTsKKyAgICBib29sIGlzRXBoZW1lcmFsKCkgY29uc3Q7CisgICAgdWludDY0
X3QgZ2V0SUQoKSBjb25zdDsKICAgICB2aXJ0dWFsIH5TZXNzaW9uKCk7CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgU2Vzc2lvbihib29sIGlzRXBoZW1lcmFsKTsKKyAgICBTZXNzaW9uKGJvb2wg
aXNFcGhlbWVyYWwsIHVpbnQ2NF90IHNlc3Npb25JRCk7CiAgICAgYm9vbCBtX2lzRXBoZW1lcmFs
OworICAgIHVpbnQ2NF90IG1fc2Vzc2lvbklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZTEwNTE1Yi4uNTRlZmI0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNdXRhYmxlRGljdGlvbmFyeS5o
IgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tl
ci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIu
aCIKICNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgiCkBAIC00NjcsMTYgKzQ2OCwxNiBAQCB2
b2lkIFdlYkNvbnRleHQ6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoYm9vbCBwcml2YXRlQnJvdwogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
aWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAg
aWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpLCAwKTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFj
a2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKSwgMCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAwKTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCksIDApOwog
ICAgIH0KICNlbmRpZiAvLyBFTkFCTEVEKE5FVFdPUktfUFJPQ0VTUykKIAogICAgIGlmIChwcml2
YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7CisgICAgICAgIHNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCkpOwogICAg
IGVsc2UKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpE
ZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKKyAgICAgICAgc2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihT
ZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCkpOwogfQogCiB2b2lkICgqc19p
bnZhbGlkTWVzc2FnZUNhbGxiYWNrKShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSk7CkBAIC01OTcs
NyArNTk4LDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9j
ZXNzKCkKICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpJbml0aWFsaXpl
V2ViUHJvY2VzcyhwYXJhbWV0ZXJzLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKGluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQoKSwgKnByb2Nlc3MpKSwgMCk7CiAK
ICAgICBpZiAoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VHcm91cHNBcmVVc2luZ1ByaXZhdGVCcm93
c2luZygpKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIDApOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25U
cmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKSwgMCk7CiAKICAgICBtX3Byb2Nlc3Nlcy5h
cHBlbmQocHJvY2Vzcyk7CiAKQEAgLTc0MCw3ICs3NDEsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQo
KQogICAgIHJldHVybiAqcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2Vi
Q29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKK1Bhc3NSZWZQdHI8V2Vi
UGFnZVByb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBBUEk6OlNlc3Npb24mIHNlc3Npb24sIFdlYlBh
Z2VQcm94eSogcmVsYXRlZFBhZ2UpCiB7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJv
Y2VzczsKICAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzcykgewpAQCAtNzU2LDcgKzc1NywxMiBAQCBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94
eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
YQogICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1By
b2Nlc3NDb3VudExpbWl0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdl
YlBhZ2UocGFnZUNsaWVudCwgcGFnZUdyb3VwID8gKnBhZ2VHcm91cCA6IG1fZGVmYXVsdFBhZ2VH
cm91cC5nZXQoKSk7CisgICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVu
dCwgcGFnZUdyb3VwID8gKnBhZ2VHcm91cCA6IG1fZGVmYXVsdFBhZ2VHcm91cC5nZXQoKSwgc2Vz
c2lvbik7Cit9CisKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVX
ZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBX
ZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQoreworICAgIHJldHVybiBjcmVhdGVXZWJQYWdlKHBh
Z2VDbGllbnQsIHBhZ2VHcm91cCwgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLT5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkgPyBBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCkgOiBB
UEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCksIHJlbGF0ZWRQYWdlKTsKIH0KIAogRG93bmxv
YWRQcm94eSogV2ViQ29udGV4dDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFn
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmgKaW5kZXggNjk2MGNkZC4uZDlkNjY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5oCkBAIC0xNDksNiArMTQ5LDcgQEAgcHVibGljOgogCiAgICAgU3RvcmFn
ZU1hbmFnZXImIHN0b3JhZ2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gKm1fc3RvcmFnZU1hbmFn
ZXI7IH0KIAorICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmLCBXZWJQYWdlR3JvdXAqLCBBUEk6OlNlc3Npb24mLCBXZWJQYWdlUHJveHkqIHJlbGF0
ZWRQYWdlID0gMCk7CiAgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2Uo
UGFnZUNsaWVudCYsIFdlYlBhZ2VHcm91cCosIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UgPSAw
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1
cm4gbV9pbmplY3RlZEJ1bmRsZVBhdGg7IH0KQEAgLTI5Miw2ICsyOTMsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgd2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKICAgICBzdGF0
aWMgdm9pZCB3aWxsU3RvcFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7CiAKKyAgICBzdGF0aWMgYm9v
bCBpc0VwaGVtZXJhbFNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKwogI2lmIFVTRShTT1VQ
KQogICAgIHZvaWQgc2V0SWdub3JlVExTRXJyb3JzKGJvb2wpOwogICAgIGJvb2wgaWdub3JlVExT
RXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVUTFNFcnJvcnM7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNzU4ZWU0Zi4uODhjZTI2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIyOCwxMiArMjI4
LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiB3ZWJLZXlib2FyZEV2ZW50VHlwZVN0cmluZyhXZWJF
dmVudDo6VHlwZSB0eXBlKQogfQogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKIAotUGFzc1JlZlB0
cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAsIHVp
bnQ2NF90IHBhZ2VJRCkKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNy
ZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdl
YlBhZ2VHcm91cCYgcGFnZUdyb3VwLCBBUEk6OlNlc3Npb24mIHNlc3Npb24sIHVpbnQ2NF90IHBh
Z2VJRCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50
LCBwcm9jZXNzLCBwYWdlR3JvdXAsIHBhZ2VJRCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViUGFnZVByb3h5KHBhZ2VDbGllbnQsIHByb2Nlc3MsIHBhZ2VHcm91cCwgc2Vzc2lvbiwgcGFn
ZUlEKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAs
IHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUGFnZUdyb3VwJiBwYWdl
R3JvdXAsIEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbiwgdWludDY0X3QgcGFnZUlEKQogICAgIDogbV9w
YWdlQ2xpZW50KHBhZ2VDbGllbnQpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKICAgICAsIG1f
cGFnZUdyb3VwKHBhZ2VHcm91cCkKQEAgLTI3OSw2ICsyNzksNyBAQCBXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MsIFdlYgogICAgICwgbV9uZWVkVG91Y2hFdmVudHMoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1f
cGFnZUlEKHBhZ2VJRCkKKyAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQogICAgICwgbV9pc1BhZ2VT
dXNwZW5kZWQoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9pc1NtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0OTBiM2U2Li4wYjRm
MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIFdlYlBhZ2VQcm94eV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
KyNpbmNsdWRlICJBUElTZXNzaW9uLmgiCiAjaW5jbHVkZSAiQXV0b0NvcnJlY3Rpb25DYWxsYmFj
ay5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlckFj
dGlvbi5oIgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zMjYsMTAgKzMy
OCwxMSBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBw
dWJsaWM6CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdl
Q2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgdWludDY0X3QgcGFnZUlE
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50
JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgQVBJOjpTZXNzaW9uJiwgdWludDY0
X3QgcGFnZUlEKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAogICAgIHVpbnQ2NF90
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgdWludDY0X3Qgc2Vzc2lv
bklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLT5nZXRJRCgpOyB9CiAKICAgICBXZWJGcmFt
ZVByb3h5KiBtYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZS5nZXQoKTsgfQog
ICAgIFdlYkZyYW1lUHJveHkqIGZvY3VzZWRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNl
ZEZyYW1lLmdldCgpOyB9CkBAIC04NTQsNyArODU3LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6
OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSB7IHJldHVybiBt
X3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQogICAgICAgICAKIHByaXZhdGU6Ci0gICAgV2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlR3JvdXAmLCB1aW50
NjRfdCBwYWdlSUQpOworICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1By
b3h5JiwgV2ViUGFnZUdyb3VwJiwgQVBJOjpTZXNzaW9uJiwgdWludDY0X3QgcGFnZUlEKTsKICAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNyZWF0aW9u
UGFyYW1ldGVycygpOwogCkBAIC0xMzA5LDYgKzEzMTIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBSZWY8QVBJOjpTZXNzaW9uPiBtX3Nlc3Npb247
CiAKICAgICBib29sIG1faXNQYWdlU3VzcGVuZGVkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDEwZjFhYjAuLjQ3NjZiOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjcsMTAgKzE2
NywxMCBAQCBXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQpCiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VNYXAoKS5nZXQocGFnZUlEKTsKIH0KIAotUGFz
c1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCkKK1Bhc3NSZWZQdHI8
V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAsIEFQSTo6U2Vzc2lvbiYgc2Vzc2lv
bikKIHsKICAgICB1aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOwotICAgIFJlZlB0
cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xpZW50
LCAqdGhpcywgcGFnZUdyb3VwLCBwYWdlSUQpOworICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHdl
YlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xpZW50LCAqdGhpcywgcGFnZUdyb3Vw
LCBzZXNzaW9uLCBwYWdlSUQpOwogICAgIG1fcGFnZU1hcC5zZXQocGFnZUlELCB3ZWJQYWdlLmdl
dCgpKTsKICAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHBhZ2VJRCwgd2ViUGFnZS5nZXQoKSk7CiAj
aWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCmluZGV4IDBmNGE0ZTIuLjE1ZDAxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViUHJvY2Vzc1By
b3h5X2gKICNkZWZpbmUgV2ViUHJvY2Vzc1Byb3h5X2gKIAorI2luY2x1ZGUgIkFQSVNlc3Npb24u
aCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlck1hcC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKQEAgLTc3
LDcgKzc4LDcgQEAgcHVibGljOgogICAgIFdlYkNvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBt
X2NvbnRleHQuZ2V0KCk7IH0KIAogICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2UodWlu
dDY0X3QgcGFnZUlEKTsKLSAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwJik7CisgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lv
biYpOwogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90
IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAg
VmVjdG9yPFdlYlBhZ2VQcm94eSo+IHBhZ2VzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTliYTExYy4uY2YwYjAx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNzc5LDYgKzc3OSw4IEBACiAJCTZFRTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBX
S0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZh
dGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MjhFODZGMTE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOEU4NkVGMTc5NTE4OEMw
MDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovOyB9OwogCQk3MjhFODZGMjE3OTUxODhD
MDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29s
b3JQaWNrZXJNYWMubW0gKi87IH07CisJCTc1M0UzRTBEMTg4NzM5ODUwMDE4ODQ5NiAvKiBTZXNz
aW9uVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NTNFM0UwQjE4ODczOTczMDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuY3BwICovOyB9
OworCQk3NTNFM0UwRTE4ODczOTg5MDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1M0UzRTA5MTg4NzM5NEIw
MDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oICovOyB9OwogCQk3NTU0MjJCQjE4MDYyQjlDMDA0
NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAgaW4gQ29weSBGaWxlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJCOTE4MDYyQjlDMDA0NkY2QTggLyogV0tP
cmlnaW5EYXRhTWFuYWdlci5jcHAgKi87IH07CiAJCTc1NTQyMkJEMTgwNjJCQjIwMDQ2RjZBOCAv
KiBXS09yaWdpbkRhdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc1NTQyMkI5MTgwNjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFN
YW5hZ2VyLmNwcCAqLzsgfTsKIAkJNzU1NDIyQzQxODA2MkJGOTAwNDZGNkE4IC8qIFdlYk9yaWdp
bkRhdGFNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzU1NDIyQkUxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHkuY3BwICovOyB9OwpAQCAtMjQ1MSw2ICsyNDUzLDggQEAKIAkJNkVFODQ5QzYxMzY4
RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3RvclByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0lu
c3BlY3RvclByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2
RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbG9yUGlj
a2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NTNFM0UwOTE4ODczOTRC
MDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2Vzc2lvblRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzUz
RTNFMEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlc3Npb25UcmFja2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzU1NDIyQjkxODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2luRGF0
YU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tPcmln
aW5EYXRhTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTQyMkJB
MTgwNjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLT3JpZ2luRGF0YU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzU1NDIyQkUxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zNzA2LDYgKzM3MTAsOCBAQAogCQkJCTMzMTUyOTc0MTMwRDBDQjIwMEVEMjQ4MyAvKiBTZWN1
cml0eU9yaWdpbkRhdGEuaCAqLywKIAkJCQk1MThEMkNDODEyRDUxREZCMDAzQkI5M0IgLyogU2Vz
c2lvblN0YXRlLmNwcCAqLywKIAkJCQk1MThEMkNDOTEyRDUxREZCMDAzQkI5M0IgLyogU2Vzc2lv
blN0YXRlLmggKi8sCisJCQkJNzUzRTNFMEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25UcmFj
a2VyLmNwcCAqLywKKwkJCQk3NTNFM0UwOTE4ODczOTRCMDAxODg0OTYgLyogU2Vzc2lvblRyYWNr
ZXIuaCAqLywKIAkJCQkxQTY0MjBFMjEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFw
LmNwcCAqLywKIAkJCQkxQTY0MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFw
LmggKi8sCiAJCQkJNTEyMTc0NUUxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNl
LmNwcCAqLywKQEAgLTY2MTYsNiArNjYyMiw3IEBACiAJCQkJQkM0MDc2MUMxMjRGRjAzNzAwNjhG
MjBBIC8qIFdLVVJMQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjBDMTI0RkYwMjcwMDY4
RjIwQSAvKiBXS1VSTFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjI5MTI0RkYw
NDAwMDY4RjIwQSAvKiBXS1VSTFJlcXVlc3ROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzUzRTNF
MEUxODg3Mzk4OTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzQwNzYwRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzU5Q0NENUExODA4RjYxNjAwNzhFOEE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjJCMTI0RkYwNDAwMDY4RjIwQSAvKiBX
S1VSTFJlc3BvbnNlTlMuaCBpbiBIZWFkZXJzICovLApAQCAtNzg3MCw2ICs3ODc3LDcgQEAKIAkJ
CQlCQ0QyNUYxODExRDZCREUxMDAxNjlCMEUgLyogV0tCdW5kbGVGcmFtZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzQ5ODYzMDEyNEQxOEMxMDBEODM0RTEgLyogV0tCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1MDFCRDFBMTJGMTI0MzQwMEU5RjI0OCAvKiBX
S0J1bmRsZUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NTNFM0UwRDE4ODczOTg1
MDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3MDQz
Q0QxMkY3NUVFMDAwNjQ3MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzRCRUZFMjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFu
ZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjA1MjgyMTFDOTQyODQwMDhGMzM3NSAvKiBX
S0J1bmRsZVBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4
IDJhOGY0MjcuLjgxOWY4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1
ZGUgIkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkFw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgiCkBAIC0yOTksOSArMzAwLDkgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFn
ZUdyb3VwLCBib28KICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBUaGlzIHRlc3Qtb25s
eSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgd2l0aCBOZXR3b3JrUHJvY2VzcywgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUyNzQ+LgogI2lmIFBMQVRGT1JNKE1BQykg
fHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAg
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KTsKKyAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CiAgICAg
ZWxzZQotICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpOworICAgICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24o
U2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpOwogI2VuZGlmCiAgICAgY29u
c3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3Vw
LT5pZGVudGlmaWVyKCkpLT5wYWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJh
dG9yIGl0ZXIgPSBwYWdlcy5iZWdpbigpOyBpdGVyICE9IHBhZ2VzLmVuZCgpOyArK2l0ZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNTVjMWU1MC4uYTdlYzc5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgorI2luY2x1ZGUgIlNl
c3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUltcGwuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgi
CkBAIC0xMzMsNyArMTM0LDcgQEAgU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24KICNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9N
KHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVw
bHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29y
a0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oc2Vzc2lvbi5pc1ByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKSA/IFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEIDog
U2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQsIGZpcnN0UGFydHksIHVybCksIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHko
cmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQpAQCAtMTQ2LDcgKzE0Nyw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3NpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6
c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbi5p
c1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcp
LCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6U2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSA/
IFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEIDogU2Vzc2lvblRyYWNrZXI6
OmRlZmF1bHRTZXNzaW9uSUQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaAppbmRleCAwMWI5OWQzLi4xZjYyNWIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC0zOSw5ICszOSw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMg
dm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgZGVz
dHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CiAgICAgc3RhdGljIHZvaWQg
c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk7CiAKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmlu
ZGV4IGY4MDg2N2MuLjExMWUwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbQpAQCAtMjQsNiArMjQsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29va2ll
TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC0zNCw1MiArMzYsMjYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5j
bHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
LQotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRl
U2Vzc2lvbigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBzZXNzaW9uOwotICAgIHJldHVybiBzZXNzaW9uOwotfQot
Ci1zdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gYmFzZTsKLSAgICByZXR1cm4gYmFzZTsKLX0KICAgICAKLXZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25J
ZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmIGJhc2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLQotICAgIGlkZW50aWZpZXJCYXNlKCkgPSBiYXNlOwotfQotCi12b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQordm9p
ZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0g
ICAgaWYgKHByaXZhdGVTZXNzaW9uKCkpCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBiYXNlOwotICAgIGlm
IChpZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKQorICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0
SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKICAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CiAgICAgZWxzZQotICAgICAgICBiYXNlID0gaWRl
bnRpZmllckJhc2UoKTsKLQotICAgIHByaXZhdGVTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSk7Ci19CisgICAgICAgIGJh
c2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsKIAotdm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHByaXZhdGVTZXNzaW9uKCkgPSBudWxs
cHRyOworICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkgPSBzdGQ6Om1vdmUo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGJhc2Ug
KyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCkBAIC04OSw4ICs2NSwxMSBAQCB2b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRz
KEhUVFBDb29raWVBYwogICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
Y29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuY29va2llU3RvcmFnZSgpKQogICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIAotICAgIGlmIChwcml2YXRlU2Vzc2lv
bigpKQotICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZVNlc3Npb24o
KS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOworICAgIGZvciAoY29uc3QgYXV0byYg
c2Vzc2lvblBhaXIgOiBTZXNzaW9uVHJhY2tlcjo6Z2V0U2Vzc2lvbk1hcCgpKSB7CisgICAgICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogdmFsdWUgPSBzZXNzaW9uUGFpci52YWx1ZS5nZXQoKTsK
KyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHZhbHVlLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CisgICAgfQogfQogICAg
IAogYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpuZWVkc1NpdGVTcGVjaWZpY1F1aXJr
cygpIGNvbnN0CkBAIC0xMjUsMTEgKzEwNCwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGlu
Z3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiAqcHJpdmF0ZVNl
c3Npb24oKTsKKyAgICAgICAgcmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9u
VHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KLSAgICAKIFdlYkZyYW1l
TG9hZGVyQ2xpZW50KiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojp3ZWJGcmFtZUxvYWRlckNs
aWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFmcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYWQxZDYxNC4uMjJiMDlkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJT
ZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAi
VXNlckRhdGEuaCIKICNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIgpAQCAt
MzM1LDcgKzMzNiw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29u
c3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgICAgIHNldFNob3Vs
ZFVzZUZvbnRTbW9vdGhpbmcodHJ1ZSk7CiAKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5F
VFdPUkspCi0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlk
ZW50aWZpZXIpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0
ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICBpZiAocGFyYW1l
dGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCkBAIC00NTIsMTcgKzQ1MywxNyBA
QCB2b2lkIFdlYlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVs
bEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKICAgICBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQg
PSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQordm9pZCBXZWJQcm9jZXNzOjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKICNpZiBQTEFURk9STShNQUMp
IHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQotICAgIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCk7CiAj
ZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCit2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2
NF90IHNlc3Npb25JRCkKIHsKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8
IFVTRShTT1VQKQotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCk7CisgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNl
c3Npb25JRCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAppbmRleCBmZDFlMmFhLi44YmI4NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaApAQCAtMTY1LDkgKzE2NSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2FjaGVN
b2RlbCh1aW50MzJfdCk7CiAKLSAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgCisgICAg
dm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7Cisg
ICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQp
OworCiAgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKTsKICAgICB2
b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFnZUlEKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDFjOGY4Y2Iu
LjJhMDc4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTUxLDkgKzUxLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3Jz
KQogI2VuZGlmCiAKLSAgICAvLyBQcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gaXMgcGVyIHByb2Nl
c3MuIEluZGl2aWR1YWwgcGFnZXMgb3IgcGFnZSBncm91cHMgbWF5IHVzZSB0aGUgcHJpdmF0ZSBz
ZXNzaW9uIG9yIHRoZSBkZWZhdWx0IG9uZSBhcyBhcHByb3ByaWF0ZS4KLSAgICBFbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKLSAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
CisgICAgLy8gTGVnYWN5IHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbiBpcyBwZXIgcHJvY2Vzcy4g
SW5kaXZpZHVhbCBwYWdlcyBvciBwYWdlIGdyb3VwcyBtYXkgdXNlIHRoZSBwcml2YXRlIHNlc3Np
b24gb3IgdGhlIGRlZmF1bHQgb25lIGFzIGFwcHJvcHJpYXRlLgorICAgIEVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQorICAgIERlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIAogICAgICMgUGx1Zy1pbnMuCiAgICAg
RGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1aW50MzJfdCBoYXNoLCBkb3VibGUgZXhw
aXJhdGlvblRpbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221493</attachid>
            <date>2014-01-17 14:19:14 -0800</date>
            <delta_ts>2014-01-17 15:54:22 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>sessionid.15.diff</filename>
            <type>text/plain</type>
            <size>54967</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzNWViNWQwLi4xODkwMjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTQtMDEtMTcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEZsZXNoIG91dCBzZXNzaW9uIEFQSXMgKHN0aWxsIG5vdCBlbmFibGVkIGF0IEFQSSBsZXZlbCku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY5MTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbik6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwLgorICAgICAgICAoV2Vi
S2l0OjpzZXNzaW9uTWFwKToKKyAgICAgICAgKFdlYktpdDo6aWRlbnRpZmllckJhc2UpOgorICAg
ICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6Z2V0U2Vzc2lvbk1hcCk6CisgICAgICAgIChX
ZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSk6CisgICAgICAgIChXZWJL
aXQ6OlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRy
YWNrZXI6OmRlc3Ryb3lTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6
OnNldElkZW50aWZpZXJCYXNlKToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaC4KKyAgICAg
ICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmlzRXBoZW1lcmFsSUQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUElTZXNzaW9uLmNwcDoKKyAgICAgICAgKEFQSTo6Z2VuZXJhdGVJRCk6CisgICAg
ICAgIChBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKToKKyAgICAgICAgKEFQSTo6U2Vzc2lv
bjo6bGVnYWN5UHJpdmF0ZVNlc3Npb24pOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjpTZXNzaW9u
KToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6U2Vzc2lv
bjo6aXNFcGhlbWVyYWwpOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjpnZXRJRCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSVNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldEFueVBhZ2VHcm91cE1pZ2h0
SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3Jl
YXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNlc3Npb25JRCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2Vi
UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxD
b250ZXh0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0
b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE0LTAxLTE3ICBNYW51ZWwgUmVnbyBDYXNh
c25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBDU1MgR3JpZCBM
YXlvdXQgYXMgZXhwZXJpbWVudGFsIGZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCBmNTk5NDQ2Li5iMWRkNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9CbG9iRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29r
aWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oPgpAQCAt
MTQ3LDEwICsxNDgsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0
U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2VyaWFsTG9hZGluZ0Vu
YWJsZWQgPSBlbmFibGVkOwogfQogCi1zdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9y
YWdlU2Vzc2lvbihib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCitzdGF0aWMgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7Ci0gICAg
aWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uKiBwcml2YXRlU2Vzc2lvbiA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7CisgICAgaWYgKFNlc3Npb25UcmFja2VyOjppc0VwaGVtZXJhbElEKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lv
biA9IFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkuZ2V0KCk7CiAgICAgICAgIGlm
IChwcml2YXRlU2Vzc2lvbikKICAgICAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb247CiAg
ICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgcmVxdWVz
dGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3b3JrUHJvY2VzcyB3YXMg
dG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgpAQCAtMTYwLDkgKzE2MSw5IEBAIHN0YXRpYyBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCkKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3Rh
cnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2Fk
SUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQodWludDY0X3Qgc2Vzc2lvbklELCB1aW50NjRf
dCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgLy8g
RklYTUU6IERvIHNvbWV0aGluZyB3aXRoIHRoZSBwcml2YXRlIGJyb3dzaW5nIGZsYWcuCisgICAg
Ly8gRklYTUU6IERvIHNvbWV0aGluZyB3aXRoIHRoZSBzZXNzaW9uIElELgogICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaGFyZWQoKS5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKGRvd25sb2Fk
SUQsIHJlcXVlc3QpOwogfQogCkBAIC0xODIsMzQgKzE4MywzNCBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWlu
dDY0X3QgbQogICAgIGxvYWRlci0+ZGlkQ29udmVydEhhbmRsZVRvRG93bmxvYWQoKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1
cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6
OmNvb2tpZXNGb3JET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZp
cnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2V0Q29va2llc0Zyb21ET00odWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsK
LSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJv
d3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNv
cmU6OnNldENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFy
dHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBib29sJiByZXN1bHQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZCh1aW50NjRfdCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGJvb2wmIHJlc3Vs
dCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzdG9yYWdlU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQg
PSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCBmaXJz
dFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUodWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFVSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdF
bmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCBmaXJzdFBh
cnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRS
YXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXModWludDY0X3Qgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYg
cmVzdWx0KQogewotICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNlc3Npb24ocHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKKyAgICBXZWJD
b3JlOjpnZXRSYXdDb29raWVzKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHks
IHVybCwgcmVzdWx0KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0
b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tpZU5hbWUpOwor
ICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCB1cmws
IGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IEJsb2JSZWdpc3RyYXRpb25EYXRh
JiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggOTQ1NzM3NS4uMzk4MWZhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC03NiwxNSArNzYsMTUgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHNlcnZlUGVu
ZGluZ1JlcXVlc3RzKHVpbnQzMl90IHJlc291cmNlTG9hZFByaW9yaXR5KTsKICAgICB2b2lkIHNl
dFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgc3RhcnREb3dubG9hZCh1aW50NjRfdCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2
NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IFN0cmluZyYgcmVzdWx0KTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNvb2tpZXNFbmFibGVkKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVz
dWx0KTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpOworICAgIHZvaWQgY29va2llc0ZvckRPTSh1aW50NjRfdCBzZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5n
JiByZXN1bHQpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00odWludDY0X3Qgc2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0VuYWJsZWQodWludDY0X3Qgc2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJv
b2wmIHJlc3VsdCk7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSh1aW50
NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyh1aW50
NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGRlbGV0ZUNv
b2tpZSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYpOwogICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMRnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNy
Y1VSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDdlODkwMzUuLmE0NTk3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0zMiwxNSArMzIsMTUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIAogICAgIFNldFNlcmlhbExvYWRp
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgLT4gKCkKIAotICAgIFN0YXJ0RG93bmxvYWQoYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCkKKyAgICBTdGFydERvd25sb2FkKHVpbnQ2NF90IHNlc3Npb25J
RCwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qp
CiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAot
ICAgIENvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpV
UkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpCi0gICAg
U2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpV
UkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZVN0cmluZykKLSAg
ICBDb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoYm9vbCBlbmFibGVkKQotICAgIENv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
V2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVz
dWx0KQotICAgIEdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJD
b3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgQ29va2ll
c0ZvckRPTSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJD
b3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKKyAgICBTZXRDb29raWVzRnJvbURPTSh1
aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwg
dXJsLCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNFbmFibGVkKHVpbnQ2NF90IHNl
c3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChi
b29sIGVuYWJsZWQpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUodWludDY0X3Qg
c2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4g
KFN0cmluZyByZXN1bHQpCisgICAgR2V0UmF3Q29va2llcyh1aW50NjRfdCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4gY29va2llcykKKyAgICBEZWxldGVDb29raWUodWludDY0X3Qgc2Vzc2lvbklE
LCBXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAogICAgIFJlZ2lzdGVyQmxv
YlVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OkJsb2JSZWdpc3RyYXRpb25EYXRhIGRhdGEp
CiAgICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpV
Ukwgc3JjVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IGU1MDAwZjUuLjQzYzQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgor
I2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyLmgiCkBAIC0xNTcsMTEgKzE1OCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogICAg
IHNldENhY2hlTW9kZWwoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBhcmFtZXRlcnMuY2FjaGVNb2Rl
bCkpOwogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZp
ZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CisgICAgU2Vzc2lv
blRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRl
bnRpZmllcik7CiAjZW5kaWYKIAogICAgIGlmIChwYXJhbWV0ZXJzLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpCi0gICAgICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7CisgICAgICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKTsKIAogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lv
bikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCk7CkBAIC0yMTIsMTQgKzIxMywxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsK
LSAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpOworICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBTZXNzaW9u
VHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IDU0ODRkNDkuLmFkNWE4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTA0LDggKzEwNCw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXR3
b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAg
IHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKLSAgICB2b2lkIGVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7CisgICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVp
bnQ2NF90IHNlc3Npb25JRCk7CisgICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bih1aW50NjRfdCBzZXNzaW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90
IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQg
Y2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRDYWNoZU1v
ZGVsKHVpbnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNmFkNmMyNS4uYzRhNzE0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKFZl
Y3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKICNlbmRpZgogCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpCi0gICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQorICAgIEVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQorICAgIERlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIAogICAgIERvd25s
b2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0LmgKaW5kZXggZWYyNWYzMDEuLjk2YWQ3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaApAQCAtMzksMTEg
KzM5LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dCgpOwogCi0gICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKLQotICAgIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24qIHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9t
YWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggYTM4MjllOC4uOTdjZmQzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtMjYsMjIgKzI2LDE5IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKKyNpbXBvcnQgIlNl
c3Npb25UcmFja2VyLmgiCiAjaW1wb3J0ICJXZWJFcnJvcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1w
b3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24oKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBz
ZXNzaW9uOwotICAgIHJldHVybiBzZXNzaW9uOwotfQogCiBSZW1vdGVOZXR3b3JraW5nQ29udGV4
dDo6flJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KCkKIHsKQEAgLTY1LDcgKzYyLDcgQEAgYm9vbCBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6bG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgp
IGNvbnN0CiBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgaWYgKG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCkgewotICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uID0gcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKS5nZXQoKTsKKyAgICAgICAgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Np
b25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKS5nZXQoKTsKICAgICAgICAgaWYgKHBy
aXZhdGVTZXNzaW9uKQogICAgICAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbjsKICAgICAg
ICAgLy8gU29tZSByZXF1ZXN0cyB3aXRoIHByaXZhdGUgYnJvd3NpbmcgbW9kZSByZXF1ZXN0ZWQg
bWF5IHN0aWxsIGJlIGNvbWluZyBzaG9ydGx5IGFmdGVyIE5ldHdvcmtQcm9jZXNzIHdhcyB0b2xk
IHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24uCkBAIC03NiwxMSArNzMsNiBAQCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCk7CiB9CiAKLU5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbigpLmdldCgpOwotfQotCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdAogewog
ICAgIHJldHVybiBuaWw7CkBAIC05MSwzMiArODMsMTMgQEAgUmVzb3VyY2VFcnJvciBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWUKICAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLXN0YXRp
YyBTdHJpbmcmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKQot
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gYmFzZTsKLSAgICByZXR1cm4gYmFzZTsKLX0KLQotdm9pZCBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAg
ICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlm
aWVyOwotfQotCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKLXsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
KSkKKyAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQVNTRVJUKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVu
dGlmaWVyID0gU3RyaW5nKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKLQotICAgIHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1vdmUoTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uSWRlbnRpZmllckJhc2UoKSkpOwotfQotCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CisgICAgQVNTRVJUKCFTZXNzaW9uVHJhY2tl
cjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSk7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNl
c3Npb24oc2Vzc2lvbklEKSA9IHN0ZDo6bW92ZShOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNl
KCkgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmNlYzNhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKKworI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIEhh
c2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYg
c2Vzc2lvbk1hcCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPj4+IG1hcDsKKyAgICByZXR1cm4gbWFwLmdldCgpOworfQorCitzdGF0
aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJhc2U7CisgICAgcmV0dXJu
IGJhc2U7Cit9CisKK2NvbnN0IEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+PiYgU2Vzc2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXAoKQorewor
ICAgIHJldHVybiBzZXNzaW9uTWFwKCk7Cit9CisKK2NvbnN0IFN0cmluZyYgU2Vzc2lvblRyYWNr
ZXI6OmdldElkZW50aWZpZXJCYXNlKCkKK3sKKyAgICByZXR1cm4gaWRlbnRpZmllckJhc2UoKTsK
K30KKworc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIFNlc3Npb25UcmFj
a2VyOjpzZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKK3sKKyAgICByZXR1cm4gc2Vzc2lvbk1h
cCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKK30KKwordm9pZCBT
ZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Np
b25JRCk7Cit9CisKK3ZvaWQgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgaWRlbnRpZmllckJhc2UoKSA9IGlkZW50aWZpZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41MmM2ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2Vzc2lvblRyYWNrZXJfaAorI2RlZmluZSBTZXNzaW9uVHJhY2tlcl9oCisK
KyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2Vzc2lvblRy
YWNrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNlc3Npb25UcmFja2VyKTsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZGVmYXVsdFNlc3Npb25JRCA9IDE7CisgICAg
c3RhdGljIGNvbnN0IHVpbnQ2NF90IGxlZ2FjeVByaXZhdGVTZXNzaW9uSUQgPSAyOworICAgIHN0
YXRpYyBib29sIGlzRXBoZW1lcmFsSUQodWludDY0X3Qgc2Vzc2lvbklEKSB7IHJldHVybiBzZXNz
aW9uSUQgIT0gU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQ7IH0KKyAgICBzdGF0aWMg
Y29uc3QgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4+JiBnZXRTZXNzaW9uTWFwKCk7CisgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyYgZ2V0SWRlbnRpZmllckJhc2UoKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsK
KyAgICBzdGF0aWMgdm9pZCBkZXN0cm95U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAg
IHN0YXRpYyB2b2lkIHNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBTZXNzaW9uVHJhY2tlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5jcHAKaW5kZXggNDIzMTJiYi4uYzJhMjYxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmNwcApAQCAtMjYsMjMgKzI2LDYzIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJU2Vzc2lvbi5oIgogCisjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KKwogbmFtZXNwYWNlIEFQSSB7CiAKK3N0YXRpYyB1aW50NjRf
dCBnZW5lcmF0ZUlEKGJvb2wgaXNFcGhlbWVyYWwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVTZXNzaW9uSUQgPSBXZWJLaXQ6OlNl
c3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEOworICAgIEFTU0VSVChpc0VwaGVt
ZXJhbCk7CisgICAgcmV0dXJuICsrdW5pcXVlU2Vzc2lvbklEOworfQorCitTZXNzaW9uJiBTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIHN0YXRpYyBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IG5ldyBTZXNzaW9uKGZhbHNlLCBX
ZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpkZWZhdWx0U2Vzc2lvbklEKTsKKyAgICByZXR1cm4gKmRl
ZmF1bHRTZXNzaW9uOworfQorCitTZXNzaW9uJiBTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBTZXNzaW9u
KiBsZWdhY3lQcml2YXRlU2Vzc2lvbiA9IG5ldyBTZXNzaW9uKHRydWUsIFdlYktpdDo6U2Vzc2lv
blRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpOworICAgIHJldHVybiAqbGVnYWN5UHJp
dmF0ZVNlc3Npb247Cit9CisKIFNlc3Npb246OlNlc3Npb24oYm9vbCBpc0VwaGVtZXJhbCkKICAg
ICA6IG1faXNFcGhlbWVyYWwoaXNFcGhlbWVyYWwpCisgICAgLCBtX3Nlc3Npb25JRChnZW5lcmF0
ZUlEKGlzRXBoZW1lcmFsKSkKK3sKK30KKworU2Vzc2lvbjo6U2Vzc2lvbihib29sIGlzRXBoZW1l
cmFsLCB1aW50NjRfdCBzZXNzaW9uSUQpCisgICAgOiBtX2lzRXBoZW1lcmFsKGlzRXBoZW1lcmFs
KQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogfQogCiBQYXNzUmVmUHRyPFNlc3Np
b24+IFNlc3Npb246OmNyZWF0ZShib29sIGlzRXBoZW1lcmFsKQogeworICAgIC8vIEZJWE1FOiBz
dXBwb3J0IGNyZWF0aW9uIG9mIG5vbi1kZWZhdWx0LCBub24tZXBoZW1lcmFsIHNlc3Npb25zCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXNzaW9uKGlzRXBoZW1lcmFsKSk7CiB9CiAKLWJvb2wg
U2Vzc2lvbjo6aXNFcGhlbWVyYWwoKQorYm9vbCBTZXNzaW9uOjppc0VwaGVtZXJhbCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1faXNFcGhlbWVyYWw7CiB9CiAKK3VpbnQ2NF90IFNlc3Npb246Omdl
dElEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKIFNlc3Npb246On5T
ZXNzaW9uKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oCmluZGV4IDNm
YjVmNjcuLmRmNzE2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaApAQCAt
MjcsNiArMjcsNyBAQAogI2RlZmluZSBBUElTZXNzaW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIEFQSSB7CkBAIC0zNCwxMiArMzUsMTcgQEAgbmFtZXNwYWNlIEFQ
SSB7CiBjbGFzcyBTZXNzaW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6U2Vzc2lvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlc3Npb24+
IGNyZWF0ZShib29sIGlzRXBoZW1lcmFsKTsKLSAgICBib29sIGlzRXBoZW1lcmFsKCk7CisgICAg
c3RhdGljIFNlc3Npb24mIGRlZmF1bHRTZXNzaW9uKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGxl
Z2FjeVByaXZhdGVTZXNzaW9uKCk7CisgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0OworICAg
IHVpbnQ2NF90IGdldElEKCkgY29uc3Q7CiAgICAgdmlydHVhbCB+U2Vzc2lvbigpOwogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFNlc3Npb24oYm9vbCBpc0VwaGVtZXJhbCk7CisgICAgU2Vzc2lv
bihib29sIGlzRXBoZW1lcmFsLCB1aW50NjRfdCBzZXNzaW9uSUQpOwogICAgIGJvb2wgbV9pc0Vw
aGVtZXJhbDsKKyAgICB1aW50NjRfdCBtX3Nlc3Npb25JRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGUxMDUxNWIu
LjU0ZWZiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTXV0YWJsZURpY3Rp
b25hcnkuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2Vzc2lv
blRyYWNrZXIuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRD
aGVja2VyLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgpAQCAtNDY3LDE2ICs0Njgs
MTYgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJv
d3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3cKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CiAg
ICAgICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICAgICAgbmV0d29ya1By
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKSwgMCk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNz
aW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCksIDApOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7CisgICAgICAgICAgICBuZXR3
b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQp
LCAwKTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICAgICBp
ZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpOworICAg
ICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQp
KTsKICAgICBlbHNlCi0gICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7CisgICAgICAgIHNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpKTsKIH0KIAogdm9p
ZCAoKnNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjaykoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUpOwpA
QCAtNTk3LDcgKzU5OCw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViQ29udGV4dDo6Y3JlYXRlTmV3
V2ViUHJvY2VzcygpCiAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6SW5p
dGlhbGl6ZVdlYlByb2Nlc3MocGFyYW1ldGVycywgV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2Rl
cihpbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEuZ2V0KCksICpwcm9jZXNzKSks
IDApOwogCiAgICAgaWYgKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlR3JvdXBzQXJlVXNpbmdQcml2
YXRlQnJvd3NpbmcoKSkKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAwKTsKKyAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihT
ZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCksIDApOwogCiAgICAgbV9wcm9j
ZXNzZXMuYXBwZW5kKHByb2Nlc3MpOwogCkBAIC03NDAsNyArNzQxLDcgQEAgV2ViUHJvY2Vzc1By
b3h5JiBXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3Vu
dExpbWl0KCkKICAgICByZXR1cm4gKnJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJv
eHk+IFdlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2Vi
UGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCitQYXNzUmVm
UHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9u
LCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQogewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJv
eHk+IHByb2Nlc3M7CiAgICAgaWYgKG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJl
ZFNlY29uZGFyeVByb2Nlc3MpIHsKQEAgLTc1Niw3ICs3NTcsMTIgQEAgUGFzc1JlZlB0cjxXZWJQ
YWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUGEKICAgICAgICAgICAgIHByb2Nlc3MgPSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3Bl
Y3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOwogICAgIH0KIAotICAgIHJldHVybiBwcm9jZXNzLT5j
cmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHBhZ2VHcm91cCA/ICpwYWdlR3JvdXAgOiBtX2RlZmF1
bHRQYWdlR3JvdXAuZ2V0KCkpOworICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBh
Z2VDbGllbnQsIHBhZ2VHcm91cCA/ICpwYWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0
KCksIHNlc3Npb24pOworfQorCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6
Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VH
cm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlV2Vi
UGFnZShwYWdlQ2xpZW50LCBwYWdlR3JvdXAsIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS0+cHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bigpIDogQVBJOjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLCByZWxhdGVkUGFnZSk7CiB9CiAK
IERvd25sb2FkUHJveHkqIFdlYkNvbnRleHQ6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlh
dGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IGI5OGM0ODYuLmY2YjlmM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHB1YmxpYzoKIAogICAg
IFN0b3JhZ2VNYW5hZ2VyJiBzdG9yYWdlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuICptX3N0b3Jh
Z2VNYW5hZ2VyOyB9CiAKKyAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwKiwgQVBJOjpTZXNzaW9uJiwgV2ViUGFnZVByb3h5
KiByZWxhdGVkUGFnZSA9IDApOwogICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVX
ZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlR3JvdXAqLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQ
YWdlID0gMCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGVQYXRoOyB9CkBAIC0yOTIsNiArMjkzLDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIHdpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7CiAg
ICAgc3RhdGljIHZvaWQgd2lsbFN0b3BVc2luZ1ByaXZhdGVCcm93c2luZygpOwogCisgICAgc3Rh
dGljIGJvb2wgaXNFcGhlbWVyYWxTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CisKICNpZiBV
U0UoU09VUCkKICAgICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhib29sKTsKICAgICBib29sIGln
bm9yZVRMU0Vycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlVExTRXJyb3JzOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc0NGMxYzUuLjQxYmI3
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMjgs
MTIgKzIyOCwxMiBAQCBzdGF0aWMgY29uc3QgY2hhciogd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJp
bmcoV2ViRXZlbnQ6OlR5cGUgdHlwZSkKIH0KICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAKLVBh
c3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdy
b3VwLCB1aW50NjRfdCBwYWdlSUQpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVBy
b3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCB1aW50
NjRfdCBwYWdlSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQYWdlUHJveHkocGFn
ZUNsaWVudCwgcHJvY2VzcywgcGFnZUdyb3VwLCBwYWdlSUQpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlR3JvdXAsIHNlc3Np
b24sIHBhZ2VJRCkpOwogfQogCi1XZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFn
ZUdyb3VwLCB1aW50NjRfdCBwYWdlSUQpCitXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91
cCYgcGFnZUdyb3VwLCBBUEk6OlNlc3Npb24mIHNlc3Npb24sIHVpbnQ2NF90IHBhZ2VJRCkKICAg
ICA6IG1fcGFnZUNsaWVudChwYWdlQ2xpZW50KQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAg
ICAgLCBtX3BhZ2VHcm91cChwYWdlR3JvdXApCkBAIC0yNzksNiArMjc5LDcgQEAgV2ViUGFnZVBy
b3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzLCBXZWIKICAgICAsIG1fbmVlZFRvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAg
ICAgLCBtX3BhZ2VJRChwYWdlSUQpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKICAgICAsIG1f
aXNQYWdlU3VzcGVuZGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1faXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQoVGV4dENoZWNrZXI6OmlzU21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZGIwMGFl
NC4uODNhMmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQYWdlUHJveHlfaAogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQVBJU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkF1dG9Db3JyZWN0aW9u
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRy
b2xsZXJBY3Rpb24uaCIKQEAgLTc0LDYgKzc1LDcgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzI3
LDEwICszMjksMTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIgewogcHVibGljOgogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVh
dGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFn
ZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYs
IHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKICAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIHVpbnQ2NF90
IHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi0+Z2V0SUQoKTsgfQogCiAgICAg
V2ViRnJhbWVQcm94eSogbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWUuZ2V0
KCk7IH0KICAgICBXZWJGcmFtZVByb3h5KiBmb2N1c2VkRnJhbWUoKSBjb25zdCB7IHJldHVybiBt
X2ZvY3VzZWRGcmFtZS5nZXQoKTsgfQpAQCAtODU1LDcgKzg1OCw3IEBAIHB1YmxpYzoKICAgICBX
ZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgeyBy
ZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KICAgICAgICAgCiBwcml2YXRlOgotICAg
IFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3Vw
JiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlBy
b2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYsIHVpbnQ2NF90IHBhZ2VJ
RCk7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZvaWQgdXBkYXRlVmll
d1N0YXRlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6
OlZpZXdTdGF0ZTo6QWxsRmxhZ3MpOwpAQCAtMTMxMiw2ICsxMzE1LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgUmVmPEFQSTo6U2Vzc2lvbj4gbV9z
ZXNzaW9uOwogCiAgICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxMGYxYWIwLi40NzY2YjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY3
LDEwICsxNjcsMTAgQEAgV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UodWlu
dDY0X3QgcGFnZUlEKQogICAgIHJldHVybiBnbG9iYWxQYWdlTWFwKCkuZ2V0KHBhZ2VJRCk7CiB9
CiAKLVBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBh
Z2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXApCitQYXNz
UmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCBBUEk6OlNlc3Npb24m
IHNlc3Npb24pCiB7CiAgICAgdWludDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAg
ICBSZWZQdHI8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFn
ZUNsaWVudCwgKnRoaXMsIHBhZ2VHcm91cCwgcGFnZUlEKTsKKyAgICBSZWZQdHI8V2ViUGFnZVBy
b3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBh
Z2VHcm91cCwgc2Vzc2lvbiwgcGFnZUlEKTsKICAgICBtX3BhZ2VNYXAuc2V0KHBhZ2VJRCwgd2Vi
UGFnZS5nZXQoKSk7CiAgICAgZ2xvYmFsUGFnZU1hcCgpLnNldChwYWdlSUQsIHdlYlBhZ2UuZ2V0
KCkpOwogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCBhM2M5MjljLi5jNTQ1MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYlBy
b2Nlc3NQcm94eV9oCiAjZGVmaW5lIFdlYlByb2Nlc3NQcm94eV9oCiAKKyNpbmNsdWRlICJBUElT
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgi
CkBAIC03Nyw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb250ZXh0JiBjb250ZXh0KCkgeyBy
ZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKICAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0
ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFdlYlBhZ2VHcm91cCYpOworICAgIFBhc3NSZWZQdHI8V2Vi
UGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlR3JvdXAmLCBBUEk6
OlNlc3Npb24mKTsKICAgICB2b2lkIGFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkqLCB1
aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQp
OwogICAgIFZlY3RvcjxXZWJQYWdlUHJveHkqPiBwYWdlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNiNzI3NGUu
LjI4OGFlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTc4NSw2ICs3ODUsOCBAQAogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0
ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0
b3JQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzI4RTg2RjExNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZFRjE3
OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLzsgfTsKIAkJNzI4RTg2RjIx
Nzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8q
IFdlYkNvbG9yUGlja2VyTWFjLm1tICovOyB9OworCQk3NTNFM0UwRDE4ODczOTg1MDAxODg0OTYg
LyogU2Vzc2lvblRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzUzRTNFMEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNw
cCAqLzsgfTsKKwkJNzUzRTNFMEUxODg3Mzk4OTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTNFM0UwOTE4
ODczOTRCMDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCAqLzsgfTsKIAkJNzU1NDIyQkQxODA2
MkJCMjAwNDZGNkE4IC8qIFdLT3JpZ2luRGF0YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1NDIyQjkxODA2MkI5QzAwNDZGNkE4IC8q
IFdLT3JpZ2luRGF0YU1hbmFnZXIuY3BwICovOyB9OwogCQk3NTU0MjJDNDE4MDYyQkY5MDA0NkY2
QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJCRTE4MDYyQkU0MDA0NkY2QTggLyogV2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgKi87IH07CiAJCTc1NTQyMkNCMTgwNjUwMDIwMDQ2
RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJDNjE4MDY0RkZDMDA0NkY2QTggLyogV2ViT3Jp
Z2luRGF0YU1hbmFnZXIuY3BwICovOyB9OwpAQCAtMjQ2NCw2ICsyNDY2LDggQEAKIAkJNkVFODQ5
QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3RvclByaXZhdGVNYWMuaDsgcGF0aCA9IG1h
Yy9XS0luc3BlY3RvclByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBp
Y2tlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNv
bG9yUGlja2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NTNFM0UwOTE4
ODczOTRCMDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2Vzc2lvblRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzUzRTNFMEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlc3Npb25UcmFja2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1NDIyQjkxODA2MkI5QzAwNDZGNkE4IC8qIFdLT3Jp
Z2luRGF0YU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tPcmlnaW5EYXRhTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1
NTQyMkJBMTgwNjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLT3JpZ2luRGF0YU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1NDIyQkUxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdp
bkRhdGFNYW5hZ2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zNzI0LDYgKzM3MjgsOCBAQAogCQkJCTMzMTUyOTc0MTMwRDBDQjIwMEVEMjQ4MyAv
KiBTZWN1cml0eU9yaWdpbkRhdGEuaCAqLywKIAkJCQk1MThEMkNDODEyRDUxREZCMDAzQkI5M0Ig
LyogU2Vzc2lvblN0YXRlLmNwcCAqLywKIAkJCQk1MThEMkNDOTEyRDUxREZCMDAzQkI5M0IgLyog
U2Vzc2lvblN0YXRlLmggKi8sCisJCQkJNzUzRTNFMEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Np
b25UcmFja2VyLmNwcCAqLywKKwkJCQk3NTNFM0UwOTE4ODczOTRCMDAxODg0OTYgLyogU2Vzc2lv
blRyYWNrZXIuaCAqLywKIAkJCQkxQTY0MjBFMjEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxl
Qml0bWFwLmNwcCAqLywKIAkJCQkxQTY0MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxl
Qml0bWFwLmggKi8sCiAJCQkJNTEyMTc0NUUxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJl
c291cmNlLmNwcCAqLywKQEAgLTY2NDUsNiArNjY1MSw3IEBACiAJCQkJQkM0MDc2MUMxMjRGRjAz
NzAwNjhGMjBBIC8qIFdLVVJMQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjBDMTI0RkYw
MjcwMDY4RjIwQSAvKiBXS1VSTFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjI5
MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlcXVlc3ROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzUzRTNFMEUxODg3Mzk4OTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzQwNzYwRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzU5Q0NENUExODA4RjYxNjAwNzhFOEE4IC8qIFdlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjJCMTI0RkYwNDAwMDY4RjIw
QSAvKiBXS1VSTFJlc3BvbnNlTlMuaCBpbiBIZWFkZXJzICovLApAQCAtNzkwMyw2ICs3OTEwLDcg
QEAKIAkJCQlCQ0QyNUYxODExRDZCREUxMDAxNjlCMEUgLyogV0tCdW5kbGVGcmFtZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzQ5ODYzMDEyNEQxOEMxMDBEODM0RTEgLyogV0tCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1MDFCRDFBMTJGMTI0MzQwMEU5RjI0
OCAvKiBXS0J1bmRsZUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NTNFM0UwRDE4
ODczOTg1MDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM3MDQzQ0QxMkY3NUVFMDAwNjQ3MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzRCRUZFMjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVO
b2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjA1MjgyMTFDOTQyODQwMDhGMzM3
NSAvKiBXS0J1bmRsZVBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CmluZGV4IDE2NTBiNTUuLmRiZjBjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgog
I2luY2x1ZGUgIkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgiCkBAIC0yOTksOSArMzAwLDkgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94
eSogcGFnZUdyb3VwLCBib28KICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBUaGlzIHRl
c3Qtb25seSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgd2l0aCBOZXR3b3JrUHJvY2VzcywgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUyNzQ+LgogI2lmIFBMQVRGT1JN
KE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCiAgICAgaWYgKGVuYWJsZWQpCi0g
ICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKTsKKyAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7
CiAgICAgZWxzZQotICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNl
c3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpOwogI2VuZGlmCiAg
ICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFn
ZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5wYWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46
Oml0ZXJhdG9yIGl0ZXIgPSBwYWdlcy5iZWdpbigpOyBpdGVyICE9IHBhZ2VzLmVuZCgpOyArK2l0
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNTVjMWU1MC4uYTdl
Yzc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgorI2luY2x1
ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUltcGwuaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyLmgiCkBAIC0xMzMsNyArMTM0LDcgQEAgU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24KICNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAo
IVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVz
Rm9yRE9NKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVy
bCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRP
TTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oc2Vzc2lvbi5pc1ByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKSA/IFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEIDogU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQsIGZpcnN0UGFydHksIHVybCks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6
UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTQ2LDcgKzE0Nyw3IEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3NpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJv
Y2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oc2Vz
c2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVT
dHJpbmcpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKSA/IFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEIDogU2Vzc2lvblRy
YWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwg
MCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAppbmRleCA5NTk2YzU3Li45YmE1YjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC0zOSw5ICszOSw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBz
dGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgc3RhdGljIHZv
aWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBzdGF0aWMgdm9pZCBlbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CiAgICAgc3RhdGlj
IHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSk7CiAKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGll
bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCmluZGV4IGY4MDg2N2MuLjExMWUwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtMjQsNiArMjQsOCBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiV2Vi
Q29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC0zNCw1MiArMzYsMjYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+
CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKLQotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBw
cml2YXRlU2Vzc2lvbigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBzZXNzaW9uOwotICAgIHJldHVybiBzZXNzaW9u
OwotfQotCi1zdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSgpCi17Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gYmFzZTsKLSAgICByZXR1cm4gYmFzZTsKLX0KICAgICAKLXZv
aWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmIGJhc2UpCi17Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLQotICAgIGlkZW50aWZpZXJCYXNlKCkgPSBiYXNlOwotfQotCi12b2lk
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KQordm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotCi0gICAgaWYgKHByaXZhdGVTZXNzaW9uKCkpCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpz
ZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBiYXNlOwot
ICAgIGlmIChpZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKQorICAgIGlmIChTZXNzaW9uVHJhY2tl
cjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKICAgICAgICAgYmFzZSA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CiAgICAgZWxzZQotICAgICAgICBiYXNl
ID0gaWRlbnRpZmllckJhc2UoKTsKLQotICAgIHByaXZhdGVTZXNzaW9uKCkgPSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSk7Ci19CisgICAg
ICAgIGJhc2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsKIAotdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
Ci17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHByaXZhdGVTZXNzaW9uKCkg
PSBudWxscHRyOworICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkgPSBzdGQ6
Om1vdmUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KGJhc2UgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKSk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4
dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCkBAIC04OSw4ICs2NSwxMSBAQCB2b2lk
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENv
bnRleHRzKEhUVFBDb29raWVBYwogICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQogICAgICAgICBXS1NldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIAotICAgIGlmIChwcml2YXRl
U2Vzc2lvbigpKQotICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZVNl
c3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOworICAgIGZvciAoY29uc3Qg
YXV0byYgc2Vzc2lvblBhaXIgOiBTZXNzaW9uVHJhY2tlcjo6Z2V0U2Vzc2lvbk1hcCgpKSB7Cisg
ICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogdmFsdWUgPSBzZXNzaW9uUGFpci52YWx1ZS5n
ZXQoKTsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgV0tTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHZhbHVlLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CisgICAgfQog
fQogICAgIAogYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpuZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcygpIGNvbnN0CkBAIC0xMjUsMTEgKzEwNCwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+
c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiAqcHJp
dmF0ZVNlc3Npb24oKTsKKyAgICAgICAgcmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihT
ZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CiAKICAgICByZXR1cm4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KLSAgICAKIFdl
YkZyYW1lTG9hZGVyQ2xpZW50KiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojp3ZWJGcmFtZUxv
YWRlckNsaWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFmcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjkxYWI0YS4uMTIyYzQ3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKKyNpbmNs
dWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5j
bHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5o
IgpAQCAtMzM1LDcgKzMzNiw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nl
c3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgICAgIHNl
dFNob3VsZFVzZUZvbnRTbW9vdGhpbmcodHJ1ZSk7CiAKICNpZiBQTEFURk9STShNQUMpIHx8IFVT
RShDRk5FVFdPUkspCi0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1
bmRsZUlkZW50aWZpZXIpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShw
YXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICBpZiAo
cGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCkBAIC00NTIsMTcgKzQ1
MywxNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJv
b2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKICAgICBtX2Z1bGxLZXlib2FyZEFjY2Vzc0Vu
YWJsZWQgPSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogfQogCi12b2lkIFdlYlByb2Nlc3M6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQordm9pZCBXZWJQcm9jZXNzOjplbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKICNpZiBQTEFURk9S
TShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQotICAgIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25J
RCk7CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpCit2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdP
UkspIHx8IFVTRShTT1VQKQotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNz
aW9uKHNlc3Npb25JRCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAppbmRleCBjZDk5YmExLi4yYTg2ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaApAQCAtMTY1LDkgKzE2NSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAKLSAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAg
CisgICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25J
RCk7CisgICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNz
aW9uSUQpOworCiAgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKTsK
ICAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFnZUlEKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDFj
OGY4Y2IuLjJhMDc4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTUxLDkgKzUxLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExT
RXJyb3JzKQogI2VuZGlmCiAKLSAgICAvLyBQcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gaXMgcGVy
IHByb2Nlc3MuIEluZGl2aWR1YWwgcGFnZXMgb3IgcGFnZSBncm91cHMgbWF5IHVzZSB0aGUgcHJp
dmF0ZSBzZXNzaW9uIG9yIHRoZSBkZWZhdWx0IG9uZSBhcyBhcHByb3ByaWF0ZS4KLSAgICBFbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKLSAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpCisgICAgLy8gTGVnYWN5IHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbiBpcyBwZXIgcHJv
Y2Vzcy4gSW5kaXZpZHVhbCBwYWdlcyBvciBwYWdlIGdyb3VwcyBtYXkgdXNlIHRoZSBwcml2YXRl
IHNlc3Npb24gb3IgdGhlIGRlZmF1bHQgb25lIGFzIGFwcHJvcHJpYXRlLgorICAgIEVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQorICAgIERlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIAogICAgICMgUGx1Zy1pbnMu
CiAgICAgRGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1aW50MzJfdCBoYXNoLCBkb3Vi
bGUgZXhwaXJhdGlvblRpbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221502</attachid>
            <date>2014-01-17 15:54:22 -0800</date>
            <delta_ts>2014-01-17 16:49:51 -0800</delta_ts>
            <desc>address comments</desc>
            <filename>sessionid.16.diff</filename>
            <type>text/plain</type>
            <size>61107</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjExNGRmZi4uNDk5YmM3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTIwNCw2ICsyMDQsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L1ByaW50SW5mby5jcHAKICAgICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAogICAgIFNo
YXJlZC9TZXNzaW9uU3RhdGUuY3BwCisgICAgU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAogICAg
IFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCiAgICAgU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAogICAgIFNoYXJlZC9TdGF0aXN0aWNzRGF0YS5jcHAKQEAgLTI5Myw2ICsyOTQsNyBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5m
b3JtYXRpb24uY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCisgICAg
VUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAK
ICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvRmluZElu
ZGljYXRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzNWViNWQwLi4zMWVlNTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTAgQEAKKzIwMTQtMDEtMTcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29t
PgorCisgICAgICAgIEZsZXNoIG91dCBzZXNzaW9uIEFQSXMgKHN0aWxsIG5vdCBlbmFibGVkIGF0
IEFQSSBsZXZlbCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjY5MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zy
b21ET00pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vz
c2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1Jl
bW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAg
KiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJU2Vzc2lvbi5jcHAuCisgICAgICAgIChXZWJLaXQ6OnNlc3Npb25NYXApOgor
ICAgICAgICAoV2ViS2l0OjppZGVudGlmaWVyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlNlc3Np
b25UcmFja2VyOjpnZXRTZXNzaW9uTWFwKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNr
ZXI6OmdldElkZW50aWZpZXJCYXNlKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6
OnNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Np
b24pOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2Up
OgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oLgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9u
VHJhY2tlcjo6aXNFcGhlbWVyYWxJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSVNlc3Npb24u
Y3BwOgorICAgICAgICAoQVBJOjpnZW5lcmF0ZUlEKToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6
ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbik6CisgICAgICAgIChBUEk6OlNlc3Npb246OlNlc3Npb24pOgorICAgICAgICAoQVBJOjpT
ZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjppc0VwaGVtZXJhbCk6Cisg
ICAgICAgIChBUEk6OlNlc3Npb246OmdldElEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJU2Vz
c2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vz
c2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpsZWdhY3lTZXNz
aW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNG
b3JET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tp
ZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorCiAyMDE0LTAxLTE3ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIEFkZCBDU1MgR3JpZCBMYXlvdXQgYXMgZXhwZXJpbWVudGFsIGZl
YXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDk5YzExOGYuLjhhMzBiNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDQyLDYgKzQ0Miw4IEBAIHdlYmtp
dDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0
YS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TZXNzaW9uVHJhY2tlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJh
Y2tlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RhdGlzdGljc0RhdGEuaCBcCiAJU291cmNlL1dlYktpdDIv
U2hhcmVkL3NvdXAvU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBmNTk5NDQ2Li5iMWRkNTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlc3Np
b25UcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9h
ZGVyT3B0aW9ucy5oPgpAQCAtMTQ3LDEwICsxNDgsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAg
IG1fc2VyaWFsTG9hZGluZ0VuYWJsZWQgPSBlbmFibGVkOwogfQogCi1zdGF0aWMgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbihib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
CitzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbih1aW50NjRfdCBz
ZXNzaW9uSUQpCiB7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Ojpwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgaWYgKFNlc3Npb25UcmFja2Vy
Ojppc0VwaGVtZXJhbElEKHNlc3Npb25JRCkpIHsKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uKiBwcml2YXRlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCku
Z2V0KCk7CiAgICAgICAgIGlmIChwcml2YXRlU2Vzc2lvbikKICAgICAgICAgICAgIHJldHVybiAq
cHJpdmF0ZVNlc3Npb247CiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJy
b3dzaW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBO
ZXR3b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgpAQCAtMTYwLDkg
KzE2MSw5IEBAIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQodWludDY0X3Qg
c2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0gICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyB3aXRoIHRoZSBwcml2YXRlIGJy
b3dzaW5nIGZsYWcuCisgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyB3aXRoIHRoZSBzZXNzaW9u
IElELgogICAgIE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5kb3dubG9hZE1hbmFnZXIoKS5zdGFy
dERvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QpOwogfQogCkBAIC0xODIsMzQgKzE4MywzNCBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQodWludDY0X3QgbQogICAgIGxvYWRlci0+ZGlkQ29udmVydEhhbmRsZVRv
RG93bmxvYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewotICAg
IHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6
Y29va2llc0ZvckRPTShzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCBmaXJzdFBhcnR5LCB1cmwp
OwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJv
bURPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00odWludDY0X3Qgc2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzdG9yYWdl
U2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVT
dHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBib29s
JiByZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5h
YmxlZCh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGJvb2wmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5h
YmxlZChzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwg
dXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmws
IFN0cmluZyYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUodWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQg
PSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJl
c3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMo
dWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
LCBWZWN0b3I8Q29va2llPiYgcmVzdWx0KQogewotICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMo
c3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwg
cmVzdWx0KTsKKyAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCksIGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29y
ZTo6ZGVsZXRlQ29va2llKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1
cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQpLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IEJs
b2JSZWdpc3RyYXRpb25EYXRhJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
OTQ1NzM3NS4uMzk4MWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC03NiwxNSAr
NzYsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsK
ICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKHVpbnQzMl90IHJlc291cmNlTG9hZFByaW9y
aXR5KTsKICAgICB2b2lkIHNldFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZvaWQg
c3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25s
b2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgc3RhcnRE
b3dubG9hZCh1aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRf
dCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVzdWx0KTsKLSAgICB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lk
IGNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sJiByZXN1bHQpOwot
ICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIFN0cmluZyYgcmVzdWx0KTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdm9pZCBkZWxl
dGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOworICAgIHZvaWQgY29va2llc0ZvckRPTSh1aW50
NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
dWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0VuYWJsZWQo
dWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGJvb2wmIHJlc3VsdCk7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQg
Z2V0UmF3Q29va2llcyh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsK
KyAgICB2b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYpOwog
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHNyY1VSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDdlODkwMzUuLmE0NTk3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zMiwxNSArMzIsMTUgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIAog
ICAgIFNldFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgLT4gKCkKIAotICAgIFN0
YXJ0RG93bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCB1aW50NjRfdCBkb3dubG9h
ZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKKyAgICBTdGFydERvd25sb2Fk
KHVpbnQ2NF90IHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0
cmluZyByZXN1bHQpCi0gICAgU2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5n
IGNvb2tpZVN0cmluZykKLSAgICBDb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoYm9v
bCBlbmFibGVkKQotICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1
cmwpIC0+IChTdHJpbmcgcmVzdWx0KQotICAgIEdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkg
LT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tp
ZU5hbWUpCisgICAgQ29va2llc0ZvckRPTSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKKyAgICBT
ZXRDb29raWVzRnJvbURPTSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBh
cnR5LCBXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNF
bmFibGVkKHVpbnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OlVSTCB1cmwpIC0+IChib29sIGVuYWJsZWQpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUodWludDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2Vi
Q29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpCisgICAgR2V0UmF3Q29va2llcyh1aW50
NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJs
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKKyAgICBEZWxldGVDb29raWUo
dWludDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkK
IAogICAgIFJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OkJsb2JSZWdp
c3RyYXRpb25EYXRhIGRhdGEpCiAgICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpV
UkwgdXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGU1MDAwZjUuLjljMWMxY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAi
U3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCkBAIC0xNTcsMTEgKzE1OCwxMiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZQogICAgIHNldENhY2hlTW9kZWwoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBh
cmFtZXRlcnMuY2FjaGVNb2RlbCkpOwogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRX
T1JLKQotICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRp
Zmllcik7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMu
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBpbnN0
ZWFkIG9mIGhhbmRsaW5nIHRoaXMgaGVyZSwgYSBtZXNzYWdlIHNob3VsZCBiZSBzZW50IGxhdGVy
IChzY2FsZXMgdG8gbXVsdGlwbGUgc2Vzc2lvbnMpCiAgICAgaWYgKHBhcmFtZXRlcnMucHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVBy
aXZhdGVTZXNzaW9uSUQpOwogCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05l
dHdvcmtTZXNzaW9uKQogICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3
VGVzdGluZ1Nlc3Npb24oKTsKQEAgLTIxMiwxNCArMjE0LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNlbmRpZgogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklEKQogewotICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7CisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVz
dHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotICAgIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwor
ICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNTQ4NGQ0OS4uYWQ1YThjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMDQsOCAr
MTA0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZvaWQgaW5p
dGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJik7CiAgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwot
ICAgIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHZvaWQgZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CiAgICAgdm9pZCBkb3dubG9hZFJlcXVl
c3QodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKTsKICAgICB2b2lk
IHNldENhY2hlTW9kZWwodWludDMyX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2YWQ2YzI1Li5j
NGE3MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzQsOCArMzQsOCBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgVXNlclByZWZlcnJlZExhbmd1YWdl
c0NoYW5nZWQoVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzKQogI2VuZGlmCiAKLSAgICBFbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKLSAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCisgICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQp
CisgICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQog
CiAgICAgRG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KQogICAgIENhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2Fk
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQuaAppbmRleCBlZjI1ZjMwMS4uNWYzYmY3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5o
CkBAIC0zOSwxMSArMzksOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0KCk7CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2
b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotCi0gICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIC8vIEZJWE1F
OiByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyCisg
ICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNz
aW9uSUQpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Q7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4
IGEzODI5ZTguLmYwNjdmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTI2LDYgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQuaCIKIAorI2ltcG9ydCAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbXBvcnQgIldlYkVycm9ycy5o
IgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KQEAgLTM2LDEyICszNyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCi17Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+IHNlc3Npb247Ci0gICAgcmV0dXJuIHNl
c3Npb247Ci19CiAKIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojp+UmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQoKQogewpAQCAtNjUsNyArNjAsNyBAQCBib29sIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
Ojpsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QKIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QK
IHsKICAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7Ci0gICAgICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb24gPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpLmdldCgpOworICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNz
aW9uID0gU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQpLmdldCgpOwogICAgICAgICBpZiAocHJpdmF0ZVNlc3Npb24pCiAgICAgICAg
ICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uOwogICAgICAgICAvLyBTb21lIHJlcXVlc3RzIHdp
dGggcHJpdmF0ZSBicm93c2luZyBtb2RlIHJlcXVlc3RlZCBtYXkgc3RpbGwgYmUgY29taW5nIHNo
b3J0bHkgYWZ0ZXIgTmV0d29ya1Byb2Nlc3Mgd2FzIHRvbGQgdG8gZGVzdHJveSBpdHMgc2Vzc2lv
bi4KQEAgLTc2LDExICs3MSw2IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKICAgICByZXR1cm4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAotTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCi17Ci0gICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkuZ2V0KCk7
Ci19Ci0KIFJldGFpblB0cjxDRkRhdGFSZWY+IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpzb3Vy
Y2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5pbDsKQEAgLTkx
LDMyICs4MSwxMyBAQCBSZXNvdXJjZUVycm9yIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpibG9j
a2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgIHJldHVybiBXZWJLaXQ6
OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAotc3RhdGljIFN0cmluZyYgcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBiYXNlOwotICAgIHJl
dHVybiBiYXNlOwotfQotCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcikKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotICAgIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSA9IGlkZW50aWZpZXI7Ci19Ci0KLXZvaWQgUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAg
IGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQorICAgIGlmIChTZXNzaW9uVHJh
Y2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQo
IXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSk7
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcocHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpICsgIi5Qcml2YXRlQnJvd3Np
bmciKS5jcmVhdGVDRlN0cmluZygpOwotCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oKSA9IHN0ZDo6bW92ZShOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24ocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgp
KSk7Ci19Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKLXsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0g
bnVsbHB0cjsKKyAgICBBU1NFUlQoIVNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgp
LmlzTnVsbCgpKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpID0gc3Rk
Ojptb3ZlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKSArICcuJyArIFN0cmluZzo6bnVt
YmVyKHNlc3Npb25JRCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAu
Y3BwCmluZGV4IDNiZWY1NjQuLmQ3ZjhkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKQEAgLTUyLDMxICs1MiwxNiBAQCB1aW50NjRfdCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6aW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJikKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkKLXsKLX0KLQogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi1OZXR3b3JrU3Rv
cmFnZVNlc3Npb24qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAmTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLX0KLQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TZXNzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYzNhYTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2Vzc2lvblRyYWNrZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc2Vzc2lvbk1hcCgpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4+IG1hcDsK
KyAgICByZXR1cm4gbWFwLmdldCgpOworfQorCitzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFz
ZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGJhc2U7CisgICAgcmV0dXJuIGJhc2U7Cit9CisKK2NvbnN0IEhhc2hN
YXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgU2Vz
c2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXAoKQoreworICAgIHJldHVybiBzZXNzaW9uTWFwKCk7
Cit9CisKK2NvbnN0IFN0cmluZyYgU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkK
K3sKKyAgICByZXR1cm4gaWRlbnRpZmllckJhc2UoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4mIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHVpbnQ2NF90IHNl
c3Npb25JRCkKK3sKKyAgICByZXR1cm4gc2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKK30KKwordm9pZCBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBzZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7Cit9CisKK3ZvaWQgU2Vzc2lv
blRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWRlbnRpZmllckJhc2UoKSA9IGlk
ZW50aWZpZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2Vzc2lvblRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmM2
ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFj
a2VyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Vzc2lvblRyYWNr
ZXJfaAorI2RlZmluZSBTZXNzaW9uVHJhY2tlcl9oCisKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2Vzc2lvblRyYWNrZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNlc3Npb25UcmFja2VyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgZGVmYXVsdFNlc3Npb25JRCA9IDE7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQgPSAyOworICAgIHN0YXRpYyBib29sIGlzRXBoZW1lcmFsSUQo
dWludDY0X3Qgc2Vzc2lvbklEKSB7IHJldHVybiBzZXNzaW9uSUQgIT0gU2Vzc2lvblRyYWNrZXI6
OmRlZmF1bHRTZXNzaW9uSUQ7IH0KKyAgICBzdGF0aWMgY29uc3QgSGFzaE1hcDx1aW50NjRfdCwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBnZXRTZXNz
aW9uTWFwKCk7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0SWRlbnRpZmllckJhc2UoKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4mIHNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95
U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZp
ZXJCYXNlKGNvbnN0IFN0cmluZyYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBTZXNzaW9uVHJhY2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lv
bi5jcHAKaW5kZXggNDIzMTJiYi4uYzJhMjYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UElTZXNzaW9uLmNwcApAQCAtMjYsMjMgKzI2LDYzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQVBJU2Vzc2lvbi5oIgogCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKwog
bmFtZXNwYWNlIEFQSSB7CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlEKGJvb2wgaXNFcGhl
bWVyYWwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyB1aW50
NjRfdCB1bmlxdWVTZXNzaW9uSUQgPSBXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEOworICAgIEFTU0VSVChpc0VwaGVtZXJhbCk7CisgICAgcmV0dXJuICsrdW5p
cXVlU2Vzc2lvbklEOworfQorCitTZXNzaW9uJiBTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBTZXNzaW9uKiBkZWZh
dWx0U2Vzc2lvbiA9IG5ldyBTZXNzaW9uKGZhbHNlLCBXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpk
ZWZhdWx0U2Vzc2lvbklEKTsKKyAgICByZXR1cm4gKmRlZmF1bHRTZXNzaW9uOworfQorCitTZXNz
aW9uJiBTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIHN0YXRpYyBTZXNzaW9uKiBsZWdhY3lQcml2YXRlU2Vzc2lvbiA9
IG5ldyBTZXNzaW9uKHRydWUsIFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQpOworICAgIHJldHVybiAqbGVnYWN5UHJpdmF0ZVNlc3Npb247Cit9CisKIFNlc3Np
b246OlNlc3Npb24oYm9vbCBpc0VwaGVtZXJhbCkKICAgICA6IG1faXNFcGhlbWVyYWwoaXNFcGhl
bWVyYWwpCisgICAgLCBtX3Nlc3Npb25JRChnZW5lcmF0ZUlEKGlzRXBoZW1lcmFsKSkKK3sKK30K
KworU2Vzc2lvbjo6U2Vzc2lvbihib29sIGlzRXBoZW1lcmFsLCB1aW50NjRfdCBzZXNzaW9uSUQp
CisgICAgOiBtX2lzRXBoZW1lcmFsKGlzRXBoZW1lcmFsKQorICAgICwgbV9zZXNzaW9uSUQoc2Vz
c2lvbklEKQogewogfQogCiBQYXNzUmVmUHRyPFNlc3Npb24+IFNlc3Npb246OmNyZWF0ZShib29s
IGlzRXBoZW1lcmFsKQogeworICAgIC8vIEZJWE1FOiBzdXBwb3J0IGNyZWF0aW9uIG9mIG5vbi1k
ZWZhdWx0LCBub24tZXBoZW1lcmFsIHNlc3Npb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
ZXNzaW9uKGlzRXBoZW1lcmFsKSk7CiB9CiAKLWJvb2wgU2Vzc2lvbjo6aXNFcGhlbWVyYWwoKQor
Ym9vbCBTZXNzaW9uOjppc0VwaGVtZXJhbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXNFcGhl
bWVyYWw7CiB9CiAKK3VpbnQ2NF90IFNlc3Npb246OmdldElEKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zZXNzaW9uSUQ7Cit9CisKIFNlc3Npb246On5TZXNzaW9uKCkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oCmluZGV4IDNmYjVmNjcuLmRmNzE2ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBB
UElTZXNzaW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIlNlc3Npb25U
cmFja2VyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIEFQSSB7
CkBAIC0zNCwxMiArMzUsMTcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBTZXNzaW9uIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U2Vzc2lvbj4gewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlc3Npb24+IGNyZWF0ZShib29sIGlzRXBoZW1lcmFs
KTsKLSAgICBib29sIGlzRXBoZW1lcmFsKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGRlZmF1bHRT
ZXNzaW9uKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGxlZ2FjeVByaXZhdGVTZXNzaW9uKCk7Cisg
ICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0OworICAgIHVpbnQ2NF90IGdldElEKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB+U2Vzc2lvbigpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNlc3Np
b24oYm9vbCBpc0VwaGVtZXJhbCk7CisgICAgU2Vzc2lvbihib29sIGlzRXBoZW1lcmFsLCB1aW50
NjRfdCBzZXNzaW9uSUQpOwogICAgIGJvb2wgbV9pc0VwaGVtZXJhbDsKKyAgICB1aW50NjRfdCBt
X3Nlc3Npb25JRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGUxMDUxNWIuLjU0ZWZiNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJT
dGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiV0tD
b250ZXh0UHJpdmF0ZS5oIgpAQCAtNDY3LDE2ICs0NjgsMTYgQEAgdm9pZCBXZWJDb250ZXh0Ojpz
ZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0
ZUJyb3cKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmICh1c2VzTmV0d29ya1By
b2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlmIChwcml2YXRlQnJvd3Np
bmdFbmFibGVkKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7CisgICAg
ICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0
ZVNlc3Npb25JRCksIDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSwgMCk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lv
blRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpLCAwKTsKICAgICB9CiAjZW5kaWYgLy8g
RU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCkKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpOworICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lv
blRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpKTsKICAgICBlbHNlCi0gICAgICAgIHNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKSk7CisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQpKTsKIH0KIAogdm9pZCAoKnNfaW52YWxpZE1lc3NhZ2VDYWxs
YmFjaykoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUpOwpAQCAtNTk3LDcgKzU5OCw3IEBAIFdlYlBy
b2Nlc3NQcm94eSYgV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6SW5pdGlhbGl6ZVdlYlByb2Nlc3MocGFyYW1l
dGVycywgV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlcihpbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGEuZ2V0KCksICpwcm9jZXNzKSksIDApOwogCiAgICAgaWYgKFdlYlByZWZl
cmVuY2VzOjphbnlQYWdlR3JvdXBzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSkKLSAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpLCAwKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJp
dmF0ZVNlc3Npb25JRCksIDApOwogCiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOwog
CkBAIC03NDAsNyArNzQxLDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250ZXh0OjpjcmVhdGVO
ZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCkKICAgICByZXR1cm4gKnJl
c3VsdDsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdl
YlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29u
dGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAq
IHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQ
YWdlKQogewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7CiAgICAgaWYgKG1f
cHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKQEAg
LTc1Niw3ICs3NTcsMTIgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNy
ZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGEKICAgICAgICAgICAgIHBy
b2Nlc3MgPSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgp
OwogICAgIH0KIAotICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQs
IHBhZ2VHcm91cCA/ICpwYWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCkpOworICAg
IHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHBhZ2VHcm91cCA/ICpw
YWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCksIHNlc3Npb24pOworfQorCitQYXNz
UmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxh
dGVkUGFnZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBwYWdlR3Jv
dXAsIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8g
QVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpIDogQVBJOjpTZXNzaW9uOjpkZWZh
dWx0U2Vzc2lvbigpLCByZWxhdGVkUGFnZSk7CiB9CiAKIERvd25sb2FkUHJveHkqIFdlYkNvbnRl
eHQ6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4
IGI5OGM0ODYuLmY2YjlmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApA
QCAtMTQ5LDYgKzE0OSw3IEBAIHB1YmxpYzoKIAogICAgIFN0b3JhZ2VNYW5hZ2VyJiBzdG9yYWdl
TWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuICptX3N0b3JhZ2VNYW5hZ2VyOyB9CiAKKyAgICBQYXNz
UmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdy
b3VwKiwgQVBJOjpTZXNzaW9uJiwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IDApOwogICAg
IFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQ
YWdlR3JvdXAqLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gMCk7CiAKICAgICBjb25zdCBT
dHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5k
bGVQYXRoOyB9CkBAIC0yOTIsNiArMjkzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdp
bGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7CiAgICAgc3RhdGljIHZvaWQgd2lsbFN0b3BV
c2luZ1ByaXZhdGVCcm93c2luZygpOwogCisgICAgc3RhdGljIGJvb2wgaXNFcGhlbWVyYWxTZXNz
aW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CisKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldEln
bm9yZVRMU0Vycm9ycyhib29sKTsKICAgICBib29sIGlnbm9yZVRMU0Vycm9ycygpIGNvbnN0IHsg
cmV0dXJuIG1faWdub3JlVExTRXJyb3JzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDc0NGMxYzUuLjQxYmI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMjgsMTIgKzIyOCwxMiBAQCBzdGF0aWMgY29u
c3QgY2hhciogd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcoV2ViRXZlbnQ6OlR5cGUgdHlwZSkK
IH0KICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAKLVBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBX
ZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCB1aW50NjRfdCBwYWdlSUQpCitQ
YXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJQYWdlR3JvdXAmIHBhZ2VH
cm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCB1aW50NjRfdCBwYWdlSUQpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUdy
b3VwLCBwYWdlSUQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBhZ2VQcm94eShwYWdl
Q2xpZW50LCBwcm9jZXNzLCBwYWdlR3JvdXAsIHNlc3Npb24sIHBhZ2VJRCkpOwogfQogCi1XZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCB1aW50NjRfdCBwYWdlSUQp
CitXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCBBUEk6OlNlc3Np
b24mIHNlc3Npb24sIHVpbnQ2NF90IHBhZ2VJRCkKICAgICA6IG1fcGFnZUNsaWVudChwYWdlQ2xp
ZW50KQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cChwYWdlR3Jv
dXApCkBAIC0yNzksNiArMjc5LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWIKICAgICAsIG1f
bmVlZFRvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCisg
ICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKICAgICAsIG1faXNQYWdlU3VzcGVuZGVkKGZhbHNlKQog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoVGV4
dENoZWNrZXI6OmlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZGIwMGFlNC4uODNhMmFlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBX
ZWJQYWdlUHJveHlfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQVBJU2Vz
c2lvbi5oIgogI2luY2x1ZGUgIkF1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKQEAgLTc0LDYg
Kzc1LDcgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzI3LDEwICszMjksMTEgQEAgY2xhc3MgV2Vi
UGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFn
ZT4KICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nl
c3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94
eSYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYsIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAg
dmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIHVpbnQ2NF90IHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Vzc2lvbi0+Z2V0SUQoKTsgfQogCiAgICAgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWUuZ2V0KCk7IH0KICAgICBXZWJGcmFtZVByb3h5
KiBmb2N1c2VkRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzZWRGcmFtZS5nZXQoKTsgfQpA
QCAtODU1LDcgKzg1OCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVo
YXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVo
YXZpb3I7IH0KICAgICAgICAgCiBwcml2YXRlOgotICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgdWludDY0X3QgcGFnZUlEKTsKKyAg
ICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91
cCYsIEFQSTo6U2Vzc2lvbiYsIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKIAogICAgIHZvaWQgdXBkYXRlVmlld1N0YXRlKFdlYkNvcmU6OlZpZXdTdGF0
ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OlZpZXdTdGF0ZTo6QWxsRmxhZ3MpOwpA
QCAtMTMxMiw2ICsxMzE1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdWludDY0X3QgbV9w
YWdlSUQ7CisgICAgUmVmPEFQSTo6U2Vzc2lvbj4gbV9zZXNzaW9uOwogCiAgICAgYm9vbCBtX2lz
UGFnZVN1c3BlbmRlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAppbmRleCAxMGYxYWIwLi40NzY2YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY3LDEwICsxNjcsMTAgQEAgV2ViUGFnZVBy
b3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogICAgIHJldHVy
biBnbG9iYWxQYWdlTWFwKCkuZ2V0KHBhZ2VJRCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViUGFnZVBy
b3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXApCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBh
Z2VHcm91cCYgcGFnZUdyb3VwLCBBUEk6OlNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgdWludDY0
X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiB3
ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VHcm91
cCwgcGFnZUlEKTsKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVBy
b3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VHcm91cCwgc2Vzc2lvbiwgcGFnZUlE
KTsKICAgICBtX3BhZ2VNYXAuc2V0KHBhZ2VJRCwgd2ViUGFnZS5nZXQoKSk7CiAgICAgZ2xvYmFs
UGFnZU1hcCgpLnNldChwYWdlSUQsIHdlYlBhZ2UuZ2V0KCkpOwogI2lmIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBhM2M5Mjlj
Li5jNTQ1MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYlByb2Nlc3NQcm94eV9oCiAjZGVmaW5lIFdl
YlByb2Nlc3NQcm94eV9oCiAKKyNpbmNsdWRlICJBUElTZXNzaW9uLmgiCiAjaW5jbHVkZSAiQ2hp
bGRQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCkBAIC03Nyw3ICs3OCw3IEBAIHB1Ymxp
YzoKICAgICBXZWJDb250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CiAKICAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7Ci0g
ICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFdl
YlBhZ2VHcm91cCYpOworICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdl
KFBhZ2VDbGllbnQmLCBXZWJQYWdlR3JvdXAmLCBBUEk6OlNlc3Npb24mKTsKICAgICB2b2lkIGFk
ZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBwYWdlSUQpOwogICAgIHZv
aWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwogICAgIFZlY3RvcjxXZWJQYWdlUHJv
eHkqPiBwYWdlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNiNzI3NGUuLjI4OGFlMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc4NSw2ICs3
ODUsOCBAQAogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRl
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4
NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI4RTg2RjExNzk1MTg4
QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29s
b3JQaWNrZXJNYWMuaCAqLzsgfTsKIAkJNzI4RTg2RjIxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNv
bG9yUGlja2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICov
OyB9OworCQk3NTNFM0UwRDE4ODczOTg1MDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUzRTNFMEIxODg3
Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCAqLzsgfTsKKwkJNzUzRTNFMEUxODg3
Mzk4OTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTNFM0UwOTE4ODczOTRCMDAxODg0OTYgLyogU2Vzc2lv
blRyYWNrZXIuaCAqLzsgfTsKIAkJNzU1NDIyQkQxODA2MkJCMjAwNDZGNkE4IC8qIFdLT3JpZ2lu
RGF0YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzU1NDIyQjkxODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2luRGF0YU1hbmFnZXIuY3Bw
ICovOyB9OwogCQk3NTU0MjJDNDE4MDYyQkY5MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3NTU0MjJCRTE4MDYyQkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5j
cHAgKi87IH07CiAJCTc1NTQyMkNCMTgwNjUwMDIwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NTU0MjJDNjE4MDY0RkZDMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwICovOyB9
OwpAQCAtMjQ2NCw2ICsyNDY2LDggQEAKIAkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdL
SW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
S0luc3BlY3RvclByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0luc3BlY3RvclByaXZhdGVNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlF
IC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4
NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3NTNFM0UwOTE4ODczOTRCMDAxODg0OTYgLyogU2Vzc2lv
blRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vzc2lvblRyYWNr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzUzRTNFMEIxODg3Mzk3MzAwMTg4
NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNlc3Npb25UcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzU1NDIyQjkxODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2luRGF0YU1hbmFnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tPcmlnaW5EYXRhTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTQyMkJBMTgwNjJCOUMwMDQ2RjZBOCAv
KiBXS09yaWdpbkRhdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLT3JpZ2luRGF0YU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1
NDIyQkUxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzI0LDYgKzM3MjgsOCBA
QAogCQkJCTMzMTUyOTc0MTMwRDBDQjIwMEVEMjQ4MyAvKiBTZWN1cml0eU9yaWdpbkRhdGEuaCAq
LywKIAkJCQk1MThEMkNDODEyRDUxREZCMDAzQkI5M0IgLyogU2Vzc2lvblN0YXRlLmNwcCAqLywK
IAkJCQk1MThEMkNDOTEyRDUxREZCMDAzQkI5M0IgLyogU2Vzc2lvblN0YXRlLmggKi8sCisJCQkJ
NzUzRTNFMEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCAqLywKKwkJCQk3
NTNFM0UwOTE4ODczOTRCMDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCAqLywKIAkJCQkxQTY0
MjBFMjEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmNwcCAqLywKIAkJCQkxQTY0
MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmggKi8sCiAJCQkJNTEyMTc0
NUUxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCAqLywKQEAgLTY2NDUs
NiArNjY1MSw3IEBACiAJCQkJQkM0MDc2MUMxMjRGRjAzNzAwNjhGMjBBIC8qIFdLVVJMQ0YuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNDA3NjBDMTI0RkYwMjcwMDY4RjIwQSAvKiBXS1VSTFJlcXVl
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjI5MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VS
TFJlcXVlc3ROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzUzRTNFMEUxODg3Mzk4OTAwMTg4NDk2
IC8qIFNlc3Npb25UcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwRTEyNEZGMDI3
MDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU5Q0NENUEx
ODA4RjYxNjAwNzhFOEE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNDA3NjJCMTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMuaCBp
biBIZWFkZXJzICovLApAQCAtNzkwMyw2ICs3OTEwLDcgQEAKIAkJCQlCQ0QyNUYxODExRDZCREUx
MDAxNjlCMEUgLyogV0tCdW5kbGVGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQ5ODYz
MDEyNEQxOEMxMDBEODM0RTEgLyogV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTY1MDFCRDFBMTJGMTI0MzQwMEU5RjI0OCAvKiBXS0J1bmRsZUluc3BlY3Rvci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3NTNFM0UwRDE4ODczOTg1MDAxODg0OTYgLyogU2Vzc2lv
blRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3MDQzQ0QxMkY3NUVFMDAwNjQ3MkI5
IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzRC
RUZFMjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMjA1MjgyMTFDOTQyODQwMDhGMzM3NSAvKiBXS0J1bmRsZVBhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDE2NTBiNTUuLmRiZjBjZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUhvc3Qu
aCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNp
bmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1
ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmgiCkBAIC0yOTksOSArMzAwLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib28KICAgICAv
LyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBUaGlzIHRlc3Qtb25seSBmdW5jdGlvbiBkb2Vzbid0
IHdvcmsgd2l0aCBOZXR3b3JrUHJvY2VzcywgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTUyNzQ+LgogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykg
fHwgVVNFKFNPVVApCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICAgICAgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9u
VHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CiAgICAgZWxzZQotICAgICAgICBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwor
ICAgICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oU2Vzc2lvblRyYWNrZXI6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQpOwogI2VuZGlmCiAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4m
IHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5w
YWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGl0ZXIgPSBwYWdlcy5i
ZWdpbigpOyBpdGVyICE9IHBhZ2VzLmVuZCgpOyArK2l0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKaW5kZXggNTVjMWU1MC4uNTk4MTc2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUltcGwuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCkBAIC03Miw2ICs3MywxMSBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRp
YyB1aW50NjRfdCBsZWdhY3lTZXNzaW9uSUQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uICZz
ZXNzaW9uKQoreworICAgIHJldHVybiBzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
ID8gU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQgOiBTZXNzaW9uVHJhY2tl
cjo6ZGVmYXVsdFNlc3Npb25JRDsKK30KKwogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omlu
aXRpYWxpemUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM+IHBsYXRmb3JtU3RyYXRlZ2llczsKQEAgLTEzMyw3ICsxMzksNyBAQCBTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbgogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyBy
ZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Zv
ckRPTShsZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkocmVz
dWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpAQCAtMTQ2LDcgKzE1Miw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
CiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hh
cmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbi5pc1By
aXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAw
KTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
U2V0Q29va2llc0Zyb21ET00obGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1
cmwsIGNvb2tpZVN0cmluZyksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBA
IC0xNTksNyArMTY1LDcgQEAgYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFi
bGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1By
b2Nlc3MoKSkgewogICAgICAgICBib29sIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNz
OjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQoc2Vz
c2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHko
cmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9u
KSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTczLDcgKzE3OSw3
IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAg
ICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
c2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6
c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTg2LDcgKzE5Miw3IEBAIGJv
b2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAg
IGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpH
ZXRSYXdDb29raWVzKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFy
dHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3
Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKGxlZ2Fj
eVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwg
MCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTE5OSw3ICsyMDUsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRl
Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgYwogewogI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNO
ZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKGxlZ2FjeVNlc3Npb25JRChz
ZXNzaW9uKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAppbmRl
eCA5NTk2YzU3Li44NjI5ZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oCkBAIC0zOSw5ICszOSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVy
QmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKTsKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgYW5kIHVz
ZSBTZXNzaW9uVHJhY2tlcgorICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKwogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFj
Y2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogCiAgICAg
V2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCBmODA4Njdj
Li5mZTk3YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQubW0KQEAgLTI0LDYgKzI0LDggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZS5oPgpAQCAtMzQsNTIgKzM2LDIzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZVNlc3Npb24oKQot
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPj4gc2Vzc2lvbjsKLSAgICByZXR1cm4gc2Vzc2lvbjsKLX0KLQotc3RhdGljIFN0
cmluZyYgaWRlbnRpZmllckJhc2UoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGJhc2U7Ci0gICAgcmV0dXJuIGJhc2U7Ci19CiAgICAgCi12b2lkIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoY29uc3QgU3RyaW5nJiBiYXNlKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0K
LSAgICBpZGVudGlmaWVyQmFzZSgpID0gYmFzZTsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBz
ZXNzaW9uSUQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIGlmIChwcml2
YXRlU2Vzc2lvbigpKQorICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQp
KQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgYmFzZTsKLSAgICBpZiAoaWRlbnRpZmll
ckJhc2UoKS5pc051bGwoKSkKKyAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJC
YXNlKCkuaXNOdWxsKCkpCiAgICAgICAgIGJhc2UgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1
bmRsZUlkZW50aWZpZXJdOwogICAgIGVsc2UKLSAgICAgICAgYmFzZSA9IGlkZW50aWZpZXJCYXNl
KCk7Ci0KLSAgICBwcml2YXRlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVh
dGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGJhc2UpOwotfQorICAgICAgICBiYXNlID0gU2Vzc2lv
blRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0KLSAgICBwcml2YXRlU2Vzc2lvbigpID0gbnVsbHB0cjsKKyAgICBT
ZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpID0gc3RkOjptb3ZlKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihiYXNlICsgJy4nICsgU3Ry
aW5nOjpudW1iZXIoc2Vzc2lvbklEKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kgcG9saWN5KQpAQCAtODksOCArNjIsMTAgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2ll
QWMKICAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tp
ZVN0b3JhZ2UoKSkKICAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0
b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiAKLSAgICBpZiAocHJpdmF0ZVNlc3Npb24oKSkKLSAgICAg
ICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHByaXZhdGVTZXNzaW9uKCktPmNvb2tpZVN0
b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNlc3Npb24gOiBT
ZXNzaW9uVHJhY2tlcjo6Z2V0U2Vzc2lvbk1hcCgpLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChz
ZXNzaW9uKQorICAgICAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHNlc3Npb24t
PmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKKyAgICB9CiB9CiAgICAgCiBib29sIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QK
QEAgLTEyNSwxMSArMTAwLDEwIEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwor
ICAgICAgICByZXR1cm4gKlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25UcmFja2VyOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKTsKIAogICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQotICAgIAogV2ViRnJhbWVMb2FkZXJDbGll
bnQqIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OndlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29u
c3QKIHsKICAgICBpZiAoIWZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCAyOTFhYjRhLi4xMjJjNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFj
a2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5o
IgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgiCkBAIC0zMzUsNyArMzM2
LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWUKICAgICAgICAgc2V0U2hvdWxkVXNlRm9udFNt
b290aGluZyh0cnVlKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAg
ICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbklkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7
CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9j
ZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIGlmIChwYXJhbWV0ZXJzLnNob3Vs
ZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKQEAgLTQ1MiwxNyArNDUzLDE3IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRB
Y2Nlc3NFbmFibGVkKQogICAgIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IGZ1bGxLZXli
b2FyZEFjY2Vzc0VuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpCit2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENG
TkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQog
Ci12b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQg
V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lv
bklEKQogewogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVAp
Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGNk
OTliYTEuLjJhODZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC0xNjUsOSArMTY1LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQz
Ml90KTsKIAotICAgIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHZv
aWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICAKKyAgICB2b2lkIGVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICB2b2lkIGRl
c3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CisKICAgICB2
b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcGFnZVdp
bGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMWM4ZjhjYi4uMmEwNzhlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtNTEsOSArNTEsOSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBTZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiAjZW5kaWYK
IAotICAgIC8vIFByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbiBpcyBwZXIgcHJvY2Vzcy4gSW5kaXZp
ZHVhbCBwYWdlcyBvciBwYWdlIGdyb3VwcyBtYXkgdXNlIHRoZSBwcml2YXRlIHNlc3Npb24gb3Ig
dGhlIGRlZmF1bHQgb25lIGFzIGFwcHJvcHJpYXRlLgotICAgIEVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKQotICAgIERlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKKyAgICAvLyBM
ZWdhY3kgcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uIGlzIHBlciBwcm9jZXNzLiBJbmRpdmlkdWFs
IHBhZ2VzIG9yIHBhZ2UgZ3JvdXBzIG1heSB1c2UgdGhlIHByaXZhdGUgc2Vzc2lvbiBvciB0aGUg
ZGVmYXVsdCBvbmUgYXMgYXBwcm9wcmlhdGUuCisgICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCisgICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Np
b24odWludDY0X3Qgc2Vzc2lvbklEKQogCiAgICAgIyBQbHVnLWlucy4KICAgICBEaWRBZGRQbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVpbnQzMl90IGhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGlt
ZSkK
</data>
<flag name="review"
          id="245432"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221512</attachid>
            <date>2014-01-17 16:49:51 -0800</date>
            <delta_ts>2014-01-17 17:23:50 -0800</delta_ts>
            <desc>address comments + soup build fixes</desc>
            <filename>sessionid.17.diff</filename>
            <type>text/plain</type>
            <size>63278</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjExNGRmZi4uNDk5YmM3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTIwNCw2ICsyMDQsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L1ByaW50SW5mby5jcHAKICAgICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAogICAgIFNo
YXJlZC9TZXNzaW9uU3RhdGUuY3BwCisgICAgU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAogICAg
IFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCiAgICAgU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAogICAgIFNoYXJlZC9TdGF0aXN0aWNzRGF0YS5jcHAKQEAgLTI5Myw2ICsyOTQsNyBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5m
b3JtYXRpb24uY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCisgICAg
VUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAK
ICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvRmluZElu
ZGljYXRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzNWViNWQwLi4yNDk0MmMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTMgQEAKKzIwMTQtMDEtMTcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29t
PgorCisgICAgICAgIEZsZXNoIG91dCBzZXNzaW9uIEFQSXMgKHN0aWxsIG5vdCBlbmFibGVkIGF0
IEFQSSBsZXZlbCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjY5MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zy
b21ET00pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vz
c2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1Jl
bW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAg
KiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJU2Vzc2lvbi5jcHAuCisgICAgICAgIChXZWJLaXQ6OnNlc3Npb25NYXApOgor
ICAgICAgICAoV2ViS2l0OjppZGVudGlmaWVyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlNlc3Np
b25UcmFja2VyOjpnZXRTZXNzaW9uTWFwKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNr
ZXI6OmdldElkZW50aWZpZXJCYXNlKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6
OnNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Np
b24pOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2Up
OgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oLgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9u
VHJhY2tlcjo6aXNFcGhlbWVyYWxJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSVNlc3Npb24u
Y3BwOgorICAgICAgICAoQVBJOjpnZW5lcmF0ZUlEKToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6
ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbik6CisgICAgICAgIChBUEk6OlNlc3Npb246OlNlc3Npb24pOgorICAgICAgICAoQVBJOjpT
ZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjppc0VwaGVtZXJhbCk6Cisg
ICAgICAgIChBUEk6OlNlc3Npb246OmdldElEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJU2Vz
c2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vz
c2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpsZWdhY3lTZXNz
aW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNG
b3JET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tp
ZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAx
NC0wMS0xNyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBBZGQgQ1NTIEdyaWQgTGF5b3V0IGFzIGV4cGVyaW1lbnRhbCBmZWF0dXJlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5OWMxMThmLi44YTMwYjUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ0Miw2ICs0NDIsOCBAQCB3ZWJraXQyX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lv
blRyYWNrZXIuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuaCBc
CiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9z
b3VwL1NvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggZjU5OTQ0Ni4uYjFkZDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlv
bnMuaD4KQEAgLTE0NywxMCArMTQ4LDEwIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNldFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3Nlcmlh
bExvYWRpbmdFbmFibGVkID0gZW5hYmxlZDsKIH0KIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc3RvcmFnZVNlc3Npb24oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQorc3RhdGlj
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklE
KQogewotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7Ci0gICAgICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb24gPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
cHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6aXNFcGhl
bWVyYWxJRChzZXNzaW9uSUQpKSB7CisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJp
dmF0ZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpLmdldCgpOwog
ICAgICAgICBpZiAocHJpdmF0ZVNlc3Npb24pCiAgICAgICAgICAgICByZXR1cm4gKnByaXZhdGVT
ZXNzaW9uOwogICAgICAgICAvLyBTb21lIHJlcXVlc3RzIHdpdGggcHJpdmF0ZSBicm93c2luZyBt
b2RlIHJlcXVlc3RlZCBtYXkgc3RpbGwgYmUgY29taW5nIHNob3J0bHkgYWZ0ZXIgTmV0d29ya1By
b2Nlc3Mgd2FzIHRvbGQgdG8gZGVzdHJveSBpdHMgc2Vzc2lvbi4KQEAgLTE2MCw5ICsxNjEsOSBA
QCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbihib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpCiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnN0YXJ0RG93bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCB1aW50NjRf
dCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKHVpbnQ2NF90IHNlc3Npb25J
RCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgd2l0aCB0aGUgcHJpdmF0ZSBicm93c2luZyBm
bGFnLgorICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgd2l0aCB0aGUgc2Vzc2lvbiBJRC4KICAg
ICBOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCkuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9h
ZChkb3dubG9hZElELCByZXF1ZXN0KTsKIH0KIApAQCAtMTgyLDM0ICsxODMsMzQgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKHVpbnQ2NF90IG0KICAgICBsb2FkZXItPmRpZENvbnZlcnRIYW5kbGVUb0Rvd25sb2Fk
KCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JE
T00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNvb2tpZXNGb3JET00odWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQg
PSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNG
b3JET00oc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc3RvcmFnZVNlc3Npb24o
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsK
KyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgYm9vbCYgcmVzdWx0
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQodWlu
dDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBi
b29sJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc3Rv
cmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7Cisg
ICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcm
IHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2Vi
Q29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29y
ZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Z2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKHVpbnQ2NF90
IHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIHJlc3VsdCkKIHsKLSAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHN0b3JhZ2VT
ZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIHJlc3VsdCk7
CisgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCBm
aXJzdFBhcnR5LCB1cmwsIHJlc3VsdCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUodWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0
ZUNvb2tpZShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgdXJsLCBjb29r
aWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBCbG9iUmVnaXN0
cmF0aW9uRGF0YSYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDk0NTczNzUu
LjM5ODFmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNzYsMTUgKzc2LDE1IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VM
b2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCk7CiAgICAgdm9p
ZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyh1aW50MzJfdCByZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAg
ICAgdm9pZCBzZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChib29sKTsKLSAgICB2b2lkIHN0YXJ0RG93
bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCB1aW50NjRfdCBkb3dubG9hZElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQo
dWludDY0X3Qgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93bmxv
YWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOwogCi0gICAgdm9pZCBjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjb29raWVz
RW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCYgcmVzdWx0KTsKLSAgICB2b2lk
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBT
dHJpbmcmIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00odWludDY0X3Qgc2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIFN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKHVpbnQ2NF90
IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNvb2tpZXNFbmFibGVkKHVpbnQ2NF90
IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBib29sJiByZXN1bHQpOworICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUodWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIGdldFJhd0Nv
b2tpZXModWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9p
ZCBkZWxldGVDb29raWUodWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgQmxvYlJlZ2lzdHJhdGlvbkRhdGEmKTsKICAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBzcmNVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCA3ZTg5MDM1Li5hNDU5N2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzIsMTUgKzMyLDE1IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICAKICAgICBTZXRT
ZXJpYWxMb2FkaW5nRW5hYmxlZChib29sIGVuYWJsZWQpIC0+ICgpCiAKLSAgICBTdGFydERvd25s
b2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisgICAgU3RhcnREb3dubG9hZCh1aW50NjRf
dCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KQogICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UpCiAKLSAgICBDb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
V2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVz
dWx0KQotICAgIFNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
V2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVT
dHJpbmcpCi0gICAgQ29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBX
ZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKGJvb2wgZW5hYmxl
ZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAo
U3RyaW5nIHJlc3VsdCkKLSAgICBHZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQotICAgIERlbGV0ZUNvb2tpZShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQor
ICAgIENvb2tpZXNGb3JET00odWludDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQ
YXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpCisgICAgU2V0Q29va2ll
c0Zyb21ET00odWludDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2Vi
Q29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRW5hYmxlZCh1
aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwg
dXJsKSAtPiAoYm9vbCBlbmFibGVkKQorICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KHVpbnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVS
TCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQorICAgIEdldFJhd0Nvb2tpZXModWludDY0X3Qgc2Vz
c2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCisgICAgRGVsZXRlQ29va2llKHVpbnQ2NF90
IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCiAKICAgICBS
ZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpCbG9iUmVnaXN0cmF0aW9u
RGF0YSBkYXRhKQogICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoV2ViQ29yZTo6VVJMIHVybCwg
V2ViQ29yZTo6VVJMIHNyY1VSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBlNTAwMGY1Li45YzFjMWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpc3Rp
Y3NEYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29va2llTWFuYWdlci5oIgpAQCAtMTU3LDExICsxNTgsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWUKICAgICBzZXRDYWNoZU1vZGVsKHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXJhbWV0ZXJz
LmNhY2hlTW9kZWwpKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAg
ICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwor
ICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vz
c0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBo
YW5kbGluZyB0aGlzIGhlcmUsIGEgbWVzc2FnZSBzaG91bGQgYmUgc2VudCBsYXRlciAoc2NhbGVz
IHRvIG11bHRpcGxlIHNlc3Npb25zKQogICAgIGlmIChwYXJhbWV0ZXJzLnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpCi0gICAgICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCk7CisgICAgICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKTsKIAogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vz
c2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdT
ZXNzaW9uKCk7CkBAIC0yMTIsMTQgKzIxNCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkK
IHsKLSAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpOworICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBTZXNz
aW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDU0ODRkNDkuLmFkNWE4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTA0LDggKzEwNCw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGluaXRpYWxpemVO
ZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwog
ICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKLSAgICB2b2lk
IGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCk7CisgICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCk7CisgICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2
NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZv
aWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRDYWNo
ZU1vZGVsKHVpbnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNmFkNmMyNS4uYzRhNzE0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2Vk
KFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKICNlbmRpZgogCi0gICAgRW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpCi0gICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQorICAg
IEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQorICAgIERl
c3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIAogICAgIERv
d25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0LmgKaW5kZXggZWYyNWYzMDEuLjVmM2JmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaApAQCAtMzks
MTEgKzM5LDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5SZW1vdGVOZXR3b3JraW5n
Q29udGV4dCgpOwogCi0gICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgdm9pZCBlbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKTsKLQotICAgIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24qIHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICAvLyBGSVhNRTogcmVtb3Zl
IHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgYW5kIHVzZSBTZXNzaW9uVHJhY2tlcgorICAgIHN0YXRp
YyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCBhMzgyOWU4
Li4xMDU5Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAK
KyNpbXBvcnQgIlNlc3Npb25UcmFja2VyLmgiCiAjaW1wb3J0ICJXZWJFcnJvcnMuaCIKICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg+CkBAIC0zNiwxMiArMzcsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBzZXNzaW9uOwotICAgIHJldHVybiBzZXNzaW9uOwot
fQogCiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6flJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KCkK
IHsKQEAgLTY1LDcgKzYwLDcgQEAgYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6bG9jYWxG
aWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0CiBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAg
aWYgKG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewotICAgICAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb24qIHByaXZhdGVTZXNzaW9uID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKS5n
ZXQoKTsKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IFNl
c3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKS5nZXQoKTsKICAgICAgICAgaWYgKHByaXZhdGVTZXNzaW9uKQogICAgICAgICAgICAgcmV0
dXJuICpwcml2YXRlU2Vzc2lvbjsKICAgICAgICAgLy8gU29tZSByZXF1ZXN0cyB3aXRoIHByaXZh
dGUgYnJvd3NpbmcgbW9kZSByZXF1ZXN0ZWQgbWF5IHN0aWxsIGJlIGNvbWluZyBzaG9ydGx5IGFm
dGVyIE5ldHdvcmtQcm9jZXNzIHdhcyB0b2xkIHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24uCkBAIC03
NiwxMSArNzEsNiBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLU5ldHdvcmtTdG9yYWdlU2Vzc2lv
biogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewot
ICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpLmdldCgpOwotfQotCiBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c291cmNlQXBwbGlj
YXRpb25BdWRpdERhdGEoKSBjb25zdAogewogICAgIHJldHVybiBuaWw7CkBAIC05MSwzMiArODEs
MTMgQEAgUmVzb3VyY2VFcnJvciBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6YmxvY2tlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICByZXR1cm4gV2ViS2l0OjpibG9ja2Vk
RXJyb3IocmVxdWVzdCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcmIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYmFzZTsKLSAgICByZXR1cm4gYmFz
ZTsKLX0KLQotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit2
b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwotfQotCi12b2lkIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKLXsKLSAgICBpZiAocHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OnNl
c3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3Jl
YXRlQ0ZTdHJpbmcoKTsKLQotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBz
dGQ6Om1vdmUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSkpOwotfQot
Ci12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpCi17Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7
CisgICAgQVNTRVJUKCFTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwo
KSk7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6
Z2V0SWRlbnRpZmllckJhc2UoKSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRCkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1Jl
bW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKaW5kZXggM2JlZjU2NC4u
ZDdmOGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcApAQCAtNTIsMzEg
KzUyLDE2IEBAIHVpbnQ2NF90IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojppbml0aWF0aW5nUGFn
ZUlEKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25z
dCBTdHJpbmcmKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotfQot
CiBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdl
U2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLU5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICZOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VjM2FhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5o
IgorCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4+JiBzZXNzaW9uTWFwKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+Pj4gbWFwOworICAgIHJldHVybiBtYXAuZ2V0
KCk7Cit9CisKK3N0YXRpYyBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYmFz
ZTsKKyAgICByZXR1cm4gYmFzZTsKK30KKworY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBTZXNzaW9uVHJhY2tlcjo6Z2V0U2Vz
c2lvbk1hcCgpCit7CisgICAgcmV0dXJuIHNlc3Npb25NYXAoKTsKK30KKworY29uc3QgU3RyaW5n
JiBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKQoreworICAgIHJldHVybiBpZGVu
dGlmaWVyQmFzZSgpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PiYgU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIHJl
dHVybiBzZXNzaW9uTWFwKCkuYWRkKHNlc3Npb25JRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OworfQorCit2b2lkIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbih1aW50NjRfdCBzZXNz
aW9uSUQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNlc3Npb25NYXAo
KS5yZW1vdmUoc2Vzc2lvbklEKTsKK30KKwordm9pZCBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRp
ZmllckJhc2UoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBpZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vz
c2lvblRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyYzZlMjAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuaApAQCAtMCwwICsxLDUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZXNzaW9uVHJhY2tlcl9oCisjZGVmaW5lIFNlc3Np
b25UcmFja2VyX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBTZXNzaW9uVHJhY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Vzc2lvblRy
YWNrZXIpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBkZWZhdWx0U2Vzc2lv
bklEID0gMTsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgbGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCA9IDI7CisgICAgc3RhdGljIGJvb2wgaXNFcGhlbWVyYWxJRCh1aW50NjRfdCBzZXNzaW9uSUQp
IHsgcmV0dXJuIHNlc3Npb25JRCAhPSBTZXNzaW9uVHJhY2tlcjo6ZGVmYXVsdFNlc3Npb25JRDsg
fQorICAgIHN0YXRpYyBjb25zdCBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIGdldFNlc3Npb25NYXAoKTsKKyAgICBzdGF0
aWMgY29uc3QgU3RyaW5nJiBnZXRJZGVudGlmaWVyQmFzZSgpOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgc2Vzc2lvbih1aW50NjRf
dCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lTZXNzaW9uKHVpbnQ2NF90IHNl
c3Npb25JRCk7CisgICAgc3RhdGljIHZvaWQgc2V0SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5n
Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFNlc3Npb25UcmFj
a2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmNwcAppbmRleCA0MjMxMmJi
Li5jMmEyNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCkBAIC0y
NiwyMyArMjYsNjMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElTZXNzaW9u
LmgiCiAKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCiBuYW1lc3BhY2UgQVBJIHsKIAor
c3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSUQoYm9vbCBpc0VwaGVtZXJhbCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVNlc3Npb25J
RCA9IFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQ7CisgICAg
QVNTRVJUKGlzRXBoZW1lcmFsKTsKKyAgICByZXR1cm4gKyt1bmlxdWVTZXNzaW9uSUQ7Cit9CisK
K1Nlc3Npb24mIFNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCisgICAgc3RhdGljIFNlc3Npb24qIGRlZmF1bHRTZXNzaW9uID0gbmV3IFNl
c3Npb24oZmFsc2UsIFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQpOwor
ICAgIHJldHVybiAqZGVmYXVsdFNlc3Npb247Cit9CisKK1Nlc3Npb24mIFNlc3Npb246OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
c3RhdGljIFNlc3Npb24qIGxlZ2FjeVByaXZhdGVTZXNzaW9uID0gbmV3IFNlc3Npb24odHJ1ZSwg
V2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CisgICAgcmV0
dXJuICpsZWdhY3lQcml2YXRlU2Vzc2lvbjsKK30KKwogU2Vzc2lvbjo6U2Vzc2lvbihib29sIGlz
RXBoZW1lcmFsKQogICAgIDogbV9pc0VwaGVtZXJhbChpc0VwaGVtZXJhbCkKKyAgICAsIG1fc2Vz
c2lvbklEKGdlbmVyYXRlSUQoaXNFcGhlbWVyYWwpKQoreworfQorCitTZXNzaW9uOjpTZXNzaW9u
KGJvb2wgaXNFcGhlbWVyYWwsIHVpbnQ2NF90IHNlc3Npb25JRCkKKyAgICA6IG1faXNFcGhlbWVy
YWwoaXNFcGhlbWVyYWwpCisgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiB9CiAKIFBh
c3NSZWZQdHI8U2Vzc2lvbj4gU2Vzc2lvbjo6Y3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpCiB7Cisg
ICAgLy8gRklYTUU6IHN1cHBvcnQgY3JlYXRpb24gb2Ygbm9uLWRlZmF1bHQsIG5vbi1lcGhlbWVy
YWwgc2Vzc2lvbnMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlc3Npb24oaXNFcGhlbWVyYWwp
KTsKIH0KIAotYm9vbCBTZXNzaW9uOjppc0VwaGVtZXJhbCgpCitib29sIFNlc3Npb246OmlzRXBo
ZW1lcmFsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc0VwaGVtZXJhbDsKIH0KIAordWludDY0
X3QgU2Vzc2lvbjo6Z2V0SUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nlc3Npb25JRDsKK30K
KwogU2Vzc2lvbjo6flNlc3Npb24oKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNz
aW9uLmgKaW5kZXggM2ZiNWY2Ny4uZGY3MTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
U2Vzc2lvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVNlc3Npb25faAogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgQVBJIHsKQEAgLTM0LDEyICszNSwxNyBA
QCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIFNlc3Npb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpTZXNzaW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2Vzc2lvbj4gY3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpOwotICAgIGJvb2wgaXNFcGhl
bWVyYWwoKTsKKyAgICBzdGF0aWMgU2Vzc2lvbiYgZGVmYXVsdFNlc3Npb24oKTsKKyAgICBzdGF0
aWMgU2Vzc2lvbiYgbGVnYWN5UHJpdmF0ZVNlc3Npb24oKTsKKyAgICBib29sIGlzRXBoZW1lcmFs
KCkgY29uc3Q7CisgICAgdWludDY0X3QgZ2V0SUQoKSBjb25zdDsKICAgICB2aXJ0dWFsIH5TZXNz
aW9uKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Vzc2lvbihib29sIGlzRXBoZW1lcmFs
KTsKKyAgICBTZXNzaW9uKGJvb2wgaXNFcGhlbWVyYWwsIHVpbnQ2NF90IHNlc3Npb25JRCk7CiAg
ICAgYm9vbCBtX2lzRXBoZW1lcmFsOworICAgIHVpbnQ2NF90IG1fc2Vzc2lvbklEOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAK
aW5kZXggZTEwNTE1Yi4uNTRlZmI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNp
bmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAj
aW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgiCkBA
IC00NjcsMTYgKzQ2OCwxNiBAQCB2b2lkIFdlYkNvbnRleHQ6OnNldEFueVBhZ2VHcm91cE1pZ2h0
SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvdwogI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQ
cm9jZXNzKCkpIHsKICAgICAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAg
ICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAwKTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKSwgMCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAwKTsKKyAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJp
dmF0ZVNlc3Npb25JRCksIDApOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEVEKE5FVFdPUktfUFJP
Q0VTUykKIAogICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBzZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKSk7CisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJp
dmF0ZVNlc3Npb25JRCkpOwogICAgIGVsc2UKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKKyAg
ICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCkpOwogfQogCiB2b2lkICgqc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKShXS1N0cmluZ1JlZiBt
ZXNzYWdlTmFtZSk7CkBAIC01OTcsNyArNTk4LDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250
ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpJbml0aWFsaXplV2ViUHJvY2VzcyhwYXJhbWV0ZXJzLCBXZWJDb250ZXh0VXNl
ck1lc3NhZ2VFbmNvZGVyKGluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQo
KSwgKnByb2Nlc3MpKSwgMCk7CiAKICAgICBpZiAoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VHcm91
cHNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIDApOworICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKSwgMCk7
CiAKICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcyk7CiAKQEAgLTc0MCw3ICs3NDEsNyBA
QCBXZWJQcm9jZXNzUHJveHkmIFdlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0
aW5nUHJvY2Vzc0NvdW50TGltaXQoKQogICAgIHJldHVybiAqcmVzdWx0OwogfQogCi1QYXNzUmVm
UHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVk
UGFnZSkKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdl
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBBUEk6OlNl
c3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCiB7CiAgICAgUmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKICAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJv
Y2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgewpAQCAtNzU2LDcgKzc1NywxMiBAQCBQ
YXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBXZWJQYQogICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdX
ZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7CiAgICAgfQogCi0gICAgcmV0
dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgcGFnZUdyb3VwID8gKnBhZ2VH
cm91cCA6IG1fZGVmYXVsdFBhZ2VHcm91cC5nZXQoKSk7CisgICAgcmV0dXJuIHByb2Nlc3MtPmNy
ZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgcGFnZUdyb3VwID8gKnBhZ2VHcm91cCA6IG1fZGVmYXVs
dFBhZ2VHcm91cC5nZXQoKSwgc2Vzc2lvbik7Cit9CisKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5
PiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBh
Z2VHcm91cCogcGFnZUdyb3VwLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQoreworICAgIHJl
dHVybiBjcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHBhZ2VHcm91cCwgcGFnZUdyb3VwLT5wcmVm
ZXJlbmNlcygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBBUEk6OlNlc3Npb246OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uKCkgOiBBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCksIHJlbGF0
ZWRQYWdlKTsKIH0KIAogRG93bmxvYWRQcm94eSogV2ViQ29udGV4dDo6ZG93bmxvYWQoV2ViUGFn
ZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggYjk4YzQ4Ni4uZjZiOWYzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0xNDksNiArMTQ5LDcgQEAg
cHVibGljOgogCiAgICAgU3RvcmFnZU1hbmFnZXImIHN0b3JhZ2VNYW5hZ2VyKCkgY29uc3QgeyBy
ZXR1cm4gKm1fc3RvcmFnZU1hbmFnZXI7IH0KIAorICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5
PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlR3JvdXAqLCBBUEk6OlNlc3Npb24m
LCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gMCk7CiAgICAgUGFzc1JlZlB0cjxXZWJQYWdl
UHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFdlYlBhZ2VHcm91cCosIFdlYlBhZ2VQ
cm94eSogcmVsYXRlZFBhZ2UgPSAwKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5k
bGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZVBhdGg7IH0KQEAgLTI5Miw2
ICsyOTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgd2lsbFN0YXJ0VXNpbmdQcml2YXRl
QnJvd3NpbmcoKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsU3RvcFVzaW5nUHJpdmF0ZUJyb3dzaW5n
KCk7CiAKKyAgICBzdGF0aWMgYm9vbCBpc0VwaGVtZXJhbFNlc3Npb24odWludDY0X3Qgc2Vzc2lv
bklEKTsKKwogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0SWdub3JlVExTRXJyb3JzKGJvb2wp
OwogICAgIGJvb2wgaWdub3JlVExTRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVUTFNF
cnJvcnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
NzQ0YzFjNS4uNDFiYjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTIyOCwxMiArMjI4LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiB3ZWJLZXlib2Fy
ZEV2ZW50VHlwZVN0cmluZyhXZWJFdmVudDo6VHlwZSB0eXBlKQogfQogI2VuZGlmIC8vICFMT0df
RElTQUJMRUQKIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRl
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUGFn
ZUdyb3VwJiBwYWdlR3JvdXAsIHVpbnQ2NF90IHBhZ2VJRCkKK1Bhc3NSZWZQdHI8V2ViUGFnZVBy
b3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCBBUEk6OlNlc3Npb24m
IHNlc3Npb24sIHVpbnQ2NF90IHBhZ2VJRCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YlBhZ2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlR3JvdXAsIHBhZ2VJRCkpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZVByb3h5KHBhZ2VDbGllbnQsIHByb2Nlc3MsIHBh
Z2VHcm91cCwgc2Vzc2lvbiwgcGFnZUlEKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2ViUGFnZVBy
b3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vi
UGFnZUdyb3VwJiBwYWdlR3JvdXAsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAsIEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbiwgdWludDY0
X3QgcGFnZUlEKQogICAgIDogbV9wYWdlQ2xpZW50KHBhZ2VDbGllbnQpCiAgICAgLCBtX3Byb2Nl
c3MocHJvY2VzcykKICAgICAsIG1fcGFnZUdyb3VwKHBhZ2VHcm91cCkKQEAgLTI3OSw2ICsyNzks
NyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYgogICAgICwgbV9uZWVkVG91Y2hFdmVudHMoZmFs
c2UpCiAjZW5kaWYKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKKyAgICAsIG1fc2Vzc2lvbihzZXNz
aW9uKQogICAgICwgbV9pc1BhZ2VTdXNwZW5kZWQoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgICwgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNTbWFydElu
c2VydERlbGV0ZUVuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBkYjAwYWU0Li44M2EyYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYlBhZ2VQcm94eV9oCiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJBUElTZXNzaW9uLmgiCiAjaW5jbHVkZSAi
QXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJEcmFnQ29udHJvbGxlckFjdGlvbi5oIgpAQCAtNzQsNiArNzUsNyBAQAogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC0zMjcsMTAgKzMyOSwxMSBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgICwgcHVibGljIElQ
Qzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQ
YWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdy
b3VwJiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwg
QVBJOjpTZXNzaW9uJiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJv
eHkoKTsKIAogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9
CisgICAgdWludDY0X3Qgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLT5nZXRJ
RCgpOyB9CiAKICAgICBXZWJGcmFtZVByb3h5KiBtYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBt
X21haW5GcmFtZS5nZXQoKTsgfQogICAgIFdlYkZyYW1lUHJveHkqIGZvY3VzZWRGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9jdXNlZEZyYW1lLmdldCgpOyB9CkBAIC04NTUsNyArODU4LDcgQEAg
cHVibGljOgogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5n
QmVoYXZpb3IoKSB7IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQogICAgICAgICAK
IHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkm
LCBXZWJQYWdlR3JvdXAmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgQVBJOjpTZXNzaW9uJiwg
dWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCiAgICAg
dm9pZCB1cGRhdGVWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBk
YXRlID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7CkBAIC0xMzEyLDYgKzEzMTUsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBSZWY8QVBJ
OjpTZXNzaW9uPiBtX3Nlc3Npb247CiAKICAgICBib29sIG1faXNQYWdlU3VzcGVuZGVkOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDEwZjFh
YjAuLjQ3NjZiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xNjcsMTAgKzE2NywxMCBAQCBXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94
eTo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VNYXAoKS5n
ZXQocGFnZUlEKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAmIHBh
Z2VHcm91cCkKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0
ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAs
IEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICB1aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0
ZVBhZ2VJRCgpOwotICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJv
eHk6OmNyZWF0ZShwYWdlQ2xpZW50LCAqdGhpcywgcGFnZUdyb3VwLCBwYWdlSUQpOworICAgIFJl
ZlB0cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xp
ZW50LCAqdGhpcywgcGFnZUdyb3VwLCBzZXNzaW9uLCBwYWdlSUQpOwogICAgIG1fcGFnZU1hcC5z
ZXQocGFnZUlELCB3ZWJQYWdlLmdldCgpKTsKICAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHBhZ2VJ
RCwgd2ViUGFnZS5nZXQoKSk7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGEzYzkyOWMuLmM1NDUyNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpZm5kZWYgV2ViUHJvY2Vzc1Byb3h5X2gKICNkZWZpbmUgV2ViUHJvY2Vzc1Byb3h5X2gKIAor
I2luY2x1ZGUgIkFQSVNlc3Npb24uaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vz
c0lkZW50aWZpZXIuaCIKQEAgLTc3LDcgKzc4LDcgQEAgcHVibGljOgogICAgIFdlYkNvbnRleHQm
IGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KIAogICAgIHN0YXRpYyBXZWJQ
YWdlUHJveHkqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKLSAgICBQYXNzUmVmUHRyPFdlYlBh
Z2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwJik7CisgICAg
UGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFdlYlBh
Z2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYpOwogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdlKFdl
YlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCk7CiAgICAgVmVjdG9yPFdlYlBhZ2VQcm94eSo+IHBhZ2VzKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggY2I3Mjc0ZS4uMjg4YWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzg1LDYgKzc4NSw4IEBACiAJCTZFRTg0OUM4
MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4
MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjhFODZGMTE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29s
b3JQaWNrZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovOyB9
OwogCQk3MjhFODZGMjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZGMDE3OTUx
ODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi87IH07CisJCTc1M0UzRTBEMTg4
NzM5ODUwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTNFM0UwQjE4ODczOTczMDAxODg0OTYgLyogU2Vz
c2lvblRyYWNrZXIuY3BwICovOyB9OworCQk3NTNFM0UwRTE4ODczOTg5MDAxODg0OTYgLyogU2Vz
c2lvblRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc1M0UzRTA5MTg4NzM5NEIwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oICovOyB9Owog
CQk3NTU0MjJCRDE4MDYyQkIyMDA0NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJCOTE4MDYy
QjlDMDA0NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAgKi87IH07CiAJCTc1NTQyMkM0
MTgwNjJCRjkwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkJFMTgwNjJCRTQw
MDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcCAqLzsgfTsKIAkJNzU1NDIy
Q0IxODA2NTAwMjAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkM2MTgwNjRGRkMwMDQ2
RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAgKi87IH07CkBAIC0yNDY0LDYgKzI0NjYs
OCBAQAogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5zcGVjdG9yUHJpdmF0ZU1h
Yy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlF
IC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTc1M0UzRTA5MTg4NzM5NEIwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXNzaW9uVHJhY2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3NTNFM0UwQjE4ODczOTczMDAxODg0OTYgLyogU2Vzc2lvblRyYWNr
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vzc2lvblRyYWNr
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTU0MjJCOTE4MDYyQjlDMDA0
NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS09yaWdpbkRhdGFNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzU1NDIyQkExODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2luRGF0YU1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tPcmlnaW5EYXRhTWFuYWdl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTU0MjJCRTE4MDYyQkU0MDA0NkY2
QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MjQsNiArMzcyOCw4IEBACiAJCQkJMzMxNTI5NzQxMzBE
MENCMjAwRUQyNDgzIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5oICovLAogCQkJCTUxOEQyQ0M4MTJE
NTFERkIwMDNCQjkzQiAvKiBTZXNzaW9uU3RhdGUuY3BwICovLAogCQkJCTUxOEQyQ0M5MTJENTFE
RkIwMDNCQjkzQiAvKiBTZXNzaW9uU3RhdGUuaCAqLywKKwkJCQk3NTNFM0UwQjE4ODczOTczMDAx
ODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuY3BwICovLAorCQkJCTc1M0UzRTA5MTg4NzM5NEIwMDE4
ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oICovLAogCQkJCTFBNjQyMEUyMTJEQ0UyRkYwMENBQUUy
QyAvKiBTaGFyZWFibGVCaXRtYXAuY3BwICovLAogCQkJCTFBNjQyMEUzMTJEQ0UyRkYwMENBQUUy
QyAvKiBTaGFyZWFibGVCaXRtYXAuaCAqLywKIAkJCQk1MTIxNzQ1RTE2NEMyMEUzMDAzN0E1QzEg
LyogU2hhcmVhYmxlUmVzb3VyY2UuY3BwICovLApAQCAtNjY0NSw2ICs2NjUxLDcgQEAKIAkJCQlC
QzQwNzYxQzEyNEZGMDM3MDA2OEYyMEEgLyogV0tVUkxDRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM0MDc2MEMxMjRGRjAyNzAwNjhGMjBBIC8qIFdLVVJMUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM0MDc2MjkxMjRGRjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVxdWVzdE5TLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3NTNFM0UwRTE4ODczOTg5MDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjBFMTI0RkYwMjcwMDY4RjIwQSAvKiBXS1VSTFJl
c3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTlDQ0Q1QTE4MDhGNjE2MDA3OEU4QTggLyog
V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MkIx
MjRGRjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVzcG9uc2VOUy5oIGluIEhlYWRlcnMgKi8sCkBAIC03
OTAzLDYgKzc5MTAsNyBAQAogCQkJCUJDRDI1RjE4MTFENkJERTEwMDE2OUIwRSAvKiBXS0J1bmRs
ZUZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDk4NjMwMTI0RDE4QzEwMEQ4MzRFMSAv
KiBXS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjUwMUJEMUEx
MkYxMjQzNDAwRTlGMjQ4IC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTc1M0UzRTBEMTg4NzM5ODUwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzcwNDNDRDEyRjc1RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNEJFRkUyMTIwQTFBNEMwMEZCQTBD
NyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMDUyODIx
MUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKaW5kZXggMTY1MGI1NS4uZGJmMGNmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFj
a2VyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKQEAgLTI5OSw5ICsz
MDAsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdl
YlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvbwogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJv
Y2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE5ldHdvcmtQ
cm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTI3ND4u
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoU09VUCkKICAgICBp
ZiAoZW5hYmxlZCkKLSAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKTsKICAgICBlbHNlCi0gICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgICAgIFNlc3Npb25UcmFj
a2VyOjpkZXN0cm95U2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCk7CiAjZW5kaWYKICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBQYWdlR3JvdXA6
OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnBhZ2VzKCk7CiAgICAgZm9yIChI
YXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXRlciA9IHBhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0gcGFn
ZXMuZW5kKCk7ICsraXRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRl
eCA1NWMxZTUwLi41OTgxNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0
b3JlLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYkNvb2tpZU1hbmFnZXIuaCIKQEAgLTcyLDYgKzczLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIHVpbnQ2NF90IGxlZ2FjeVNl
c3Npb25JRChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24gJnNlc3Npb24pCit7CisgICAgcmV0
dXJuIHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkgPyBTZXNzaW9uVHJhY2tlcjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCA6IFNlc3Npb25UcmFja2VyOjpkZWZhdWx0U2Vzc2lvbklE
OworfQorCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlBsYXRmb3JtU3RyYXRlZ2llcz4gcGxhdGZvcm1TdHJh
dGVnaWVzOwpAQCAtMTMzLDcgKzEzOSw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uCiAjaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
c0ZvckRPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JE
T006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGxlZ2FjeVNlc3Npb25J
RChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0x
NDYsNyArMTUyLDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2kKIHsKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOworICAgICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShs
ZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwg
MCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTE1OSw3ICsxNjUsNyBAQCBi
b29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
aWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAg
IGJvb2wgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChzZXNzaW9uLmlzUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0VuYWJsZWQobGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVk
OjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xNzMsNyArMTc5LDcgQEAgU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2UKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNz
OjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0
OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLmlzUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShy
ZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobGVnYWN5U2Vz
c2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShy
ZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CkBAIC0xODYsNyArMTkyLDcgQEAgYm9vbCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LAogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6
c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoc2Vzc2lv
bi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdD
b29raWVzKSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMobGVnYWN5U2Vzc2lvbklEKHNlc3Npb24p
LCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTk5LDcgKzIwNSw3
IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsK
LSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVs
ZXRlQ29va2llKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIHVybCwgY29va2ll
TmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpEZWxldGVDb29raWUobGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCB1cmwsIGNvb2tp
ZU5hbWUpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDk1OTZjNTcuLjg2MjlmYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTM5
LDkgKzM5LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRQ
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYp
OwotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICBz
dGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIC8vIEZJWE1F
OiByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyCisg
ICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNz
aW9uSUQpOworCiAgICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29u
dGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKICAgICBXZWJGcmFtZUxvYWRlckNsaWVu
dCogd2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IGY4MDg2N2MuLjQ3NjJkZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtMjQsNiArMjQs
OCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlNlc3Npb25UcmFj
a2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC0zNCw1
MiArMzYsMjMgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlU2Vzc2lvbigpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBzZXNzaW9u
OwotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi1zdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFz
ZSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYmFzZTsKLSAgICByZXR1
cm4gYmFzZTsKLX0KICAgICAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmIGJh
c2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIGlkZW50aWZpZXJCYXNl
KCkgPSBiYXNlOwotfQotCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKQordm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYgKHByaXZhdGVTZXNzaW9uKCkpCisgICAg
aWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFN0cmluZyBiYXNlOwotICAgIGlmIChpZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKQor
ICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKICAg
ICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CiAg
ICAgZWxzZQotICAgICAgICBiYXNlID0gaWRlbnRpZmllckJhc2UoKTsKLQotICAgIHByaXZhdGVT
ZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oYmFzZSk7Ci19CisgICAgICAgIGJhc2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRp
ZmllckJhc2UoKTsKIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQot
ICAgIHByaXZhdGVTZXNzaW9uKCkgPSBudWxscHRyOworICAgIFNlc3Npb25UcmFja2VyOjpzZXNz
aW9uKHNlc3Npb25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oYmFzZSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRCkpOwogfQog
CiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZv
ckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQpAQCAtODksOCArNjIs
MTAgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xp
Y3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWMKICAgICBpZiAoUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKSkKICAgICAgICAgV0tTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiAKLSAgICBp
ZiAocHJpdmF0ZVNlc3Npb24oKSkKLSAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHByaXZhdGVTZXNzaW9uKCktPmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHNlc3Npb24gOiBTZXNzaW9uVHJhY2tlcjo6Z2V0U2Vzc2lvbk1hcCgp
LnZhbHVlcygpKSB7CisgICAgICAgIGlmIChzZXNzaW9uKQorICAgICAgICAgICAgV0tTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KHNlc3Npb24tPmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5
KTsKKyAgICB9CiB9CiAgICAgCiBib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QKQEAgLTEyNSwxMSArMTAwLDEwIEBAIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24o
KSBjb25zdAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoZnJhbWUoKSAm
JiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOworICAgICAgICByZXR1cm4gKlNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKTsKIAogICAg
IHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwog
fQotICAgIAogV2ViRnJhbWVMb2FkZXJDbGllbnQqIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OndlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWZyYW1lKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggZjk3
NDM0YS4uMTMwYWQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmNwcApAQCAtMzYsMjcgKzM2LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+JiBwcml2YXRlU2Vzc2lvbigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBzZXNzaW9uOwot
ICAgIHJldHVybiBzZXNzaW9uOwotfQotCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQordm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKHByaXZhdGVTZXNzaW9u
KCkpCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByaXZhdGVTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHByaXZhdGVTZXNzaW9uKCkgPSBudWxscHRyOwor
ICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkgPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSArICcuJyArIFN0cmluZzo6bnVt
YmVyKHNlc3Npb25JRCk7CiB9CiAKIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQoV2ViRnJhbWUqIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggMGUwMzU1Mi4uMjA0Y2NiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00Miw4ICs0
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7CisgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOwogCiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdl
YkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IDI5MWFiNGEuLjEyMmM0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2Vzc2lv
blRyYWNrZXIuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlVzZXJE
YXRhLmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKQEAgLTMzNSw3
ICszMzYsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZQogICAgICAgICBzZXRTaG91bGRVc2VG
b250U21vb3RoaW5nKHRydWUpOwogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JL
KQotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uSWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlm
aWVyKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51
aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAgaWYgKHBhcmFtZXRlcnMu
c2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKQpAQCAtNDUyLDE3ICs0NTMsMTcgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXli
b2FyZEFjY2Vzc0VuYWJsZWQpCiAgICAgbV9mdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID0gZnVs
bEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBV
U0UoQ0ZORVRXT1JLKSB8fCBVU0UoU09VUCkKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOwogI2VuZGlm
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQor
dm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBz
ZXNzaW9uSUQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0Uo
U09VUCkKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpOworICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9u
SUQpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggY2Q5OWJhMS4uMmE4NmY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKQEAgLTE2NSw5ICsxNjUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENhY2hlTW9kZWwo
dWludDMyX3QpOwogCi0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0g
ICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIAorICAgIHZvaWQg
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHZv
aWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKwog
ICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCBw
YWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxYzhmOGNiLi4yYTA3
OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC01MSw5ICs1MSw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKICNl
bmRpZgogCi0gICAgLy8gUHJpdmF0ZSBicm93c2luZyBzZXNzaW9uIGlzIHBlciBwcm9jZXNzLiBJ
bmRpdmlkdWFsIHBhZ2VzIG9yIHBhZ2UgZ3JvdXBzIG1heSB1c2UgdGhlIHByaXZhdGUgc2Vzc2lv
biBvciB0aGUgZGVmYXVsdCBvbmUgYXMgYXBwcm9wcmlhdGUuCi0gICAgRW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpCi0gICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQorICAg
IC8vIExlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gaXMgcGVyIHByb2Nlc3MuIEluZGl2
aWR1YWwgcGFnZXMgb3IgcGFnZSBncm91cHMgbWF5IHVzZSB0aGUgcHJpdmF0ZSBzZXNzaW9uIG9y
IHRoZSBkZWZhdWx0IG9uZSBhcyBhcHByb3ByaWF0ZS4KKyAgICBFbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKKyAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiAKICAgICAjIFBsdWctaW5zLgogICAgIERpZEFk
ZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWludDMyX3QgaGFzaCwgZG91YmxlIGV4cGlyYXRp
b25UaW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221516</attachid>
            <date>2014-01-17 17:23:50 -0800</date>
            <delta_ts>2014-01-18 11:24:05 -0800</delta_ts>
            <desc>more soup fixes</desc>
            <filename>sessionid.18.diff</filename>
            <type>text/plain</type>
            <size>63930</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjExNGRmZi4uNDk5YmM3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTIwNCw2ICsyMDQsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L1ByaW50SW5mby5jcHAKICAgICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAogICAgIFNo
YXJlZC9TZXNzaW9uU3RhdGUuY3BwCisgICAgU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAogICAg
IFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCiAgICAgU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAogICAgIFNoYXJlZC9TdGF0aXN0aWNzRGF0YS5jcHAKQEAgLTI5Myw2ICsyOTQsNyBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5m
b3JtYXRpb24uY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCisgICAg
VUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAK
ICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvRmluZElu
ZGljYXRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzNWViNWQwLi4zYjc3ZDI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTQgQEAKKzIwMTQtMDEtMTcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29t
PgorCisgICAgICAgIEZsZXNoIG91dCBzZXNzaW9uIEFQSXMgKHN0aWxsIG5vdCBlbmFibGVkIGF0
IEFQSSBsZXZlbCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjY5MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zy
b21ET00pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vz
c2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1Jl
bW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAg
KiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJU2Vzc2lvbi5jcHAuCisgICAgICAgIChXZWJLaXQ6OnNlc3Npb25NYXApOgor
ICAgICAgICAoV2ViS2l0OjppZGVudGlmaWVyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlNlc3Np
b25UcmFja2VyOjpnZXRTZXNzaW9uTWFwKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNr
ZXI6OmdldElkZW50aWZpZXJCYXNlKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6
OnNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Np
b24pOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2Up
OgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oLgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9u
VHJhY2tlcjo6aXNFcGhlbWVyYWxJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSVNlc3Npb24u
Y3BwOgorICAgICAgICAoQVBJOjpnZW5lcmF0ZUlEKToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6
ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbik6CisgICAgICAgIChBUEk6OlNlc3Npb246OlNlc3Npb24pOgorICAgICAgICAoQVBJOjpT
ZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpTZXNzaW9uOjppc0VwaGVtZXJhbCk6Cisg
ICAgICAgIChBUEk6OlNlc3Npb246OmdldElEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJU2Vz
c2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vz
c2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpsZWdhY3lTZXNz
aW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNG
b3JET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tp
ZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpp
bml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpk
ZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
CiAyMDE0LTAxLTE3ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIEFkZCBDU1MgR3JpZCBMYXlvdXQgYXMgZXhwZXJpbWVudGFsIGZlYXR1
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDk5YzExOGYuLjhhMzBiNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDQyLDYgKzQ0Miw4IEBAIHdlYmtpdDJf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
ZXNzaW9uVHJhY2tlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tl
ci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU3RhdGlzdGljc0RhdGEuaCBcCiAJU291cmNlL1dlYktpdDIvU2hh
cmVkL3NvdXAvU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAppbmRleCBmNTk5NDQ2Li5iMWRkNTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlc3Npb25U
cmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1Db29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVy
T3B0aW9ucy5oPgpAQCAtMTQ3LDEwICsxNDgsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1f
c2VyaWFsTG9hZGluZ0VuYWJsZWQgPSBlbmFibGVkOwogfQogCi1zdGF0aWMgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbihib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCitz
dGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbih1aW50NjRfdCBzZXNz
aW9uSUQpCiB7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0Ojpwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpp
c0VwaGVtZXJhbElEKHNlc3Npb25JRCkpIHsKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
KiBwcml2YXRlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkuZ2V0
KCk7CiAgICAgICAgIGlmIChwcml2YXRlU2Vzc2lvbikKICAgICAgICAgICAgIHJldHVybiAqcHJp
dmF0ZVNlc3Npb247CiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dz
aW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3
b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgpAQCAtMTYwLDkgKzE2
MSw5IEBAIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVp
bnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQodWludDY0X3Qgc2Vz
c2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiB7Ci0gICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyB3aXRoIHRoZSBwcml2YXRlIGJyb3dz
aW5nIGZsYWcuCisgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyB3aXRoIHRoZSBzZXNzaW9uIElE
LgogICAgIE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERv
d25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QpOwogfQogCkBAIC0xODIsMzQgKzE4MywzNCBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQodWludDY0X3QgbQogICAgIGxvYWRlci0+ZGlkQ29udmVydEhhbmRsZVRvRG93
bmxvYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2ll
c0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJl
c3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29v
a2llc0ZvckRPTShzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCBmaXJzdFBhcnR5LCB1cmwpOwog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00odWludDY0X3Qgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzdG9yYWdlU2Vz
c2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJp
bmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBib29sJiBy
ZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxl
ZCh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1
cmwsIGJvb2wmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxl
ZChzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJs
KTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0
cmluZyYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUodWludDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQg
PSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lvbihw
cml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBX
ZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJlc3Vs
dCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXModWlu
dDY0X3Qgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBW
ZWN0b3I8Q29va2llPiYgcmVzdWx0KQogewotICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc3Rv
cmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgcmVz
dWx0KTsKKyAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCksIGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBzZXNzaW9uSUQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6
ZGVsZXRlQ29va2llKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmws
IGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IEJsb2JS
ZWdpc3RyYXRpb25EYXRhJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggOTQ1
NzM3NS4uMzk4MWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC03NiwxNSArNzYs
MTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKICAg
ICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKHVpbnQzMl90IHJlc291cmNlTG9hZFByaW9yaXR5
KTsKICAgICB2b2lkIHNldFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc3Rh
cnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2Fk
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgc3RhcnREb3du
bG9hZCh1aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBk
b3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVzdWx0KTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNv
b2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sJiByZXN1bHQpOwotICAg
IHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIFN0cmluZyYgcmVzdWx0KTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdm9pZCBkZWxldGVD
b29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOworICAgIHZvaWQgY29va2llc0ZvckRPTSh1aW50NjRf
dCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00odWlu
dDY0X3Qgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0VuYWJsZWQodWlu
dDY0X3Qgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGJvb2wmIHJlc3VsdCk7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgZ2V0
UmF3Q29va2llcyh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAg
ICB2b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYpOwogICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHNyY1VSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IDdlODkwMzUuLmE0NTk3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zMiwxNSArMzIsMTUgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIAogICAg
IFNldFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgLT4gKCkKIAotICAgIFN0YXJ0
RG93bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCB1aW50NjRfdCBkb3dubG9hZElE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKKyAgICBTdGFydERvd25sb2FkKHVp
bnQ2NF90IHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVp
bnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmlu
ZyByZXN1bHQpCi0gICAgU2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNv
b2tpZVN0cmluZykKLSAgICBDb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoYm9vbCBl
bmFibGVkKQotICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwp
IC0+IChTdHJpbmcgcmVzdWx0KQotICAgIEdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4g
KFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5h
bWUpCisgICAgQ29va2llc0ZvckRPTSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBm
aXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKKyAgICBTZXRD
b29raWVzRnJvbURPTSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5
LCBXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNFbmFi
bGVkKHVpbnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6
OlVSTCB1cmwpIC0+IChib29sIGVuYWJsZWQpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUodWludDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29y
ZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpCisgICAgR2V0UmF3Q29va2llcyh1aW50NjRf
dCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAt
PiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKKyAgICBEZWxldGVDb29raWUodWlu
dDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAog
ICAgIFJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OkJsb2JSZWdpc3Ry
YXRpb25EYXRhIGRhdGEpCiAgICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpVUkwg
dXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGU1MDAwZjUuLjljMWMxY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3Rh
dGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJDb29raWVNYW5hZ2VyLmgiCkBAIC0xNTcsMTEgKzE1OCwxMiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZQogICAgIHNldENhY2hlTW9kZWwoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBhcmFt
ZXRlcnMuY2FjaGVNb2RlbCkpOwogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JL
KQotICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmll
cik7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQ
cm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBpbnN0ZWFk
IG9mIGhhbmRsaW5nIHRoaXMgaGVyZSwgYSBtZXNzYWdlIHNob3VsZCBiZSBzZW50IGxhdGVyIChz
Y2FsZXMgdG8gbXVsdGlwbGUgc2Vzc2lvbnMpCiAgICAgaWYgKHBhcmFtZXRlcnMucHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCkKLSAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQpOwogCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdv
cmtTZXNzaW9uKQogICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVz
dGluZ1Nlc3Npb24oKTsKQEAgLTIxMiwxNCArMjE0LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNlbmRpZgogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lv
bklEKQogewotICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCk7CisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVz
dHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotICAgIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAg
IFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNTQ4NGQ0OS4uYWQ1YThjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMDQsOCArMTA0
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZvaWQgaW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CiAgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwotICAg
IHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHZvaWQgZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3Qo
dWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKTsKICAgICB2b2lkIHNl
dENhY2hlTW9kZWwodWludDMyX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2YWQ2YzI1Li5jNGE3
MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzQsOCArMzQsOCBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgVXNlclByZWZlcnJlZExhbmd1YWdlc0No
YW5nZWQoVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzKQogI2VuZGlmCiAKLSAgICBFbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKLSAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
CisgICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCisg
ICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogCiAg
ICAgRG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KQogICAgIENhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQuaAppbmRleCBlZjI1ZjMwMS4uNWYzYmY3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCkBA
IC0zOSwxMSArMzksOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0KCk7CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lk
IGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotCi0gICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIC8vIEZJWE1FOiBy
ZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyCisgICAg
c3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9u
SUQpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3Q7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IGEz
ODI5ZTguLjEwNTliODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTI2LDYgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
aCIKIAorI2ltcG9ydCAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbXBvcnQgIldlYkVycm9ycy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UuaD4KQEAgLTM2LDEyICszNyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCi17Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+IHNlc3Npb247Ci0gICAgcmV0dXJuIHNlc3Np
b247Ci19CiAKIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojp+UmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQoKQogewpAQCAtNjUsNyArNjAsNyBAQCBib29sIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojps
b2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QKIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsK
ICAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7Ci0gICAgICAgIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb24gPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bigpLmdldCgpOworICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9u
ID0gU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQpLmdldCgpOwogICAgICAgICBpZiAocHJpdmF0ZVNlc3Npb24pCiAgICAgICAgICAg
ICByZXR1cm4gKnByaXZhdGVTZXNzaW9uOwogICAgICAgICAvLyBTb21lIHJlcXVlc3RzIHdpdGgg
cHJpdmF0ZSBicm93c2luZyBtb2RlIHJlcXVlc3RlZCBtYXkgc3RpbGwgYmUgY29taW5nIHNob3J0
bHkgYWZ0ZXIgTmV0d29ya1Byb2Nlc3Mgd2FzIHRvbGQgdG8gZGVzdHJveSBpdHMgc2Vzc2lvbi4K
QEAgLTc2LDExICs3MSw2IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKICAgICByZXR1cm4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAotTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
Ci17Ci0gICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkuZ2V0KCk7Ci19
Ci0KIFJldGFpblB0cjxDRkRhdGFSZWY+IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpzb3VyY2VB
cHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5pbDsKQEAgLTkxLDMy
ICs4MSwxMyBAQCBSZXNvdXJjZUVycm9yIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2Vk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgIHJldHVybiBXZWJLaXQ6OmJs
b2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAotc3RhdGljIFN0cmluZyYgcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBiYXNlOwotICAgIHJldHVy
biBiYXNlOwotfQotCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cikKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uSWRlbnRpZmllckJhc2UoKSA9IGlkZW50aWZpZXI7Ci19Ci0KLXZvaWQgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIGlm
IChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQorICAgIGlmIChTZXNzaW9uVHJhY2tl
cjo6c2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIXBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSk7Ci0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpICsgIi5Qcml2YXRlQnJvd3Npbmci
KS5jcmVhdGVDRlN0cmluZygpOwotCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
KSA9IHN0ZDo6bW92ZShOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24ocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpKSk7
Ci19Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkKLXsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVs
bHB0cjsKKyAgICBBU1NFUlQoIVNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlz
TnVsbCgpKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFj
a2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklE
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3Nv
dXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAppbmRleCAzYmVm
NTY0Li5kN2Y4ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9z
b3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCkBAIC01
MiwzMSArNTIsMTYgQEAgdWludDY0X3QgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmluaXRpYXRp
bmdQYWdlSUQoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNl
KGNvbnN0IFN0cmluZyYpCit2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17
Ci19Ci0KIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gJk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWMzYWEzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcApAQCAtMCwwICsxLDgxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFj
a2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3N0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPj4mIHNlc3Npb25NYXAoKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDx1aW50NjRfdCwgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+PiBtYXA7CisgICAgcmV0dXJuIG1h
cC5nZXQoKTsKK30KKworc3RhdGljIFN0cmluZyYgaWRlbnRpZmllckJhc2UoKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiBiYXNlOworICAgIHJldHVybiBiYXNlOworfQorCitjb25zdCBIYXNoTWFwPHVpbnQ2NF90LCBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIFNlc3Npb25UcmFja2VyOjpn
ZXRTZXNzaW9uTWFwKCkKK3sKKyAgICByZXR1cm4gc2Vzc2lvbk1hcCgpOworfQorCitjb25zdCBT
dHJpbmcmIFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpCit7CisgICAgcmV0dXJu
IGlkZW50aWZpZXJCYXNlKCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+JiBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCit7Cisg
ICAgcmV0dXJuIHNlc3Npb25NYXAoKS5hZGQoc2Vzc2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7Cit9CisKK3ZvaWQgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHVpbnQ2NF90
IHNlc3Npb25JRCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc2Vzc2lv
bk1hcCgpLnJlbW92ZShzZXNzaW9uSUQpOworfQorCit2b2lkIFNlc3Npb25UcmFja2VyOjpzZXRJ
ZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIGlkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TZXNzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJjNmUyMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNlc3Npb25UcmFja2VyX2gKKyNkZWZpbmUg
U2Vzc2lvblRyYWNrZXJfaAorCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFNlc3Npb25UcmFja2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZXNz
aW9uVHJhY2tlcik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGRlZmF1bHRT
ZXNzaW9uSUQgPSAxOworICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBsZWdhY3lQcml2YXRlU2Vz
c2lvbklEID0gMjsKKyAgICBzdGF0aWMgYm9vbCBpc0VwaGVtZXJhbElEKHVpbnQ2NF90IHNlc3Np
b25JRCkgeyByZXR1cm4gc2Vzc2lvbklEICE9IFNlc3Npb25UcmFja2VyOjpkZWZhdWx0U2Vzc2lv
bklEOyB9CisgICAgc3RhdGljIGNvbnN0IEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2V0U2Vzc2lvbk1hcCgpOworICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGdldElkZW50aWZpZXJCYXNlKCk7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBzZXNzaW9uKHVp
bnQ2NF90IHNlc3Npb25JRCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24odWludDY0
X3Qgc2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRJZGVudGlmaWVyQmFzZShjb25zdCBT
dHJpbmcmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gU2Vzc2lv
blRyYWNrZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCmluZGV4IDQy
MzEyYmIuLmMyYTI2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5jcHAK
QEAgLTI2LDIzICsyNiw2MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVNl
c3Npb24uaCIKIAorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKIG5hbWVzcGFjZSBBUEkg
ewogCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVJRChib29sIGlzRXBoZW1lcmFsKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlU2Vz
c2lvbklEID0gV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRDsK
KyAgICBBU1NFUlQoaXNFcGhlbWVyYWwpOworICAgIHJldHVybiArK3VuaXF1ZVNlc3Npb25JRDsK
K30KKworU2Vzc2lvbiYgU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBzdGF0aWMgU2Vzc2lvbiogZGVmYXVsdFNlc3Npb24gPSBu
ZXcgU2Vzc2lvbihmYWxzZSwgV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6ZGVmYXVsdFNlc3Npb25J
RCk7CisgICAgcmV0dXJuICpkZWZhdWx0U2Vzc2lvbjsKK30KKworU2Vzc2lvbiYgU2Vzc2lvbjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb24oKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
KyAgICBzdGF0aWMgU2Vzc2lvbiogbGVnYWN5UHJpdmF0ZVNlc3Npb24gPSBuZXcgU2Vzc2lvbih0
cnVlLCBXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKTsKKyAg
ICByZXR1cm4gKmxlZ2FjeVByaXZhdGVTZXNzaW9uOworfQorCiBTZXNzaW9uOjpTZXNzaW9uKGJv
b2wgaXNFcGhlbWVyYWwpCiAgICAgOiBtX2lzRXBoZW1lcmFsKGlzRXBoZW1lcmFsKQorICAgICwg
bV9zZXNzaW9uSUQoZ2VuZXJhdGVJRChpc0VwaGVtZXJhbCkpCit7Cit9CisKK1Nlc3Npb246OlNl
c3Npb24oYm9vbCBpc0VwaGVtZXJhbCwgdWludDY0X3Qgc2Vzc2lvbklEKQorICAgIDogbV9pc0Vw
aGVtZXJhbChpc0VwaGVtZXJhbCkKKyAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKIH0K
IAogUGFzc1JlZlB0cjxTZXNzaW9uPiBTZXNzaW9uOjpjcmVhdGUoYm9vbCBpc0VwaGVtZXJhbCkK
IHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBjcmVhdGlvbiBvZiBub24tZGVmYXVsdCwgbm9uLWVw
aGVtZXJhbCBzZXNzaW9ucwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Vzc2lvbihpc0VwaGVt
ZXJhbCkpOwogfQogCi1ib29sIFNlc3Npb246OmlzRXBoZW1lcmFsKCkKK2Jvb2wgU2Vzc2lvbjo6
aXNFcGhlbWVyYWwoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzRXBoZW1lcmFsOwogfQogCit1
aW50NjRfdCBTZXNzaW9uOjpnZXRJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbklE
OworfQorCiBTZXNzaW9uOjp+U2Vzc2lvbigpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SVNlc3Npb24uaAppbmRleCAzZmI1ZjY3Li5kZjcxNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUElTZXNzaW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQVBJU2Vzc2lvbl9oCiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtMzQsMTIgKzM1
LDE3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgU2Vzc2lvbiA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNlc3Npb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZXNzaW9uPiBjcmVhdGUoYm9vbCBpc0VwaGVtZXJhbCk7Ci0gICAgYm9vbCBp
c0VwaGVtZXJhbCgpOworICAgIHN0YXRpYyBTZXNzaW9uJiBkZWZhdWx0U2Vzc2lvbigpOworICAg
IHN0YXRpYyBTZXNzaW9uJiBsZWdhY3lQcml2YXRlU2Vzc2lvbigpOworICAgIGJvb2wgaXNFcGhl
bWVyYWwoKSBjb25zdDsKKyAgICB1aW50NjRfdCBnZXRJRCgpIGNvbnN0OwogICAgIHZpcnR1YWwg
flNlc3Npb24oKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXNzaW9uKGJvb2wgaXNFcGhl
bWVyYWwpOworICAgIFNlc3Npb24oYm9vbCBpc0VwaGVtZXJhbCwgdWludDY0X3Qgc2Vzc2lvbklE
KTsKICAgICBib29sIG1faXNFcGhlbWVyYWw7CisgICAgdWludDY0X3QgbV9zZXNzaW9uSUQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcAppbmRleCBlMTA1MTViLi41NGVmYjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEu
aCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldLQ29udGV4dFByaXZhdGUu
aCIKQEAgLTQ2NywxNiArNDY4LDE2IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0QW55UGFnZUdyb3Vw
TWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93CiAjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbmV0
d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIDApOworICAgICAgICAgICAgbmV0d29y
a1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpLCAw
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIDAp
OworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKSwgMCk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRUQoTkVUV09S
S19QUk9DRVNTKQogCiAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpKTsKKyAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKSk7CiAgICAgZWxzZQotICAgICAgICBzZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkp
OworICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKSk7CiB9CiAKIHZvaWQgKCpzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2spKFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lKTsKQEAgLTU5Nyw3ICs1OTgsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkluaXRpYWxpemVXZWJQcm9jZXNzKHBhcmFtZXRlcnMsIFdlYkNvbnRl
eHRVc2VyTWVzc2FnZUVuY29kZXIoaW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
LmdldCgpLCAqcHJvY2VzcykpLCAwKTsKIAogICAgIGlmIChXZWJQcmVmZXJlbmNlczo6YW55UGFn
ZUdyb3Vwc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQp
LCAwKTsKIAogICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKIApAQCAtNzQwLDcgKzc0
MSw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzc1Jl
c3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpCiAgICAgcmV0dXJuICpyZXN1bHQ7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGll
bnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJQYWdlUHJveHkqIHJl
bGF0ZWRQYWdlKQorUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIEFQ
STo6U2Vzc2lvbiYgc2Vzc2lvbiwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKIHsKICAgICBS
ZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzOwogICAgIGlmIChtX3Byb2Nlc3NNb2RlbCA9
PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7CkBAIC03NTYsNyArNzU3LDEy
IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhCiAgICAgICAgICAgICBwcm9jZXNzID0gJmNyZWF0
ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBwYWdlR3JvdXAgPyAq
cGFnZUdyb3VwIDogbV9kZWZhdWx0UGFnZUdyb3VwLmdldCgpKTsKKyAgICByZXR1cm4gcHJvY2Vz
cy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBwYWdlR3JvdXAgPyAqcGFnZUdyb3VwIDogbV9k
ZWZhdWx0UGFnZUdyb3VwLmdldCgpLCBzZXNzaW9uKTsKK30KKworUGFzc1JlZlB0cjxXZWJQYWdl
UHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwg
V2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCit7Cisg
ICAgcmV0dXJuIGNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgcGFnZUdyb3VwLCBwYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSA/IEFQSTo6U2Vzc2lvbjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb24oKSA6IEFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKSwg
cmVsYXRlZFBhZ2UpOwogfQogCiBEb3dubG9hZFByb3h5KiBXZWJDb250ZXh0Ojpkb3dubG9hZChX
ZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCBiOThjNDg2Li5mNmI5
ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTE0OSw2ICsxNDks
NyBAQCBwdWJsaWM6CiAKICAgICBTdG9yYWdlTWFuYWdlciYgc3RvcmFnZU1hbmFnZXIoKSBjb25z
dCB7IHJldHVybiAqbV9zdG9yYWdlTWFuYWdlcjsgfQogCisgICAgUGFzc1JlZlB0cjxXZWJQYWdl
UHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFdlYlBhZ2VHcm91cCosIEFQSTo6U2Vz
c2lvbiYsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UgPSAwKTsKICAgICBQYXNzUmVmUHRyPFdl
YlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwKiwgV2Vi
UGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IDApOwogCiAgICAgY29uc3QgU3RyaW5nJiBpbmplY3Rl
ZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQpAQCAt
MjkyLDYgKzI5Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB3aWxsU3RhcnRVc2luZ1By
aXZhdGVCcm93c2luZygpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxTdG9wVXNpbmdQcml2YXRlQnJv
d3NpbmcoKTsKIAorICAgIHN0YXRpYyBib29sIGlzRXBoZW1lcmFsU2Vzc2lvbih1aW50NjRfdCBz
ZXNzaW9uSUQpOworCiAjaWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMo
Ym9vbCk7CiAgICAgYm9vbCBpZ25vcmVUTFNFcnJvcnMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9y
ZVRMU0Vycm9yczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA3NDRjMWM1Li40MWJiNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMjI4LDEyICsyMjgsMTIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHdlYktl
eWJvYXJkRXZlbnRUeXBlU3RyaW5nKFdlYkV2ZW50OjpUeXBlIHR5cGUpCiB9CiAjZW5kaWYgLy8g
IUxPR19ESVNBQkxFRAogCi1QYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5Ojpj
cmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBX
ZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCwgdWludDY0X3QgcGFnZUlEKQorUGFzc1JlZlB0cjxXZWJQ
YWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAsIEFQSTo6U2Vz
c2lvbiYgc2Vzc2lvbiwgdWludDY0X3QgcGFnZUlEKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViUGFnZVByb3h5KHBhZ2VDbGllbnQsIHByb2Nlc3MsIHBhZ2VHcm91cCwgcGFnZUlEKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2Vz
cywgcGFnZUdyb3VwLCBzZXNzaW9uLCBwYWdlSUQpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
LCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCwgdWludDY0X3QgcGFnZUlEKQorV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCB1
aW50NjRfdCBwYWdlSUQpCiAgICAgOiBtX3BhZ2VDbGllbnQocGFnZUNsaWVudCkKICAgICAsIG1f
cHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9wYWdlR3JvdXAocGFnZUdyb3VwKQpAQCAtMjc5LDYg
KzI3OSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViCiAgICAgLCBtX25lZWRUb3VjaEV2ZW50
cyhmYWxzZSkKICNlbmRpZgogICAgICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9zZXNzaW9u
KHNlc3Npb24pCiAgICAgLCBtX2lzUGFnZVN1c3BlbmRlZChmYWxzZSkKICNpZiBQTEFURk9STShN
QUMpCiAgICAgLCBtX2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKFRleHRDaGVja2VyOjppc1Nt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IGRiMDBhZTQuLjgzYTJhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViUGFnZVByb3h5X2gK
IAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkFQSVNlc3Npb24uaCIKICNpbmNs
dWRlICJBdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIkRyYWdDb250cm9sbGVyQWN0aW9uLmgiCkBAIC03NCw2ICs3NSw3IEBACiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTMyNywxMCArMzI5LDExIEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgLCBwdWJs
aWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQ
YWdlR3JvdXAmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBh
Z2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlR3Jv
dXAmLCBBUEk6OlNlc3Npb24mLCB1aW50NjRfdCBwYWdlSUQpOwogICAgIHZpcnR1YWwgfldlYlBh
Z2VQcm94eSgpOwogCiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
SUQ7IH0KKyAgICB1aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24t
PmdldElEKCk7IH0KIAogICAgIFdlYkZyYW1lUHJveHkqIG1haW5GcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFpbkZyYW1lLmdldCgpOyB9CiAgICAgV2ViRnJhbWVQcm94eSogZm9jdXNlZEZyYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9mb2N1c2VkRnJhbWUuZ2V0KCk7IH0KQEAgLTg1NSw3ICs4NTgs
NyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBp
bm5pbmdCZWhhdmlvcigpIHsgcmV0dXJuIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CiAgICAg
ICAgIAogcHJpdmF0ZToKLSAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQ
cm94eSYsIFdlYlBhZ2VHcm91cCYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlR3JvdXAmLCBBUEk6OlNlc3Np
b24mLCB1aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAK
ICAgICB2b2lkIHVwZGF0ZVZpZXdTdGF0ZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGZsYWdz
VG9VcGRhdGUgPSBXZWJDb3JlOjpWaWV3U3RhdGU6OkFsbEZsYWdzKTsKQEAgLTEzMTIsNiArMTMx
NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFJl
ZjxBUEk6OlNlc3Npb24+IG1fc2Vzc2lvbjsKIAogICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5kZWQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
MTBmMWFiMC4uNDc2NmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKQEAgLTE2NywxMCArMTY3LDEwIEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vz
c1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1h
cCgpLmdldChwYWdlSUQpOwogfQogCi1QYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91
cCYgcGFnZUdyb3VwKQorUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAmIHBhZ2VH
cm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGdl
bmVyYXRlUGFnZUlEKCk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBh
Z2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlR3JvdXAsIHBhZ2VJRCk7Cisg
ICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBh
Z2VDbGllbnQsICp0aGlzLCBwYWdlR3JvdXAsIHNlc3Npb24sIHBhZ2VJRCk7CiAgICAgbV9wYWdl
TWFwLnNldChwYWdlSUQsIHdlYlBhZ2UuZ2V0KCkpOwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQo
cGFnZUlELCB3ZWJQYWdlLmdldCgpKTsKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTNjOTI5Yy4uYzU0NTI3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMjYsNiArMjYs
NyBAQAogI2lmbmRlZiBXZWJQcm9jZXNzUHJveHlfaAogI2RlZmluZSBXZWJQcm9jZXNzUHJveHlf
aAogCisjaW5jbHVkZSAiQVBJU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Q
cm9jZXNzSWRlbnRpZmllci5oIgpAQCAtNzcsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29u
dGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCiAgICAgc3RhdGlj
IFdlYlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIFBhc3NSZWZQdHI8
V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlR3JvdXAmKTsK
KyAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50Jiwg
V2ViUGFnZUdyb3VwJiwgQVBJOjpTZXNzaW9uJik7CiAgICAgdm9pZCBhZGRFeGlzdGluZ1dlYlBh
Z2UoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJlbW92ZVdlYlBh
Z2UodWludDY0X3QgcGFnZUlEKTsKICAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcGFnZXMoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBjYjcyNzRlLi4yODhhZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03ODUsNiArNzg1LDggQEAKIAkJNkVF
ODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVFODQ5QzYxMzY4RDkyRDAw
MzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOEU4NkYxMTc5NTE4OEMwMDg3ODc5RSAvKiBX
ZWJDb2xvclBpY2tlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmgg
Ki87IH07CiAJCTcyOEU4NkYyMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOEU4NkYw
MTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLzsgfTsKKwkJNzUzRTNF
MEQxODg3Mzk4NTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1M0UzRTBCMTg4NzM5NzMwMDE4ODQ5NiAv
KiBTZXNzaW9uVHJhY2tlci5jcHAgKi87IH07CisJCTc1M0UzRTBFMTg4NzM5ODkwMDE4ODQ5NiAv
KiBTZXNzaW9uVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzUzRTNFMDkxODg3Mzk0QjAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggKi87
IH07CiAJCTc1NTQyMkJEMTgwNjJCQjIwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkI5
MTgwNjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNzU1
NDIyQzQxODA2MkJGOTAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1NDIyQkUxODA2
MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwICovOyB9OwogCQk3
NTU0MjJDQjE4MDY1MDAyMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1NDIyQzYxODA2NEZG
QzAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcCAqLzsgfTsKQEAgLTI0NjQsNiAr
MjQ2Niw4IEBACiAJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZh
dGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbnNwZWN0b3JQcml2
YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBp
Y2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tl
ck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4
Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzUzRTNFMDkxODg3Mzk0QjAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlc3Npb25UcmFja2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1M0UzRTBCMTg4NzM5NzMwMDE4ODQ5NiAvKiBTZXNzaW9u
VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXNzaW9u
VHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTQyMkI5MTgwNjJC
OUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLT3JpZ2luRGF0YU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NTU0MjJCQTE4MDYyQjlDMDA0NkY2QTggLyogV0tPcmlnaW5EYXRh
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS09yaWdpbkRhdGFN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTQyMkJFMTgwNjJCRTQw
MDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzcyNCw2ICszNzI4LDggQEAKIAkJCQkzMzE1Mjk3
NDEzMEQwQ0IyMDBFRDI0ODMgLyogU2VjdXJpdHlPcmlnaW5EYXRhLmggKi8sCiAJCQkJNTE4RDJD
QzgxMkQ1MURGQjAwM0JCOTNCIC8qIFNlc3Npb25TdGF0ZS5jcHAgKi8sCiAJCQkJNTE4RDJDQzkx
MkQ1MURGQjAwM0JCOTNCIC8qIFNlc3Npb25TdGF0ZS5oICovLAorCQkJCTc1M0UzRTBCMTg4NzM5
NzMwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5jcHAgKi8sCisJCQkJNzUzRTNFMDkxODg3Mzk0
QjAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggKi8sCiAJCQkJMUE2NDIwRTIxMkRDRTJGRjAw
Q0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgKi8sCiAJCQkJMUE2NDIwRTMxMkRDRTJGRjAw
Q0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5oICovLAogCQkJCTUxMjE3NDVFMTY0QzIwRTMwMDM3
QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgKi8sCkBAIC02NjQ1LDYgKzY2NTEsNyBAQAog
CQkJCUJDNDA3NjFDMTI0RkYwMzcwMDY4RjIwQSAvKiBXS1VSTENGLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzQwNzYwQzEyNEZGMDI3MDA2OEYyMEEgLyogV0tVUkxSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzQwNzYyOTEyNEZGMDQwMDA2OEYyMEEgLyogV0tVUkxSZXF1ZXN0TlMuaCBp
biBIZWFkZXJzICovLAorCQkJCTc1M0UzRTBFMTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNzaW9uVHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MEUxMjRGRjAyNzAwNjhGMjBBIC8qIFdL
VVJMUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1OUNDRDVBMTgwOEY2MTYwMDc4RThB
OCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQw
NzYyQjEyNEZGMDQwMDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLmggaW4gSGVhZGVycyAqLywK
QEAgLTc5MDMsNiArNzkxMCw3IEBACiAJCQkJQkNEMjVGMTgxMUQ2QkRFMTAwMTY5QjBFIC8qIFdL
QnVuZGxlRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0OTg2MzAxMjREMThDMTAwRDgz
NEUxIC8qIFdLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTAx
QkQxQTEyRjEyNDM0MDBFOUYyNDggLyogV0tCdW5kbGVJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNzUzRTNFMEQxODg3Mzk4NTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDNzA0M0NEMTJGNzVFRTAwMDY0NzJCOSAvKiBXS0J1bmRsZU5h
dmlnYXRpb25BY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0QkVGRTIxMjBBMUE0QzAw
RkJBMEM3IC8qIFdLQnVuZGxlTm9kZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIw
NTI4MjExQzk0Mjg0MDA4RjMzNzUgLyogV0tCdW5kbGVQYWdlLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAxNjUwYjU1Li5kYmYwY2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2Vzc2lv
blRyYWNrZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIgpAQCAtMjk5
LDkgKzMwMCw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vCiAgICAgLy8gRklYTUUgKE5ldHdv
cmtQcm9jZXNzKTogVGhpcyB0ZXN0LW9ubHkgZnVuY3Rpb24gZG9lc24ndCB3b3JrIHdpdGggTmV0
d29ya1Byb2Nlc3MsIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1
Mjc0Pi4KICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQog
ICAgIGlmIChlbmFibGVkKQotICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQpOwogICAgIGVsc2UKLSAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICAgICAgU2Vzc2lv
blRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKTsKICNlbmRpZgogICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VH
cm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKTsKICAgICBm
b3IgKEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpdGVyID0gcGFnZXMuYmVnaW4oKTsgaXRlciAh
PSBwYWdlcy5lbmQoKTsgKytpdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CmluZGV4IDU1YzFlNTAuLjU5ODE3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5J
bmZvU3RvcmUuaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgpAQCAtNzIsNiArNzMsMTEgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgdWludDY0X3QgbGVn
YWN5U2Vzc2lvbklEKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiAmc2Vzc2lvbikKK3sKKyAg
ICByZXR1cm4gc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSA/IFNlc3Npb25UcmFj
a2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEIDogU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNz
aW9uSUQ7Cit9CisKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCkKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViUGxhdGZvcm1TdHJhdGVnaWVzPiBwbGF0Zm9y
bVN0cmF0ZWdpZXM7CkBAIC0xMzMsNyArMTM5LDcgQEAgU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24K
ICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQo
KS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVzRm9yRE9NKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFy
dHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
c0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00obGVnYWN5U2Vz
c2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQogICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
QEAgLTE0Niw3ICsxNTIsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2ll
c0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaQogewogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3
b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25u
ZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7CisgICAgICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9t
RE9NKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJp
bmcpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMTU5LDcgKzE2NSw3
IEBAIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAg
ICAgICAgYm9vbCByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKHNlc3Npb24uaXNQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQor
ICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVzRW5hYmxlZChsZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHks
IHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Vu
YWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE3Myw3ICsxNzksNyBAQCBTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBO
ZXR3b3JrU3RvcmFnZQogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyBy
ZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24uaXNQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJl
cGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShsZWdh
Y3lTZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJl
cGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE4Niw3ICsxOTIsNyBAQCBib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vz
czo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhz
ZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5
KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhsZWdhY3lTZXNzaW9uSUQoc2Vz
c2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xOTksNyAr
MjA1LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGMKIHsKICNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3Mo
KSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpEZWxldGVDb29raWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgdXJsLCBj
b29raWVOYW1lKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25u
ZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShsZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIHVybCwg
Y29va2llTmFtZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggOTU5NmM1Ny4uODYy
OWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApA
QCAtMzksOSArMzksOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lk
IHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3Ry
aW5nJik7Ci0gICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwot
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgLy8g
RklYTUU6IHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lvblRyYWNr
ZXIKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90
IHNlc3Npb25JRCk7CisKICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JB
bGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogICAgIFdlYkZyYW1lTG9hZGVy
Q2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggZjgwODY3Yy4uNDc2MmRlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0yNCw2
ICsyNCw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiU2Vzc2lv
blRyYWNrZXIuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAg
LTM0LDUyICszNiwyMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVTZXNzaW9uKCkKLXsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+IHNl
c3Npb247Ci0gICAgcmV0dXJuIHNlc3Npb247Ci19Ci0KLXN0YXRpYyBTdHJpbmcmIGlkZW50aWZp
ZXJCYXNlKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBiYXNlOwotICAg
IHJldHVybiBiYXNlOwotfQogICAgIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
ZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmlu
ZyYgYmFzZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWRlbnRpZmll
ckJhc2UoKSA9IGJhc2U7Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBpZiAocHJpdmF0ZVNlc3Npb24oKSkK
KyAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgU3RyaW5nIGJhc2U7Ci0gICAgaWYgKGlkZW50aWZpZXJCYXNlKCkuaXNOdWxs
KCkpCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgp
KQogICAgICAgICBiYXNlID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVy
XTsKICAgICBlbHNlCi0gICAgICAgIGJhc2UgPSBpZGVudGlmaWVyQmFzZSgpOwotCi0gICAgcHJp
dmF0ZVNlc3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihiYXNlKTsKLX0KKyAgICAgICAgYmFzZSA9IFNlc3Npb25UcmFja2VyOjpnZXRJ
ZGVudGlmaWVyQmFzZSgpOwogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotCi0gICAgcHJpdmF0ZVNlc3Npb24oKSA9IG51bGxwdHI7CisgICAgU2Vzc2lvblRyYWNrZXI6
OnNlc3Npb24oc2Vzc2lvbklEKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklEKSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9s
aWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCkBAIC04OSw4
ICs2MiwxMCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2Vw
dFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBYwogICAgIGlmIChSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQogICAgICAgICBXS1Nl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIAot
ICAgIGlmIChwcml2YXRlU2Vzc2lvbigpKQotICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kocHJpdmF0ZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwor
ICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvbiA6IFNlc3Npb25UcmFja2VyOjpnZXRTZXNzaW9u
TWFwKCkudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHNlc3Npb24pCisgICAgICAgICAgICBXS1Nl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koc2Vzc2lvbi0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBw
b2xpY3kpOworICAgIH0KIH0KICAgICAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdApAQCAtMTI1LDExICsxMDAsMTAgQEAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vz
c2lvbigpIGNvbnN0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChmcmFt
ZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAg
ICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CisgICAgICAgIHJldHVybiAqU2Vzc2lvblRy
YWNrZXI6OnNlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpOwog
CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCk7CiB9Ci0gICAgCiBXZWJGcmFtZUxvYWRlckNsaWVudCogV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6d2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdAogewogICAgIGlmICghZnJhbWUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291
cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAppbmRl
eCBmOTc0MzRhLi40YWE5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogCisjaW5jbHVkZSAiU2Vz
c2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CkBAIC0zNiwyNyArMzcsMTQgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVTZXNzaW9uKCkKLXsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4+IHNlc3Npb247Ci0gICAgcmV0dXJuIHNlc3Npb247Ci19Ci0KLXZvaWQgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lk
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
dWludDY0X3Qgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICBpZiAocHJpdmF0ZVNlc3Npb24oKSkKKyAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24o
c2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdmF0ZVNlc3Npb24oKSA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotfQot
Ci12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgcHJpdmF0ZVNl
c3Npb24oKSA9IG51bGxwdHI7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklE
KSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihT
dHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKTsKIH0KIAogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUpCkBAIC03MCw3ICs1
OCw3IEBAIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQoV2ViRnJhbWUqIGZyYW1lKQogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lKCkg
JiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCi0gICAgICAg
IHJldHVybiAqcHJpdmF0ZVNlc3Npb24oKTsKKyAgICAgICAgcmV0dXJuICpTZXNzaW9uVHJhY2tl
cjo6c2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CiAKICAg
ICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
c291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4
IDBlMDM1NTIuLjIwNGNjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaApAQCAtNDIsOCArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICBzdGF0
aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIHN0YXRpYyB2b2lk
IGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKIAogICAg
IFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAyOTFhYjRhLi4xMjJj
NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGlj
c0RhdGEuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmgiCkBAIC0zMzUsNyArMzM2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0
aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWUKICAgICAgICAgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyh0cnVlKTsKIAogI2lmIFBMQVRG
T1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKHBhcmFtZXRl
cnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldElk
ZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5k
aWYKIAogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikK
QEAgLTQ1MiwxNyArNDUzLDE3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNz
TW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQogICAgIG1fZnVsbEtl
eWJvYXJkQWNjZXNzRW5hYmxlZCA9IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIFdlYlBy
b2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQog
ewogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
OworICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewogI2lmIFBMQVRGT1JNKE1BQykg
fHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBTZXNzaW9uVHJhY2tl
cjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGNkOTliYTEuLjJhODZmNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xNjUsOSArMTY1LDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKIAotICAgIHZvaWQgZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKTsKLSAgICAKKyAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWlu
dDY0X3Qgc2Vzc2lvbklEKTsKKyAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCk7CisKICAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyh1aW50
NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdl
SUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMWM4ZjhjYi4uMmEwNzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTEsOSArNTEsOSBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRJZ25vcmVUTFNFcnJvcnMo
Ym9vbCBpZ25vcmVUTFNFcnJvcnMpCiAjZW5kaWYKIAotICAgIC8vIFByaXZhdGUgYnJvd3Npbmcg
c2Vzc2lvbiBpcyBwZXIgcHJvY2Vzcy4gSW5kaXZpZHVhbCBwYWdlcyBvciBwYWdlIGdyb3VwcyBt
YXkgdXNlIHRoZSBwcml2YXRlIHNlc3Npb24gb3IgdGhlIGRlZmF1bHQgb25lIGFzIGFwcHJvcHJp
YXRlLgotICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotICAgIERlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKKyAgICAvLyBMZWdhY3kgcHJpdmF0ZSBicm93c2luZyBzZXNz
aW9uIGlzIHBlciBwcm9jZXNzLiBJbmRpdmlkdWFsIHBhZ2VzIG9yIHBhZ2UgZ3JvdXBzIG1heSB1
c2UgdGhlIHByaXZhdGUgc2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUgYXMgYXBwcm9wcmlhdGUu
CisgICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCisg
ICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogCiAg
ICAgIyBQbHVnLWlucy4KICAgICBEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVpbnQz
Ml90IGhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221559</attachid>
            <date>2014-01-18 11:24:05 -0800</date>
            <delta_ts>2014-01-18 12:20:43 -0800</delta_ts>
            <desc>test fixes + EFL build fix</desc>
            <filename>sessionid-fix.01.diff</filename>
            <type>text/plain</type>
            <size>65450</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjExNGRmZi4uNDk5YmM3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTIwNCw2ICsyMDQsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L1ByaW50SW5mby5jcHAKICAgICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAogICAgIFNo
YXJlZC9TZXNzaW9uU3RhdGUuY3BwCisgICAgU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAogICAg
IFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCiAgICAgU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAogICAgIFNoYXJlZC9TdGF0aXN0aWNzRGF0YS5jcHAKQEAgLTI5Myw2ICsyOTQsNyBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5m
b3JtYXRpb24uY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCisgICAg
VUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAK
ICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvRmluZElu
ZGljYXRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMzA0N2ExLi40MjExNmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTYgQEAKKzIwMTQtMDEtMTggIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29t
PgorCisgICAgICAgIEZsZXNoIG91dCBzZXNzaW9uIEFQSXMgKHN0aWxsIG5vdCBlbmFibGVkIGF0
IEFQSSBsZXZlbCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjY5MTgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29r
aWVzRnJvbURPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tp
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAg
ICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmNwcC4KKyAgICAgICAgKFdlYktpdDo6c2Vzc2lvbk1h
cCk6CisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJCYXNlKToKKyAgICAgICAgKFdlYktpdDo6
U2Vzc2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXApOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9u
VHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJh
Y2tlcjo6c2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpkZXN0cm95
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVy
QmFzZSk6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmguCisgICAgICAgIChXZWJLaXQ6OlNl
c3Npb25UcmFja2VyOjppc0VwaGVtZXJhbElEKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tp
ZVN0b3JhZ2VTaGltLmNwcDoKKyAgICAgICAgKFdlYktpdDo6d2ViS2l0Q29va2llU3RvcmFnZUNv
cHlSZXF1ZXN0SGVhZGVyRmllbGRzRm9yVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJU2Vz
c2lvbi5jcHA6CisgICAgICAgIChBUEk6OmdlbmVyYXRlSUQpOgorICAgICAgICAoQVBJOjpTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbik6CisgICAgICAgIChBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZh
dGVTZXNzaW9uKToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6U2Vzc2lvbik6CisgICAgICAgIChB
UEk6OlNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlNlc3Npb246OmlzRXBoZW1lcmFs
KToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6Z2V0SUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UElTZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJv
d3NpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXNzaW9uSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpz
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2Fj
eVNlc3Npb25JRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29va2llc0Zyb21ET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW46CisKIDIwMTQtMDEtMTggIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogUGFnZSBzaG91bGQgdXNlIHN0ZDo6dW5pcXVlX3B0ciBmb3IgSW5z
cGVjdG9yQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTljMTE4
Zi4uOGEzMGI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NDIsNiArNDQy
LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2VjdXJp
dHlPcmlnaW5EYXRhLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBcCisJU291cmNlL1dl
YktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVk
L1Nlc3Npb25UcmFja2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdGF0aXN0aWNzRGF0
YS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdGF0aXN0aWNzRGF0YS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvc291cC9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGY1OTk0NDYuLmIxZGQ1NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5j
bHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JEYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CkBAIC0xNDcsMTAgKzE0OCwxMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChib29sIGVu
YWJsZWQpCiAgICAgbV9zZXJpYWxMb2FkaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKLXN0YXRp
YyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkKK3N0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkg
ewotICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uID0gUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBpZiAoU2Vz
c2lvblRyYWNrZXI6OmlzRXBoZW1lcmFsSUQoc2Vzc2lvbklEKSkgeworICAgICAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24o
c2Vzc2lvbklEKS5nZXQoKTsKICAgICAgICAgaWYgKHByaXZhdGVTZXNzaW9uKQogICAgICAgICAg
ICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbjsKICAgICAgICAgLy8gU29tZSByZXF1ZXN0cyB3aXRo
IHByaXZhdGUgYnJvd3NpbmcgbW9kZSByZXF1ZXN0ZWQgbWF5IHN0aWxsIGJlIGNvbWluZyBzaG9y
dGx5IGFmdGVyIE5ldHdvcmtQcm9jZXNzIHdhcyB0b2xkIHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24u
CkBAIC0xNjAsOSArMTYxLDkgQEAgc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9h
ZCh1aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIHdpdGggdGhl
IHByaXZhdGUgYnJvd3NpbmcgZmxhZy4KKyAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIHdpdGgg
dGhlIHNlc3Npb24gSUQuCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNoYXJlZCgpLmRvd25sb2FkTWFu
YWdlcigpLnN0YXJ0RG93bmxvYWQoZG93bmxvYWRJRCwgcmVxdWVzdCk7CiB9CiAKQEAgLTE4Miwz
NCArMTgzLDM0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtCiAgICAgbG9hZGVyLT5kaWRDb252
ZXJ0SGFuZGxlVG9Eb3dubG9hZCgpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKHVpbnQ2NF90IHNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1
bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzdG9yYWdlU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQg
PSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0
UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNl
dENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSh1aW50
NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9t
RE9NKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1
cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNvb2tpZXNFbmFibGVkKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6
OmNvb2tpZXNFbmFibGVkKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBm
aXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSh1aW50NjRfdCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQog
ewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0
b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0
UmF3Q29va2llcyh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQpCiB7Ci0gICAgV2ViQ29yZTo6Z2V0
UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQ
YXJ0eSwgdXJsLCByZXN1bHQpOworICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKHVpbnQ2NF90
IHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsK
LSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgQmxvYlJlZ2lzdHJhdGlvbkRhdGEmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAppbmRleCA5NDU3Mzc1Li4zOTgxZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTc2LDE1ICs3NiwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVj
dFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVk
aXJlY3RVUkwpOwogICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHModWludDMyX3QgcmVzb3Vy
Y2VMb2FkUHJpb3JpdHkpOwogICAgIHZvaWQgc2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCk7
Ci0gICAgdm9pZCBzdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWlu
dDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAg
dm9pZCBzdGFydERvd25sb2FkKHVpbnQ2NF90IHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZvaWQgY29va2llc0Zv
ckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYp
OwotICAgIHZvaWQgY29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wm
IHJlc3VsdCk7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UmF3Q29va2ll
cyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAg
ICB2b2lkIGRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCBjb29raWVz
Rm9yRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29r
aWVzRW5hYmxlZCh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCYgcmVzdWx0KTsKKyAgICB2b2lkIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7
CisgICAgdm9pZCBnZXRSYXdDb29raWVzKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKHVpbnQ2NF90IHNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAogICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IEJsb2JSZWdpc3RyYXRp
b25EYXRhJik7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggN2U4OTAzNS4uYTQ1OTdmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTMyLDE1ICszMiwxNSBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgCiAgICAgU2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSAtPiAo
KQogCi0gICAgU3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2
NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFN0
YXJ0RG93bmxvYWQodWludDY0X3Qgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90
IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwg
dXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKLSAgICBTZXRDb29raWVzRnJvbURPTShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwg
dXJsLCBTdHJpbmcgY29va2llU3RyaW5nKQotICAgIENvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1
cmwpIC0+IChib29sIGVuYWJsZWQpCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2Vi
Q29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpCi0gICAgR2V0UmF3Q29va2llcyhib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3Jl
OjpVUkwgdXJsKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKLSAgICBEZWxl
dGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgdXJsLCBT
dHJpbmcgY29va2llTmFtZSkKKyAgICBDb29raWVzRm9yRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwg
V2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVz
dWx0KQorICAgIFNldENvb2tpZXNGcm9tRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6
VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVTdHJpbmcpCisg
ICAgQ29va2llc0VuYWJsZWQodWludDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQ
YXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKGJvb2wgZW5hYmxlZCkKKyAgICBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJz
dFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKKyAgICBHZXRSYXdD
b29raWVzKHVpbnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OlVSTCB1cmwpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERl
bGV0ZUNvb2tpZSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBj
b29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFdlYktp
dDo6QmxvYlJlZ2lzdHJhdGlvbkRhdGEgZGF0YSkKICAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJM
KFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTUwMDBmNS4uOWMx
YzFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIK
ICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKQEAgLTE1NywxMSArMTU4LDEyIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1lCiAgICAgc2V0Q2FjaGVNb2RlbChzdGF0aWNfY2FzdDx1
aW50MzJfdD4ocGFyYW1ldGVycy5jYWNoZU1vZGVsKSk7CiAKICNpZiBQTEFURk9STShNQUMpIHx8
IFVTRShDRk5FVFdPUkspCi0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NC
dW5kbGVJZGVudGlmaWVyKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2Uo
cGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRpZgogCisgICAgLy8g
RklYTUU6IGluc3RlYWQgb2YgaGFuZGxpbmcgdGhpcyBoZXJlLCBhIG1lc3NhZ2Ugc2hvdWxkIGJl
IHNlbnQgbGF0ZXIgKHNjYWxlcyB0byBtdWx0aXBsZSBzZXNzaW9ucykKICAgICBpZiAocGFyYW1l
dGVycy5wcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgICAgICBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tl
cjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRV
c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwpAQCAtMjEyLDE0ICsyMTQsMTQgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1
aW50NjRfdCBzZXNzaW9uSUQpCiB7Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQp
CiB7Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCk7CisgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA1NDg0ZDQ5Li5hZDVhOGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTEwNCw4ICsxMDQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQ
cm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAg
ICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCk7Ci0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAg
dm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIHZvaWQgZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHZvaWQgZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKICAgICB2b2lkIGRv
d25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQp
OwogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDZhZDZjMjUuLmM0YTcxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zNCw4ICszNCw4IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZChWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXMpCiAjZW5kaWYKIAot
ICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotICAgIERlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKKyAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90
IHNlc3Npb25JRCkKKyAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBz
ZXNzaW9uSUQpCiAKICAgICBEb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ2FuY2VsRG93bmxvYWQodWludDY0
X3QgZG93bmxvYWRJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IGVmMjVmMzAxLi41ZjNiZjcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0LmgKQEAgLTM5LDExICszOSw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAotICAgIHN0YXRpYyB2b2lkIHNldFByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0g
ICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0KLSAgICBzdGF0aWMgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Cisg
ICAgLy8gRklYTUU6IHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lv
blRyYWNrZXIKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVp
bnQ2NF90IHNlc3Npb25JRCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQubW0KaW5kZXggYTM4MjllOC4uMTA1OWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpA
QCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJSZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5oIgogCisjaW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIgogI2ltcG9ydCAi
V2ViRXJyb3JzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQg
PFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAtMzYsMTIgKzM3LDYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
KCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsKLSAg
ICByZXR1cm4gc2Vzc2lvbjsKLX0KIAogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6On5SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dCgpCiB7CkBAIC02NSw3ICs2MCw3IEBAIGJvb2wgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdAogTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Np
b24oKSBjb25zdAogewogICAgIGlmIChtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAg
ICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKCkuZ2V0KCk7CisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiog
cHJpdmF0ZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCkuZ2V0KCk7CiAgICAgICAgIGlmIChwcml2YXRlU2Vzc2lv
bikKICAgICAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb247CiAgICAgICAgIC8vIFNvbWUg
cmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBi
ZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95
IGl0cyBzZXNzaW9uLgpAQCAtNzYsMTEgKzcxLDYgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogICAgIHJldHVy
biBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi1O
ZXR3b3JrU3RvcmFnZVNlc3Npb24qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKLXsKLSAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oKS5nZXQoKTsKLX0KLQogUmV0YWluUHRyPENGRGF0YVJlZj4gUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bmlsOwpAQCAtOTEsMzIgKzgxLDEzIEBAIFJlc291cmNlRXJyb3IgUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgcmV0
dXJuIFdlYktpdDo6YmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQogCi1zdGF0aWMgU3RyaW5nJiBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkKLXsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJh
c2U7Ci0gICAgcmV0dXJuIGJhc2U7Ci19Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7Ci0gICAgcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKLX0KLQot
dm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCi17Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYg
KFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVCghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgp
LmlzTnVsbCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0
cmluZyhwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgKyAiLlBy
aXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0KLSAgICBwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbigpID0gc3RkOjptb3ZlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKCkpKTsKLX0KLQotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKCkgPSBudWxscHRyOworICAgIEFTU0VSVCghU2Vzc2lvblRyYWNrZXI6OmdldElkZW50
aWZpZXJCYXNlKCkuaXNOdWxsKCkpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Np
b25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkgKyAnLicgKyBTdHJpbmc6Om51
bWJlcihzZXNzaW9uSUQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAu
Y3BwCmluZGV4IDNiZWY1NjQuLmQ3ZjhkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKQEAgLTUyLDMxICs1MiwxNiBAQCB1aW50NjRfdCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6aW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJikKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkKLXsKLX0KLQogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi1OZXR3b3JrU3Rv
cmFnZVNlc3Npb24qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAmTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLX0KLQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TZXNzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYzNhYTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2Vzc2lvblRyYWNrZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc2Vzc2lvbk1hcCgpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4+IG1hcDsK
KyAgICByZXR1cm4gbWFwLmdldCgpOworfQorCitzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFz
ZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGJhc2U7CisgICAgcmV0dXJuIGJhc2U7Cit9CisKK2NvbnN0IEhhc2hN
YXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgU2Vz
c2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXAoKQoreworICAgIHJldHVybiBzZXNzaW9uTWFwKCk7
Cit9CisKK2NvbnN0IFN0cmluZyYgU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkK
K3sKKyAgICByZXR1cm4gaWRlbnRpZmllckJhc2UoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4mIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHVpbnQ2NF90IHNl
c3Npb25JRCkKK3sKKyAgICByZXR1cm4gc2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKK30KKwordm9pZCBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBzZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7Cit9CisKK3ZvaWQgU2Vzc2lv
blRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWRlbnRpZmllckJhc2UoKSA9IGlk
ZW50aWZpZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2Vzc2lvblRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmM2
ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFj
a2VyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Vzc2lvblRyYWNr
ZXJfaAorI2RlZmluZSBTZXNzaW9uVHJhY2tlcl9oCisKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2Vzc2lvblRyYWNrZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNlc3Npb25UcmFja2VyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgZGVmYXVsdFNlc3Npb25JRCA9IDE7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQgPSAyOworICAgIHN0YXRpYyBib29sIGlzRXBoZW1lcmFsSUQo
dWludDY0X3Qgc2Vzc2lvbklEKSB7IHJldHVybiBzZXNzaW9uSUQgIT0gU2Vzc2lvblRyYWNrZXI6
OmRlZmF1bHRTZXNzaW9uSUQ7IH0KKyAgICBzdGF0aWMgY29uc3QgSGFzaE1hcDx1aW50NjRfdCwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBnZXRTZXNz
aW9uTWFwKCk7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0SWRlbnRpZmllckJhc2UoKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4mIHNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95
U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZp
ZXJCYXNlKGNvbnN0IFN0cmluZyYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBTZXNzaW9uVHJhY2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
Q29va2llU3RvcmFnZVNoaW0uY3BwCmluZGV4IDU3MTE0MzYuLjFiYmI4ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0uY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgpAQCAtNDcsNyArNDgsNyBAQCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVm
IHdlYktpdENvb2tpZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRlckZpZWxkc0ZvclVSTChDRkhUVFBD
bwogewogICAgIFN0cmluZyBjb29raWVzOwogICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2llc1VS
TDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmYWxzZSwgZmlyc3RQYXJ0eUZvckNv
b2tpZXNVUkwsIGluUmVxdWVzdFVSTCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llcyksIDApKQorICAgIGlmICghV2Vi
UHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFNlc3Npb25UcmFja2VyOjpkZWZhdWx0U2Vzc2lvbklELCBmaXJz
dFBhcnR5Rm9yQ29va2llc1VSTCwgaW5SZXF1ZXN0VVJMKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVzKSwgMCkpCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkNvb2tpZXMg
PSBjb29raWVzLmNyZWF0ZUNGU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vz
c2lvbi5jcHAKaW5kZXggNDIzMTJiYi4uYzJhMjYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUElTZXNzaW9uLmNwcApAQCAtMjYsMjMgKzI2LDYzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQVBJU2Vzc2lvbi5oIgogCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
KwogbmFtZXNwYWNlIEFQSSB7CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlEKGJvb2wgaXNF
cGhlbWVyYWwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyB1
aW50NjRfdCB1bmlxdWVTZXNzaW9uSUQgPSBXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEOworICAgIEFTU0VSVChpc0VwaGVtZXJhbCk7CisgICAgcmV0dXJuICsr
dW5pcXVlU2Vzc2lvbklEOworfQorCitTZXNzaW9uJiBTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBTZXNzaW9uKiBk
ZWZhdWx0U2Vzc2lvbiA9IG5ldyBTZXNzaW9uKGZhbHNlLCBXZWJLaXQ6OlNlc3Npb25UcmFja2Vy
OjpkZWZhdWx0U2Vzc2lvbklEKTsKKyAgICByZXR1cm4gKmRlZmF1bHRTZXNzaW9uOworfQorCitT
ZXNzaW9uJiBTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBTZXNzaW9uKiBsZWdhY3lQcml2YXRlU2Vzc2lv
biA9IG5ldyBTZXNzaW9uKHRydWUsIFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQpOworICAgIHJldHVybiAqbGVnYWN5UHJpdmF0ZVNlc3Npb247Cit9CisKIFNl
c3Npb246OlNlc3Npb24oYm9vbCBpc0VwaGVtZXJhbCkKICAgICA6IG1faXNFcGhlbWVyYWwoaXNF
cGhlbWVyYWwpCisgICAgLCBtX3Nlc3Npb25JRChnZW5lcmF0ZUlEKGlzRXBoZW1lcmFsKSkKK3sK
K30KKworU2Vzc2lvbjo6U2Vzc2lvbihib29sIGlzRXBoZW1lcmFsLCB1aW50NjRfdCBzZXNzaW9u
SUQpCisgICAgOiBtX2lzRXBoZW1lcmFsKGlzRXBoZW1lcmFsKQorICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogewogfQogCiBQYXNzUmVmUHRyPFNlc3Npb24+IFNlc3Npb246OmNyZWF0ZShi
b29sIGlzRXBoZW1lcmFsKQogeworICAgIC8vIEZJWE1FOiBzdXBwb3J0IGNyZWF0aW9uIG9mIG5v
bi1kZWZhdWx0LCBub24tZXBoZW1lcmFsIHNlc3Npb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTZXNzaW9uKGlzRXBoZW1lcmFsKSk7CiB9CiAKLWJvb2wgU2Vzc2lvbjo6aXNFcGhlbWVyYWwo
KQorYm9vbCBTZXNzaW9uOjppc0VwaGVtZXJhbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXNF
cGhlbWVyYWw7CiB9CiAKK3VpbnQ2NF90IFNlc3Npb246OmdldElEKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKIFNlc3Npb246On5TZXNzaW9uKCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oCmluZGV4IDNmYjVmNjcuLmRmNzE2ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmlu
ZSBBUElTZXNzaW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIlNlc3Np
b25UcmFja2VyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIEFQ
SSB7CkBAIC0zNCwxMiArMzUsMTcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBTZXNzaW9uIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U2Vzc2lvbj4gewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlc3Npb24+IGNyZWF0ZShib29sIGlzRXBoZW1l
cmFsKTsKLSAgICBib29sIGlzRXBoZW1lcmFsKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGRlZmF1
bHRTZXNzaW9uKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGxlZ2FjeVByaXZhdGVTZXNzaW9uKCk7
CisgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0OworICAgIHVpbnQ2NF90IGdldElEKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB+U2Vzc2lvbigpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNl
c3Npb24oYm9vbCBpc0VwaGVtZXJhbCk7CisgICAgU2Vzc2lvbihib29sIGlzRXBoZW1lcmFsLCB1
aW50NjRfdCBzZXNzaW9uSUQpOwogICAgIGJvb2wgbV9pc0VwaGVtZXJhbDsKKyAgICB1aW50NjRf
dCBtX3Nlc3Npb25JRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGUxMDUxNWIuLjgzYTE0OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAi
V0tDb250ZXh0UHJpdmF0ZS5oIgpAQCAtNDY3LDE2ICs0NjgsMTYgQEAgdm9pZCBXZWJDb250ZXh0
OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJp
dmF0ZUJyb3cKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmICh1c2VzTmV0d29y
a1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlmIChwcml2YXRlQnJv
d3NpbmdFbmFibGVkKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7Cisg
ICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJp
dmF0ZVNlc3Npb25JRCksIDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKSwgMCk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpLCAwKTsKICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCkKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpF
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpOworICAgICAgICBzZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpKTsKICAgICBlbHNlCi0gICAgICAg
IHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKSk7CisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpKTsKIH0KIAogdm9pZCAoKnNfaW52YWxpZE1lc3NhZ2VD
YWxsYmFjaykoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUpOwpAQCAtNTk3LDcgKzU5OCw3IEBAIFdl
YlByb2Nlc3NQcm94eSYgV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6SW5pdGlhbGl6ZVdlYlByb2Nlc3MocGFy
YW1ldGVycywgV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlcihpbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGEuZ2V0KCksICpwcm9jZXNzKSksIDApOwogCiAgICAgaWYgKFdlYlBy
ZWZlcmVuY2VzOjphbnlQYWdlR3JvdXBzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSkKLSAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpLCAwKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCksIDApOwogCiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3Mp
OwogCkBAIC03NDAsNyArNzQxLDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250ZXh0OjpjcmVh
dGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCkKICAgICByZXR1cm4g
KnJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0
ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAs
IFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2Vi
Q29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkqIHJlbGF0
ZWRQYWdlKQogewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7CiAgICAgaWYg
KG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsK
QEAgLTc1Niw3ICs3NTcsMTIgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGEKICAgICAgICAgICAg
IHByb2Nlc3MgPSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1p
dCgpOwogICAgIH0KIAotICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGll
bnQsIHBhZ2VHcm91cCA/ICpwYWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCkpOwor
ICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHBhZ2VHcm91cCA/
ICpwYWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCksIHNlc3Npb24pOworfQorCitQ
YXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiBy
ZWxhdGVkUGFnZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBwYWdl
R3JvdXAsIHBhZ2VHcm91cCAmJiBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkgJiYgcGFnZUdyb3Vw
LT5wcmVmZXJlbmNlcygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBBUEk6OlNlc3Npb246
OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCkgOiBBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCks
IHJlbGF0ZWRQYWdlKTsKIH0KIAogRG93bmxvYWRQcm94eSogV2ViQ29udGV4dDo6ZG93bmxvYWQo
V2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggYjk4YzQ4Ni4uZjZi
OWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0xNDksNiArMTQ5
LDcgQEAgcHVibGljOgogCiAgICAgU3RvcmFnZU1hbmFnZXImIHN0b3JhZ2VNYW5hZ2VyKCkgY29u
c3QgeyByZXR1cm4gKm1fc3RvcmFnZU1hbmFnZXI7IH0KIAorICAgIFBhc3NSZWZQdHI8V2ViUGFn
ZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlR3JvdXAqLCBBUEk6OlNl
c3Npb24mLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gMCk7CiAgICAgUGFzc1JlZlB0cjxX
ZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFdlYlBhZ2VHcm91cCosIFdl
YlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UgPSAwKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZVBhdGg7IH0KQEAg
LTI5Miw2ICsyOTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgd2lsbFN0YXJ0VXNpbmdQ
cml2YXRlQnJvd3NpbmcoKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsU3RvcFVzaW5nUHJpdmF0ZUJy
b3dzaW5nKCk7CiAKKyAgICBzdGF0aWMgYm9vbCBpc0VwaGVtZXJhbFNlc3Npb24odWludDY0X3Qg
c2Vzc2lvbklEKTsKKwogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0SWdub3JlVExTRXJyb3Jz
KGJvb2wpOwogICAgIGJvb2wgaWdub3JlVExTRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25v
cmVUTFNFcnJvcnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggNzQ0YzFjNS4uNDFiYjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTIyOCwxMiArMjI4LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiB3ZWJL
ZXlib2FyZEV2ZW50VHlwZVN0cmluZyhXZWJFdmVudDo6VHlwZSB0eXBlKQogfQogI2VuZGlmIC8v
ICFMT0dfRElTQUJMRUQKIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6
Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcywg
V2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAsIHVpbnQ2NF90IHBhZ2VJRCkKK1Bhc3NSZWZQdHI8V2Vi
UGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCBBUEk6OlNl
c3Npb24mIHNlc3Npb24sIHVpbnQ2NF90IHBhZ2VJRCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlR3JvdXAsIHBhZ2VJRCkp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZVByb3h5KHBhZ2VDbGllbnQsIHByb2Nl
c3MsIHBhZ2VHcm91cCwgc2Vzc2lvbiwgcGFnZUlEKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAsIEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbiwg
dWludDY0X3QgcGFnZUlEKQogICAgIDogbV9wYWdlQ2xpZW50KHBhZ2VDbGllbnQpCiAgICAgLCBt
X3Byb2Nlc3MocHJvY2VzcykKICAgICAsIG1fcGFnZUdyb3VwKHBhZ2VHcm91cCkKQEAgLTI3OSw2
ICsyNzksNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYgogICAgICwgbV9uZWVkVG91Y2hFdmVu
dHMoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKKyAgICAsIG1fc2Vzc2lv
bihzZXNzaW9uKQogICAgICwgbV9pc1BhZ2VTdXNwZW5kZWQoZmFsc2UpCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgICwgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNT
bWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBkYjAwYWU0Li44M2EyYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYlBhZ2VQcm94eV9o
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJBUElTZXNzaW9uLmgiCiAjaW5j
bHVkZSAiQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJEcmFnQ29udHJvbGxlckFjdGlvbi5oIgpAQCAtNzQsNiArNzUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC0zMjcsMTAgKzMyOSwxMSBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgICwgcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2Vi
UGFnZUdyb3VwJiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQ
YWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdy
b3VwJiwgQVBJOjpTZXNzaW9uJiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2aXJ0dWFsIH5XZWJQ
YWdlUHJveHkoKTsKIAogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUlEOyB9CisgICAgdWludDY0X3Qgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9u
LT5nZXRJRCgpOyB9CiAKICAgICBXZWJGcmFtZVByb3h5KiBtYWluRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX21haW5GcmFtZS5nZXQoKTsgfQogICAgIFdlYkZyYW1lUHJveHkqIGZvY3VzZWRGcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNlZEZyYW1lLmdldCgpOyB9CkBAIC04NTUsNyArODU4
LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQ
aW5uaW5nQmVoYXZpb3IoKSB7IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQogICAg
ICAgICAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNz
UHJveHkmLCBXZWJQYWdlR3JvdXAmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgQVBJOjpTZXNz
aW9uJiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwog
CiAgICAgdm9pZCB1cGRhdGVWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBmbGFn
c1RvVXBkYXRlID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7CkBAIC0xMzEyLDYgKzEz
MTUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBS
ZWY8QVBJOjpTZXNzaW9uPiBtX3Nlc3Npb247CiAKICAgICBib29sIG1faXNQYWdlU3VzcGVuZGVk
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDEwZjFhYjAuLjQ3NjZiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xNjcsMTAgKzE2NywxMCBAQCBXZWJQYWdlUHJveHkqIFdlYlByb2Nl
c3NQcm94eTo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VN
YXAoKS5nZXQocGFnZUlEKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3Jv
dXAmIHBhZ2VHcm91cCkKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwJiBwYWdl
R3JvdXAsIEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICB1aW50NjRfdCBwYWdlSUQgPSBn
ZW5lcmF0ZVBhZ2VJRCgpOwotICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQ
YWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xpZW50LCAqdGhpcywgcGFnZUdyb3VwLCBwYWdlSUQpOwor
ICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShw
YWdlQ2xpZW50LCAqdGhpcywgcGFnZUdyb3VwLCBzZXNzaW9uLCBwYWdlSUQpOwogICAgIG1fcGFn
ZU1hcC5zZXQocGFnZUlELCB3ZWJQYWdlLmdldCgpKTsKICAgICBnbG9iYWxQYWdlTWFwKCkuc2V0
KHBhZ2VJRCwgd2ViUGFnZS5nZXQoKSk7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGEzYzkyOWMuLmM1NDUyNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgV2ViUHJvY2Vzc1Byb3h5X2gKICNkZWZpbmUgV2ViUHJvY2Vzc1Byb3h5
X2gKIAorI2luY2x1ZGUgIkFQSVNlc3Npb24uaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIuaCIKQEAgLTc3LDcgKzc4LDcgQEAgcHVibGljOgogICAgIFdlYkNv
bnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KIAogICAgIHN0YXRp
YyBXZWJQYWdlUHJveHkqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKLSAgICBQYXNzUmVmUHRy
PFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwJik7
CisgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYs
IFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYpOwogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQ
YWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgVmVjdG9yPFdlYlBhZ2VQcm94eSo+IHBhZ2VzKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggM2Y3NWUzNS4uN2Q1ZmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzg3LDYgKzc4Nyw4IEBACiAJCTZF
RTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQw
MDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjhFODZGMTE3OTUxODhDMDA4Nzg3OUUgLyog
V2ViQ29sb3JQaWNrZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5o
ICovOyB9OwogCQk3MjhFODZGMjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZG
MDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi87IH07CisJCTc1M0Uz
RTBEMTg4NzM5ODUwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTNFM0UwQjE4ODczOTczMDAxODg0OTYg
LyogU2Vzc2lvblRyYWNrZXIuY3BwICovOyB9OworCQk3NTNFM0UwRTE4ODczOTg5MDAxODg0OTYg
LyogU2Vzc2lvblRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1M0UzRTA5MTg4NzM5NEIwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oICov
OyB9OwogCQk3NTU0MjJCRDE4MDYyQkIyMDA0NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJC
OTE4MDYyQjlDMDA0NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAgKi87IH07CiAJCTc1
NTQyMkM0MTgwNjJCRjkwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkJFMTgw
NjJCRTQwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcCAqLzsgfTsKIAkJ
NzU1NDIyQ0IxODA2NTAwMjAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkM2MTgwNjRG
RkMwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAgKi87IH07CkBAIC0yNDY4LDYg
KzI0NzAsOCBAQAogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2
YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5zcGVjdG9yUHJp
dmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQ
aWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNr
ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAw
ODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTc1M0UzRTA5MTg4NzM5NEIwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXNzaW9uVHJhY2tlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3NTNFM0UwQjE4ODczOTczMDAxODg0OTYgLyogU2Vzc2lv
blRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vzc2lv
blRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTU0MjJCOTE4MDYy
QjlDMDA0NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS09yaWdpbkRhdGFNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzU1NDIyQkExODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2luRGF0
YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tPcmlnaW5EYXRh
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTU0MjJCRTE4MDYyQkU0
MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MjgsNiArMzczMiw4IEBACiAJCQkJMzMxNTI5
NzQxMzBEMENCMjAwRUQyNDgzIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5oICovLAogCQkJCTUxOEQy
Q0M4MTJENTFERkIwMDNCQjkzQiAvKiBTZXNzaW9uU3RhdGUuY3BwICovLAogCQkJCTUxOEQyQ0M5
MTJENTFERkIwMDNCQjkzQiAvKiBTZXNzaW9uU3RhdGUuaCAqLywKKwkJCQk3NTNFM0UwQjE4ODcz
OTczMDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuY3BwICovLAorCQkJCTc1M0UzRTA5MTg4NzM5
NEIwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oICovLAogCQkJCTFBNjQyMEUyMTJEQ0UyRkYw
MENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuY3BwICovLAogCQkJCTFBNjQyMEUzMTJEQ0UyRkYw
MENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuaCAqLywKIAkJCQk1MTIxNzQ1RTE2NEMyMEUzMDAz
N0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuY3BwICovLApAQCAtNjY1Myw2ICs2NjU5LDcgQEAK
IAkJCQlCQzQwNzYxQzEyNEZGMDM3MDA2OEYyMEEgLyogV0tVUkxDRi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM0MDc2MEMxMjRGRjAyNzAwNjhGMjBBIC8qIFdLVVJMUmVxdWVzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM0MDc2MjkxMjRGRjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVxdWVzdE5TLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3NTNFM0UwRTE4ODczOTg5MDAxODg0OTYgLyogU2Vzc2lvblRy
YWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjBFMTI0RkYwMjcwMDY4RjIwQSAvKiBX
S1VSTFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTlDQ0Q1QTE4MDhGNjE2MDA3OEU4
QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0
MDc2MkIxMjRGRjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVzcG9uc2VOUy5oIGluIEhlYWRlcnMgKi8s
CkBAIC03OTExLDYgKzc5MTgsNyBAQAogCQkJCUJDRDI1RjE4MTFENkJERTEwMDE2OUIwRSAvKiBX
S0J1bmRsZUZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDk4NjMwMTI0RDE4QzEwMEQ4
MzRFMSAvKiBXS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjUw
MUJEMUExMkYxMjQzNDAwRTlGMjQ4IC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTc1M0UzRTBEMTg4NzM5ODUwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzcwNDNDRDEyRjc1RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNEJFRkUyMTIwQTFBNEMw
MEZCQTBDNyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMy
MDUyODIxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMTY1MGI1NS4uZGJmMGNmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNlc3Np
b25UcmFja2VyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKQEAgLTI5
OSw5ICszMDAsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvbwogICAgIC8vIEZJWE1FIChOZXR3
b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE5l
dHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NTI3ND4uCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoU09VUCkK
ICAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKTsKICAgICBlbHNlCi0gICAgICAgIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgICAgIFNlc3Np
b25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCk7CiAjZW5kaWYKICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBQYWdl
R3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnBhZ2VzKCk7CiAgICAg
Zm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXRlciA9IHBhZ2VzLmJlZ2luKCk7IGl0ZXIg
IT0gcGFnZXMuZW5kKCk7ICsraXRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAppbmRleCA1NWMxZTUwLi40NWY2OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
SW5mb1N0b3JlLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTdG9y
YWdlTmFtZXNwYWNlSW1wbC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKQEAgLTcyLDYgKzczLDEzIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCitzdGF0aWMgdWludDY0X3QgbGVnYWN5U2Vzc2lvbklEKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiAmc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gc2Vzc2lvbi5pc1ByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKSA/IFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklE
IDogU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQ7Cit9CisjZW5kaWYKKwogdm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM+IHBsYXRmb3JtU3RyYXRlZ2llczsKQEAgLTEz
Myw3ICsxNDEsNyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbgogI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2Vz
cygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6
c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oc2Vzc2lv
bi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1
bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShsZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIGZp
cnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTQ2LDcgKzE1NCw3IEBA
IHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3NpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAg
ICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29v
a2llc0Zyb21ET00oc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0
eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00obGVnYWN5U2Vzc2lvbklE
KHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0xNTksNyArMTY3LDcgQEAgYm9vbCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNz
OjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBib29sIHJlc3VsdDsK
LSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29va2llc0VuYWJsZWQoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwg
Zmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJv
Y2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVk
KGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0
KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpAQCAtMTczLDcgKzE4MSw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlCiAjaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCisg
ICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9u
KSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCiAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQpAQCAtMTg2LDcgKzE5NCw3IEBAIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwKIHsKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKHNlc3Npb24uaXNQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQor
ICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpHZXRSYXdDb29raWVzKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwg
dXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29r
aWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE5OSw3ICsyMDcsNyBAQCB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgYwogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShzZXNz
aW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRl
Q29va2llKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaAppbmRleCA5NTk2YzU3Li44NjI5ZmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC0zOSw5ICszOSw5IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMg
dm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgZGVz
dHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHBsYXRm
b3JtLXNwZWNpZmljIGNvZGUgYW5kIHVzZSBTZXNzaW9uVHJhY2tlcgorICAgIHN0YXRpYyB2b2lk
IGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKwogICAg
IHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kpOwogCiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9h
ZGVyQ2xpZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbQppbmRleCBmODA4NjdjLi40NzYyZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTI0LDYgKzI0LDggQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1
ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpAQCAtMzQsNTIgKzM2LDIzIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0
aW5ncy5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgotI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPiYgcHJpdmF0ZVNlc3Npb24oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsKLSAgICByZXR1cm4g
c2Vzc2lvbjsKLX0KLQotc3RhdGljIFN0cmluZyYgaWRlbnRpZmllckJhc2UoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJhc2U7Ci0gICAgcmV0dXJuIGJhc2U7Ci19CiAg
ICAgCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJiBiYXNlKQotewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBpZGVudGlmaWVyQmFzZSgpID0gYmFzZTsKLX0K
LQotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCkKK3ZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLQotICAgIGlmIChwcml2YXRlU2Vzc2lvbigpKQorICAgIGlmIChTZXNzaW9uVHJh
Y2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcg
YmFzZTsKLSAgICBpZiAoaWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKKyAgICBpZiAoU2Vzc2lv
blRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpCiAgICAgICAgIGJhc2UgPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOwogICAgIGVsc2UKLSAgICAg
ICAgYmFzZSA9IGlkZW50aWZpZXJCYXNlKCk7Ci0KLSAgICBwcml2YXRlU2Vzc2lvbigpID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGJhc2UpOwot
fQorICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7CiAK
LXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBwcml2YXRlU2Vz
c2lvbigpID0gbnVsbHB0cjsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQp
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGJh
c2UgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhI
VFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKQEAgLTg5LDggKzYyLDEwIEBAIHZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4
dHMoSFRUUENvb2tpZUFjCiAgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5jb29raWVTdG9yYWdlKCkpCiAgICAgICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0gICAgaWYgKHByaXZhdGVTZXNz
aW9uKCkpCi0gICAgICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwcml2YXRlU2Vzc2lv
bigpLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBzZXNzaW9uIDogU2Vzc2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXAoKS52YWx1ZXMoKSkgewor
ICAgICAgICBpZiAoc2Vzc2lvbikKKyAgICAgICAgICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShzZXNzaW9uLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CisgICAgfQogfQog
ICAgIAogYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpuZWVkc1NpdGVTcGVjaWZpY1F1
aXJrcygpIGNvbnN0CkBAIC0xMjUsMTEgKzEwMCwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiAqcHJpdmF0
ZVNlc3Npb24oKTsKKyAgICAgICAgcmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNz
aW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CiAKICAgICByZXR1cm4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KLSAgICAKIFdlYkZy
YW1lTG9hZGVyQ2xpZW50KiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojp3ZWJGcmFtZUxvYWRl
ckNsaWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFmcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9z
b3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IGY5NzQzNGEuLjRhYTk2Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291
cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KQEAgLTM2LDI3ICszNywxNCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZVNlc3Npb24oKQotewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsK
LSAgICByZXR1cm4gc2Vzc2lvbjsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChwcml2YXRlU2Vzc2lv
bigpKQorICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBwcml2YXRlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBwcml2YXRlU2Vzc2lvbigpID0gbnVsbHB0cjsK
KyAgICBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFN0cmluZzo6bnVtYmVyKHNlc3Np
b25JRCkpOwogfQogCiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0KFdlYkZyYW1lKiBmcmFtZSkKQEAgLTcwLDcgKzU4LDcgQEAgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUp
CiBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5n
cygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vz
c2lvbigpOworICAgICAgICByZXR1cm4gKlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25U
cmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKTsKIAogICAgIHJldHVybiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
c291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggMGUwMzU1Mi4uMjA0Y2NiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3Vw
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00
Miw4ICs0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOwogCiAgICAgV2ViRnJhbWVMb2FkZXJDbGll
bnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDI5MWFiNGEuLjEyMmM0NzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAi
U2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUg
IlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKQEAg
LTMzNSw3ICszMzYsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKGNv
bnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZQogICAgICAgICBzZXRTaG91
bGRVc2VGb250U21vb3RoaW5nKHRydWUpOwogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZO
RVRXT1JLKQotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJ
ZGVudGlmaWVyKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UocGFyYW1l
dGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAgaWYgKHBhcmFt
ZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKQpAQCAtNDUyLDE3ICs0NTMsMTcg
QEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1
bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCiAgICAgbV9mdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
ID0gZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7CiAjaWYgUExBVEZPUk0oTUFD
KSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoU09VUCkKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOwog
I2VuZGlmCiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKQordm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50
NjRfdCBzZXNzaW9uSUQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8
fCBVU0UoU09VUCkKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihz
ZXNzaW9uSUQpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKaW5kZXggY2Q5OWJhMS4uMmE4NmY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKQEAgLTE2NSw5ICsxNjUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENhY2hl
TW9kZWwodWludDMyX3QpOwogCi0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCk7Ci0gICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIAorICAg
IHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOwor
ICAgIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklE
KTsKKwogICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAg
dm9pZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxYzhmOGNi
Li4yYTA3OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC01MSw5ICs1MSw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9y
cykKICNlbmRpZgogCi0gICAgLy8gUHJpdmF0ZSBicm93c2luZyBzZXNzaW9uIGlzIHBlciBwcm9j
ZXNzLiBJbmRpdmlkdWFsIHBhZ2VzIG9yIHBhZ2UgZ3JvdXBzIG1heSB1c2UgdGhlIHByaXZhdGUg
c2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUgYXMgYXBwcm9wcmlhdGUuCi0gICAgRW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi0gICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KQorICAgIC8vIExlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gaXMgcGVyIHByb2Nlc3Mu
IEluZGl2aWR1YWwgcGFnZXMgb3IgcGFnZSBncm91cHMgbWF5IHVzZSB0aGUgcHJpdmF0ZSBzZXNz
aW9uIG9yIHRoZSBkZWZhdWx0IG9uZSBhcyBhcHByb3ByaWF0ZS4KKyAgICBFbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKKyAgICBEZXN0cm95UHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiAKICAgICAjIFBsdWctaW5zLgogICAg
IERpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWludDMyX3QgaGFzaCwgZG91YmxlIGV4
cGlyYXRpb25UaW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221564</attachid>
            <date>2014-01-18 12:20:43 -0800</date>
            <delta_ts>2014-01-18 12:30:21 -0800</delta_ts>
            <desc>address comment</desc>
            <filename>sessionid-fix.02.diff</filename>
            <type>text/plain</type>
            <size>65478</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjExNGRmZi4uNDk5YmM3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTIwNCw2ICsyMDQsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L1ByaW50SW5mby5jcHAKICAgICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAogICAgIFNo
YXJlZC9TZXNzaW9uU3RhdGUuY3BwCisgICAgU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAogICAg
IFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCiAgICAgU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAogICAgIFNoYXJlZC9TdGF0aXN0aWNzRGF0YS5jcHAKQEAgLTI5Myw2ICsyOTQsNyBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5m
b3JtYXRpb24uY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCisgICAg
VUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAK
ICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvRmluZElu
ZGljYXRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMzA0N2ExLi40MjExNmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTYgQEAKKzIwMTQtMDEtMTggIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29t
PgorCisgICAgICAgIEZsZXNoIG91dCBzZXNzaW9uIEFQSXMgKHN0aWxsIG5vdCBlbmFibGVkIGF0
IEFQSSBsZXZlbCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjY5MTgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29r
aWVzRnJvbURPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tp
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAg
ICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmNwcC4KKyAgICAgICAgKFdlYktpdDo6c2Vzc2lvbk1h
cCk6CisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJCYXNlKToKKyAgICAgICAgKFdlYktpdDo6
U2Vzc2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXApOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9u
VHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJh
Y2tlcjo6c2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpkZXN0cm95
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVy
QmFzZSk6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmguCisgICAgICAgIChXZWJLaXQ6OlNl
c3Npb25UcmFja2VyOjppc0VwaGVtZXJhbElEKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tp
ZVN0b3JhZ2VTaGltLmNwcDoKKyAgICAgICAgKFdlYktpdDo6d2ViS2l0Q29va2llU3RvcmFnZUNv
cHlSZXF1ZXN0SGVhZGVyRmllbGRzRm9yVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJU2Vz
c2lvbi5jcHA6CisgICAgICAgIChBUEk6OmdlbmVyYXRlSUQpOgorICAgICAgICAoQVBJOjpTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbik6CisgICAgICAgIChBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZh
dGVTZXNzaW9uKToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6U2Vzc2lvbik6CisgICAgICAgIChB
UEk6OlNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlNlc3Npb246OmlzRXBoZW1lcmFs
KToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6Z2V0SUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UElTZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJv
d3NpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXNzaW9uSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpz
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2Fj
eVNlc3Npb25JRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29va2llc0Zyb21ET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW46CisKIDIwMTQtMDEtMTggIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogUGFnZSBzaG91bGQgdXNlIHN0ZDo6dW5pcXVlX3B0ciBmb3IgSW5z
cGVjdG9yQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTljMTE4
Zi4uOGEzMGI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NDIsNiArNDQy
LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2VjdXJp
dHlPcmlnaW5EYXRhLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBcCisJU291cmNlL1dl
YktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVk
L1Nlc3Npb25UcmFja2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdGF0aXN0aWNzRGF0
YS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdGF0aXN0aWNzRGF0YS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvc291cC9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGY1OTk0NDYuLmIxZGQ1NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5j
bHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JEYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CkBAIC0xNDcsMTAgKzE0OCwxMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChib29sIGVu
YWJsZWQpCiAgICAgbV9zZXJpYWxMb2FkaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKLXN0YXRp
YyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkKK3N0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkg
ewotICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uID0gUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBpZiAoU2Vz
c2lvblRyYWNrZXI6OmlzRXBoZW1lcmFsSUQoc2Vzc2lvbklEKSkgeworICAgICAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24o
c2Vzc2lvbklEKS5nZXQoKTsKICAgICAgICAgaWYgKHByaXZhdGVTZXNzaW9uKQogICAgICAgICAg
ICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbjsKICAgICAgICAgLy8gU29tZSByZXF1ZXN0cyB3aXRo
IHByaXZhdGUgYnJvd3NpbmcgbW9kZSByZXF1ZXN0ZWQgbWF5IHN0aWxsIGJlIGNvbWluZyBzaG9y
dGx5IGFmdGVyIE5ldHdvcmtQcm9jZXNzIHdhcyB0b2xkIHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24u
CkBAIC0xNjAsOSArMTYxLDkgQEAgc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9h
ZCh1aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIHdpdGggdGhl
IHByaXZhdGUgYnJvd3NpbmcgZmxhZy4KKyAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIHdpdGgg
dGhlIHNlc3Npb24gSUQuCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNoYXJlZCgpLmRvd25sb2FkTWFu
YWdlcigpLnN0YXJ0RG93bmxvYWQoZG93bmxvYWRJRCwgcmVxdWVzdCk7CiB9CiAKQEAgLTE4Miwz
NCArMTgzLDM0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtCiAgICAgbG9hZGVyLT5kaWRDb252
ZXJ0SGFuZGxlVG9Eb3dubG9hZCgpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKHVpbnQ2NF90IHNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1
bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzdG9yYWdlU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQg
PSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0
UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNl
dENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSh1aW50
NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9t
RE9NKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1
cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNvb2tpZXNFbmFibGVkKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6
OmNvb2tpZXNFbmFibGVkKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBm
aXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSh1aW50NjRfdCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQog
ewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0
b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0
UmF3Q29va2llcyh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQpCiB7Ci0gICAgV2ViQ29yZTo6Z2V0
UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQ
YXJ0eSwgdXJsLCByZXN1bHQpOworICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKHVpbnQ2NF90
IHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsK
LSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgQmxvYlJlZ2lzdHJhdGlvbkRhdGEmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAppbmRleCA5NDU3Mzc1Li4zOTgxZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTc2LDE1ICs3NiwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVj
dFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVk
aXJlY3RVUkwpOwogICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHModWludDMyX3QgcmVzb3Vy
Y2VMb2FkUHJpb3JpdHkpOwogICAgIHZvaWQgc2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCk7
Ci0gICAgdm9pZCBzdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWlu
dDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAg
dm9pZCBzdGFydERvd25sb2FkKHVpbnQ2NF90IHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZvaWQgY29va2llc0Zv
ckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYp
OwotICAgIHZvaWQgY29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wm
IHJlc3VsdCk7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UmF3Q29va2ll
cyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAg
ICB2b2lkIGRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCBjb29raWVz
Rm9yRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29r
aWVzRW5hYmxlZCh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCYgcmVzdWx0KTsKKyAgICB2b2lkIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7
CisgICAgdm9pZCBnZXRSYXdDb29raWVzKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKHVpbnQ2NF90IHNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAogICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IEJsb2JSZWdpc3RyYXRp
b25EYXRhJik7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggN2U4OTAzNS4uYTQ1OTdmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTMyLDE1ICszMiwxNSBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgCiAgICAgU2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSAtPiAo
KQogCi0gICAgU3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2
NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFN0
YXJ0RG93bmxvYWQodWludDY0X3Qgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90
IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwg
dXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKLSAgICBTZXRDb29raWVzRnJvbURPTShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwg
dXJsLCBTdHJpbmcgY29va2llU3RyaW5nKQotICAgIENvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1
cmwpIC0+IChib29sIGVuYWJsZWQpCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2Vi
Q29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpCi0gICAgR2V0UmF3Q29va2llcyhib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3Jl
OjpVUkwgdXJsKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKLSAgICBEZWxl
dGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgdXJsLCBT
dHJpbmcgY29va2llTmFtZSkKKyAgICBDb29raWVzRm9yRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwg
V2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVz
dWx0KQorICAgIFNldENvb2tpZXNGcm9tRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6
VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVTdHJpbmcpCisg
ICAgQ29va2llc0VuYWJsZWQodWludDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQ
YXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKGJvb2wgZW5hYmxlZCkKKyAgICBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJz
dFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKKyAgICBHZXRSYXdD
b29raWVzKHVpbnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OlVSTCB1cmwpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERl
bGV0ZUNvb2tpZSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBj
b29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFdlYktp
dDo6QmxvYlJlZ2lzdHJhdGlvbkRhdGEgZGF0YSkKICAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJM
KFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTUwMDBmNS4uOWMx
YzFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIK
ICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKQEAgLTE1NywxMSArMTU4LDEyIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1lCiAgICAgc2V0Q2FjaGVNb2RlbChzdGF0aWNfY2FzdDx1
aW50MzJfdD4ocGFyYW1ldGVycy5jYWNoZU1vZGVsKSk7CiAKICNpZiBQTEFURk9STShNQUMpIHx8
IFVTRShDRk5FVFdPUkspCi0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NC
dW5kbGVJZGVudGlmaWVyKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2Uo
cGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRpZgogCisgICAgLy8g
RklYTUU6IGluc3RlYWQgb2YgaGFuZGxpbmcgdGhpcyBoZXJlLCBhIG1lc3NhZ2Ugc2hvdWxkIGJl
IHNlbnQgbGF0ZXIgKHNjYWxlcyB0byBtdWx0aXBsZSBzZXNzaW9ucykKICAgICBpZiAocGFyYW1l
dGVycy5wcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgICAgICBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tl
cjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRV
c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwpAQCAtMjEyLDE0ICsyMTQsMTQgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1
aW50NjRfdCBzZXNzaW9uSUQpCiB7Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQp
CiB7Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCk7CisgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA1NDg0ZDQ5Li5hZDVhOGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTEwNCw4ICsxMDQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQ
cm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAg
ICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCk7Ci0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAg
dm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIHZvaWQgZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHZvaWQgZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKICAgICB2b2lkIGRv
d25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQp
OwogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDZhZDZjMjUuLmM0YTcxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zNCw4ICszNCw4IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZChWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXMpCiAjZW5kaWYKIAot
ICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotICAgIERlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKKyAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90
IHNlc3Npb25JRCkKKyAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBz
ZXNzaW9uSUQpCiAKICAgICBEb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ2FuY2VsRG93bmxvYWQodWludDY0
X3QgZG93bmxvYWRJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IGVmMjVmMzAxLi41ZjNiZjcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0LmgKQEAgLTM5LDExICszOSw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAotICAgIHN0YXRpYyB2b2lkIHNldFByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0g
ICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0KLSAgICBzdGF0aWMgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Cisg
ICAgLy8gRklYTUU6IHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lv
blRyYWNrZXIKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVp
bnQ2NF90IHNlc3Npb25JRCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQubW0KaW5kZXggYTM4MjllOC4uMTA1OWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpA
QCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJSZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5oIgogCisjaW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIgogI2ltcG9ydCAi
V2ViRXJyb3JzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQg
PFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAtMzYsMTIgKzM3LDYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
KCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsKLSAg
ICByZXR1cm4gc2Vzc2lvbjsKLX0KIAogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6On5SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dCgpCiB7CkBAIC02NSw3ICs2MCw3IEBAIGJvb2wgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdAogTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Np
b24oKSBjb25zdAogewogICAgIGlmIChtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAg
ICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKCkuZ2V0KCk7CisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiog
cHJpdmF0ZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCkuZ2V0KCk7CiAgICAgICAgIGlmIChwcml2YXRlU2Vzc2lv
bikKICAgICAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb247CiAgICAgICAgIC8vIFNvbWUg
cmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBi
ZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95
IGl0cyBzZXNzaW9uLgpAQCAtNzYsMTEgKzcxLDYgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogICAgIHJldHVy
biBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi1O
ZXR3b3JrU3RvcmFnZVNlc3Npb24qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKLXsKLSAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oKS5nZXQoKTsKLX0KLQogUmV0YWluUHRyPENGRGF0YVJlZj4gUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bmlsOwpAQCAtOTEsMzIgKzgxLDEzIEBAIFJlc291cmNlRXJyb3IgUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgcmV0
dXJuIFdlYktpdDo6YmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQogCi1zdGF0aWMgU3RyaW5nJiBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkKLXsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJh
c2U7Ci0gICAgcmV0dXJuIGJhc2U7Ci19Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7Ci0gICAgcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKLX0KLQot
dm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCi17Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYg
KFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVCghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgp
LmlzTnVsbCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0
cmluZyhwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgKyAiLlBy
aXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0KLSAgICBwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbigpID0gc3RkOjptb3ZlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKCkpKTsKLX0KLQotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKCkgPSBudWxscHRyOworICAgIEFTU0VSVCghU2Vzc2lvblRyYWNrZXI6OmdldElkZW50
aWZpZXJCYXNlKCkuaXNOdWxsKCkpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Np
b25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkgKyAnLicgKyBTdHJpbmc6Om51
bWJlcihzZXNzaW9uSUQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAu
Y3BwCmluZGV4IDNiZWY1NjQuLmQ3ZjhkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKQEAgLTUyLDMxICs1MiwxNiBAQCB1aW50NjRfdCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6aW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJikKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkKLXsKLX0KLQogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi1OZXR3b3JrU3Rv
cmFnZVNlc3Npb24qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAmTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLX0KLQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TZXNzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYzNhYTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2Vzc2lvblRyYWNrZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc2Vzc2lvbk1hcCgpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4+IG1hcDsK
KyAgICByZXR1cm4gbWFwLmdldCgpOworfQorCitzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFz
ZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGJhc2U7CisgICAgcmV0dXJuIGJhc2U7Cit9CisKK2NvbnN0IEhhc2hN
YXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgU2Vz
c2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXAoKQoreworICAgIHJldHVybiBzZXNzaW9uTWFwKCk7
Cit9CisKK2NvbnN0IFN0cmluZyYgU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkK
K3sKKyAgICByZXR1cm4gaWRlbnRpZmllckJhc2UoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4mIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHVpbnQ2NF90IHNl
c3Npb25JRCkKK3sKKyAgICByZXR1cm4gc2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKK30KKwordm9pZCBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBzZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7Cit9CisKK3ZvaWQgU2Vzc2lv
blRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWRlbnRpZmllckJhc2UoKSA9IGlk
ZW50aWZpZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2Vzc2lvblRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmM2
ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFj
a2VyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Vzc2lvblRyYWNr
ZXJfaAorI2RlZmluZSBTZXNzaW9uVHJhY2tlcl9oCisKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2Vzc2lvblRyYWNrZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNlc3Npb25UcmFja2VyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgZGVmYXVsdFNlc3Npb25JRCA9IDE7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQgPSAyOworICAgIHN0YXRpYyBib29sIGlzRXBoZW1lcmFsSUQo
dWludDY0X3Qgc2Vzc2lvbklEKSB7IHJldHVybiBzZXNzaW9uSUQgIT0gU2Vzc2lvblRyYWNrZXI6
OmRlZmF1bHRTZXNzaW9uSUQ7IH0KKyAgICBzdGF0aWMgY29uc3QgSGFzaE1hcDx1aW50NjRfdCwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBnZXRTZXNz
aW9uTWFwKCk7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0SWRlbnRpZmllckJhc2UoKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4mIHNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95
U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZp
ZXJCYXNlKGNvbnN0IFN0cmluZyYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBTZXNzaW9uVHJhY2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
Q29va2llU3RvcmFnZVNoaW0uY3BwCmluZGV4IDU3MTE0MzYuLjFiYmI4ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0uY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgpAQCAtNDcsNyArNDgsNyBAQCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVm
IHdlYktpdENvb2tpZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRlckZpZWxkc0ZvclVSTChDRkhUVFBD
bwogewogICAgIFN0cmluZyBjb29raWVzOwogICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2llc1VS
TDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmYWxzZSwgZmlyc3RQYXJ0eUZvckNv
b2tpZXNVUkwsIGluUmVxdWVzdFVSTCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llcyksIDApKQorICAgIGlmICghV2Vi
UHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFNlc3Npb25UcmFja2VyOjpkZWZhdWx0U2Vzc2lvbklELCBmaXJz
dFBhcnR5Rm9yQ29va2llc1VSTCwgaW5SZXF1ZXN0VVJMKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVzKSwgMCkpCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkNvb2tpZXMg
PSBjb29raWVzLmNyZWF0ZUNGU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vz
c2lvbi5jcHAKaW5kZXggNDIzMTJiYi4uYzJhMjYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUElTZXNzaW9uLmNwcApAQCAtMjYsMjMgKzI2LDYzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQVBJU2Vzc2lvbi5oIgogCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
KwogbmFtZXNwYWNlIEFQSSB7CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlEKGJvb2wgaXNF
cGhlbWVyYWwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyB1
aW50NjRfdCB1bmlxdWVTZXNzaW9uSUQgPSBXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEOworICAgIEFTU0VSVChpc0VwaGVtZXJhbCk7CisgICAgcmV0dXJuICsr
dW5pcXVlU2Vzc2lvbklEOworfQorCitTZXNzaW9uJiBTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBTZXNzaW9uKiBk
ZWZhdWx0U2Vzc2lvbiA9IG5ldyBTZXNzaW9uKGZhbHNlLCBXZWJLaXQ6OlNlc3Npb25UcmFja2Vy
OjpkZWZhdWx0U2Vzc2lvbklEKTsKKyAgICByZXR1cm4gKmRlZmF1bHRTZXNzaW9uOworfQorCitT
ZXNzaW9uJiBTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBTZXNzaW9uKiBsZWdhY3lQcml2YXRlU2Vzc2lv
biA9IG5ldyBTZXNzaW9uKHRydWUsIFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQpOworICAgIHJldHVybiAqbGVnYWN5UHJpdmF0ZVNlc3Npb247Cit9CisKIFNl
c3Npb246OlNlc3Npb24oYm9vbCBpc0VwaGVtZXJhbCkKICAgICA6IG1faXNFcGhlbWVyYWwoaXNF
cGhlbWVyYWwpCisgICAgLCBtX3Nlc3Npb25JRChnZW5lcmF0ZUlEKGlzRXBoZW1lcmFsKSkKK3sK
K30KKworU2Vzc2lvbjo6U2Vzc2lvbihib29sIGlzRXBoZW1lcmFsLCB1aW50NjRfdCBzZXNzaW9u
SUQpCisgICAgOiBtX2lzRXBoZW1lcmFsKGlzRXBoZW1lcmFsKQorICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogewogfQogCiBQYXNzUmVmUHRyPFNlc3Npb24+IFNlc3Npb246OmNyZWF0ZShi
b29sIGlzRXBoZW1lcmFsKQogeworICAgIC8vIEZJWE1FOiBzdXBwb3J0IGNyZWF0aW9uIG9mIG5v
bi1kZWZhdWx0LCBub24tZXBoZW1lcmFsIHNlc3Npb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTZXNzaW9uKGlzRXBoZW1lcmFsKSk7CiB9CiAKLWJvb2wgU2Vzc2lvbjo6aXNFcGhlbWVyYWwo
KQorYm9vbCBTZXNzaW9uOjppc0VwaGVtZXJhbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXNF
cGhlbWVyYWw7CiB9CiAKK3VpbnQ2NF90IFNlc3Npb246OmdldElEKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKIFNlc3Npb246On5TZXNzaW9uKCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oCmluZGV4IDNmYjVmNjcuLmRmNzE2ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmlu
ZSBBUElTZXNzaW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIlNlc3Np
b25UcmFja2VyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIEFQ
SSB7CkBAIC0zNCwxMiArMzUsMTcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBTZXNzaW9uIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U2Vzc2lvbj4gewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlc3Npb24+IGNyZWF0ZShib29sIGlzRXBoZW1l
cmFsKTsKLSAgICBib29sIGlzRXBoZW1lcmFsKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGRlZmF1
bHRTZXNzaW9uKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGxlZ2FjeVByaXZhdGVTZXNzaW9uKCk7
CisgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0OworICAgIHVpbnQ2NF90IGdldElEKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB+U2Vzc2lvbigpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNl
c3Npb24oYm9vbCBpc0VwaGVtZXJhbCk7CisgICAgU2Vzc2lvbihib29sIGlzRXBoZW1lcmFsLCB1
aW50NjRfdCBzZXNzaW9uSUQpOwogICAgIGJvb2wgbV9pc0VwaGVtZXJhbDsKKyAgICB1aW50NjRf
dCBtX3Nlc3Npb25JRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGUxMDUxNWIuLjM3ZDU3MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAi
V0tDb250ZXh0UHJpdmF0ZS5oIgpAQCAtNDY3LDE2ICs0NjgsMTYgQEAgdm9pZCBXZWJDb250ZXh0
OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJp
dmF0ZUJyb3cKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmICh1c2VzTmV0d29y
a1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlmIChwcml2YXRlQnJv
d3NpbmdFbmFibGVkKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7Cisg
ICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJp
dmF0ZVNlc3Npb25JRCksIDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKSwgMCk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpLCAwKTsKICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCkKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpF
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpOworICAgICAgICBzZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpKTsKICAgICBlbHNlCi0gICAgICAg
IHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKSk7CisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpKTsKIH0KIAogdm9pZCAoKnNfaW52YWxpZE1lc3NhZ2VD
YWxsYmFjaykoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUpOwpAQCAtNTk3LDcgKzU5OCw3IEBAIFdl
YlByb2Nlc3NQcm94eSYgV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6SW5pdGlhbGl6ZVdlYlByb2Nlc3MocGFy
YW1ldGVycywgV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlcihpbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGEuZ2V0KCksICpwcm9jZXNzKSksIDApOwogCiAgICAgaWYgKFdlYlBy
ZWZlcmVuY2VzOjphbnlQYWdlR3JvdXBzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSkKLSAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpLCAwKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCksIDApOwogCiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3Mp
OwogCkBAIC03NDAsNyArNzQxLDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250ZXh0OjpjcmVh
dGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCkKICAgICByZXR1cm4g
KnJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0
ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAs
IFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2Vi
Q29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkqIHJlbGF0
ZWRQYWdlKQogewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7CiAgICAgaWYg
KG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsK
QEAgLTc1Niw3ICs3NTcsMTMgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGEKICAgICAgICAgICAg
IHByb2Nlc3MgPSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1p
dCgpOwogICAgIH0KIAotICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGll
bnQsIHBhZ2VHcm91cCA/ICpwYWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCkpOwor
ICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHBhZ2VHcm91cCA/
ICpwYWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCksIHNlc3Npb24pOworfQorCitQ
YXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiBy
ZWxhdGVkUGFnZSkKK3sKKyAgICBXZWJQYWdlR3JvdXAqIGdyb3VwID0gcGFnZUdyb3VwID8gcGFn
ZUdyb3VwIDogbV9kZWZhdWx0UGFnZUdyb3VwLmdldCgpOworICAgIHJldHVybiBjcmVhdGVXZWJQ
YWdlKHBhZ2VDbGllbnQsIGdyb3VwLCBncm91cC0+cHJlZmVyZW5jZXMoKS0+cHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCgpID8gQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpIDogQVBJ
OjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLCByZWxhdGVkUGFnZSk7CiB9CiAKIERvd25sb2Fk
UHJveHkqIFdlYkNvbnRleHQ6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2Us
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5oCmluZGV4IGI5OGM0ODYuLmY2YjlmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHB1YmxpYzoKIAogICAgIFN0b3JhZ2VN
YW5hZ2VyJiBzdG9yYWdlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuICptX3N0b3JhZ2VNYW5hZ2Vy
OyB9CiAKKyAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiwgV2ViUGFnZUdyb3VwKiwgQVBJOjpTZXNzaW9uJiwgV2ViUGFnZVByb3h5KiByZWxhdGVk
UGFnZSA9IDApOwogICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBh
Z2VDbGllbnQmLCBXZWJQYWdlR3JvdXAqLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gMCk7
CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5qZWN0ZWRCdW5kbGVQYXRoOyB9CkBAIC0yOTIsNiArMjkzLDggQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIHdpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7CiAgICAgc3RhdGlj
IHZvaWQgd2lsbFN0b3BVc2luZ1ByaXZhdGVCcm93c2luZygpOwogCisgICAgc3RhdGljIGJvb2wg
aXNFcGhlbWVyYWxTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CisKICNpZiBVU0UoU09VUCkK
ICAgICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhib29sKTsKICAgICBib29sIGlnbm9yZVRMU0Vy
cm9ycygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlVExTRXJyb3JzOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc0NGMxYzUuLjQxYmI3NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMjgsMTIgKzIyOCwx
MiBAQCBzdGF0aWMgY29uc3QgY2hhciogd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcoV2ViRXZl
bnQ6OlR5cGUgdHlwZSkKIH0KICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAKLVBhc3NSZWZQdHI8
V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCB1aW50
NjRfdCBwYWdlSUQpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVh
dGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJQ
YWdlR3JvdXAmIHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCB1aW50NjRfdCBwYWdl
SUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwg
cHJvY2VzcywgcGFnZUdyb3VwLCBwYWdlSUQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YlBhZ2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlR3JvdXAsIHNlc3Npb24sIHBhZ2VJ
RCkpOwogfQogCi1XZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCB1
aW50NjRfdCBwYWdlSUQpCitXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VHcm91cCYgcGFnZUdy
b3VwLCBBUEk6OlNlc3Npb24mIHNlc3Npb24sIHVpbnQ2NF90IHBhZ2VJRCkKICAgICA6IG1fcGFn
ZUNsaWVudChwYWdlQ2xpZW50KQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3Bh
Z2VHcm91cChwYWdlR3JvdXApCkBAIC0yNzksNiArMjc5LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
LCBXZWIKICAgICAsIG1fbmVlZFRvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3Bh
Z2VJRChwYWdlSUQpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKICAgICAsIG1faXNQYWdlU3Vz
cGVuZGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1faXNTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoVGV4dENoZWNrZXI6OmlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZGIwMGFlNC4uODNhMmFl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBXZWJQYWdlUHJveHlfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiQVBJU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkF1dG9Db3JyZWN0aW9uQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rp
b24uaCIKQEAgLTc0LDYgKzc1LDcgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzI3LDEwICszMjks
MTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6UGFnZT4KICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVi
bGljOgogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNs
aWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYs
IFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYsIHVpbnQ2NF90
IHBhZ2VJRCk7CiAgICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKICAgICB1aW50NjRfdCBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIHVpbnQ2NF90IHNlc3Npb25J
RCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi0+Z2V0SUQoKTsgfQogCiAgICAgV2ViRnJhbWVQ
cm94eSogbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWUuZ2V0KCk7IH0KICAg
ICBXZWJGcmFtZVByb3h5KiBmb2N1c2VkRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzZWRG
cmFtZS5nZXQoKTsgfQpAQCAtODU1LDcgKzg1OCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpT
Y3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgeyByZXR1cm4gbV9z
Y3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KICAgICAgICAgCiBwcml2YXRlOgotICAgIFdlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgdWludDY0
X3QgcGFnZUlEKTsKKyAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94
eSYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYsIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAg
dm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZvaWQgdXBkYXRlVmlld1N0YXRlKFdl
YkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OlZpZXdTdGF0
ZTo6QWxsRmxhZ3MpOwpAQCAtMTMxMiw2ICsxMzE1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgUmVmPEFQSTo6U2Vzc2lvbj4gbV9zZXNzaW9uOwog
CiAgICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxMGYxYWIwLi40NzY2YjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY3LDEwICsxNjcs
MTAgQEAgV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UodWludDY0X3QgcGFn
ZUlEKQogICAgIHJldHVybiBnbG9iYWxQYWdlTWFwKCkuZ2V0KHBhZ2VJRCk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXApCitQYXNzUmVmUHRyPFdl
YlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwLCBBUEk6OlNlc3Npb24mIHNlc3Npb24p
CiB7CiAgICAgdWludDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAgICBSZWZQdHI8
V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwg
KnRoaXMsIHBhZ2VHcm91cCwgcGFnZUlEKTsKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiB3ZWJQ
YWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VHcm91cCwg
c2Vzc2lvbiwgcGFnZUlEKTsKICAgICBtX3BhZ2VNYXAuc2V0KHBhZ2VJRCwgd2ViUGFnZS5nZXQo
KSk7CiAgICAgZ2xvYmFsUGFnZU1hcCgpLnNldChwYWdlSUQsIHdlYlBhZ2UuZ2V0KCkpOwogI2lm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAppbmRleCBhM2M5MjljLi5jNTQ1MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYlByb2Nlc3NQcm94
eV9oCiAjZGVmaW5lIFdlYlByb2Nlc3NQcm94eV9oCiAKKyNpbmNsdWRlICJBUElTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXJNYXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCkBAIC03Nyw3
ICs3OCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9j
b250ZXh0LmdldCgpOyB9CiAKICAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCk7Ci0gICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2Uo
UGFnZUNsaWVudCYsIFdlYlBhZ2VHcm91cCYpOworICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5
PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlR3JvdXAmLCBBUEk6OlNlc3Npb24m
KTsKICAgICB2b2lkIGFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBw
YWdlSUQpOwogICAgIHZvaWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwogICAgIFZl
Y3RvcjxXZWJQYWdlUHJveHkqPiBwYWdlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNmNzVlMzUuLjdkNWZhYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTc4Nyw2ICs3ODcsOCBAQAogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJ
bnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRl
TWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzI4RTg2RjExNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZFRjE3OTUxODhDMDA4
Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLzsgfTsKIAkJNzI4RTg2RjIxNzk1MTg4QzAw
ODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9y
UGlja2VyTWFjLm1tICovOyB9OworCQk3NTNFM0UwRDE4ODczOTg1MDAxODg0OTYgLyogU2Vzc2lv
blRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzUzRTNFMEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCAqLzsgfTsK
KwkJNzUzRTNFMEUxODg3Mzk4OTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTNFM0UwOTE4ODczOTRCMDAx
ODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCAqLzsgfTsKIAkJNzU1NDIyQkQxODA2MkJCMjAwNDZG
NkE4IC8qIFdLT3JpZ2luRGF0YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1NDIyQjkxODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2lu
RGF0YU1hbmFnZXIuY3BwICovOyB9OwogCQk3NTU0MjJDNDE4MDYyQkY5MDA0NkY2QTggLyogV2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJCRTE4MDYyQkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0
YU1hbmFnZXJQcm94eS5jcHAgKi87IH07CiAJCTc1NTQyMkNCMTgwNjUwMDIwMDQ2RjZBOCAvKiBX
ZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NTU0MjJDNjE4MDY0RkZDMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1h
bmFnZXIuY3BwICovOyB9OwpAQCAtMjQ2OCw2ICsyNDcwLDggQEAKIAkJNkVFODQ5QzYxMzY4RDky
RDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS0luc3BlY3RvclByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0luc3Bl
Y3RvclByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RUYx
Nzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2Vy
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NTNFM0UwOTE4ODczOTRCMDAx
ODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Vzc2lvblRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzUzRTNF
MEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlc3Npb25UcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzU1NDIyQjkxODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2luRGF0YU1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tPcmlnaW5E
YXRhTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTQyMkJBMTgw
NjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLT3JpZ2luRGF0YU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzU1NDIyQkUxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViT3Jp
Z2luRGF0YU1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
NzI4LDYgKzM3MzIsOCBAQAogCQkJCTMzMTUyOTc0MTMwRDBDQjIwMEVEMjQ4MyAvKiBTZWN1cml0
eU9yaWdpbkRhdGEuaCAqLywKIAkJCQk1MThEMkNDODEyRDUxREZCMDAzQkI5M0IgLyogU2Vzc2lv
blN0YXRlLmNwcCAqLywKIAkJCQk1MThEMkNDOTEyRDUxREZCMDAzQkI5M0IgLyogU2Vzc2lvblN0
YXRlLmggKi8sCisJCQkJNzUzRTNFMEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2Vy
LmNwcCAqLywKKwkJCQk3NTNFM0UwOTE4ODczOTRCMDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIu
aCAqLywKIAkJCQkxQTY0MjBFMjEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmNw
cCAqLywKIAkJCQkxQTY0MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmgg
Ki8sCiAJCQkJNTEyMTc0NUUxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNw
cCAqLywKQEAgLTY2NTMsNiArNjY1OSw3IEBACiAJCQkJQkM0MDc2MUMxMjRGRjAzNzAwNjhGMjBB
IC8qIFdLVVJMQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjBDMTI0RkYwMjcwMDY4RjIw
QSAvKiBXS1VSTFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjI5MTI0RkYwNDAw
MDY4RjIwQSAvKiBXS1VSTFJlcXVlc3ROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzUzRTNFMEUx
ODg3Mzk4OTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzQwNzYwRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzU5Q0NENUExODA4RjYxNjAwNzhFOEE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjJCMTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VS
TFJlc3BvbnNlTlMuaCBpbiBIZWFkZXJzICovLApAQCAtNzkxMSw2ICs3OTE4LDcgQEAKIAkJCQlC
Q0QyNUYxODExRDZCREUxMDAxNjlCMEUgLyogV0tCdW5kbGVGcmFtZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzQ5ODYzMDEyNEQxOEMxMDBEODM0RTEgLyogV0tCdW5kbGVIaXRUZXN0UmVzdWx0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1MDFCRDFBMTJGMTI0MzQwMEU5RjI0OCAvKiBXS0J1
bmRsZUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NTNFM0UwRDE4ODczOTg1MDAx
ODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3MDQzQ0Qx
MkY3NUVFMDAwNjQ3MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzRCRUZFMjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjA1MjgyMTFDOTQyODQwMDhGMzM3NSAvKiBXS0J1
bmRsZVBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDE2
NTBiNTUuLmRiZjBjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUg
IkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLmgiCkBAIC0yOTksOSArMzAwLDkgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdy
b3VwLCBib28KICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBUaGlzIHRlc3Qtb25seSBm
dW5jdGlvbiBkb2Vzbid0IHdvcmsgd2l0aCBOZXR3b3JrUHJvY2VzcywgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUyNzQ+LgogI2lmIFBMQVRGT1JNKE1BQykgfHwg
VVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsK
KyAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CiAgICAgZWxz
ZQotICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpOworICAgICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oU2Vz
c2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpOwogI2VuZGlmCiAgICAgY29uc3Qg
SGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5p
ZGVudGlmaWVyKCkpLT5wYWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9y
IGl0ZXIgPSBwYWdlcy5iZWdpbigpOyBpdGVyICE9IHBhZ2VzLmVuZCgpOyArK2l0ZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNTVjMWU1MC4uNDVmNjhkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgorI2luY2x1ZGUgIlNlc3Np
b25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUltcGwuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCkBA
IC03Miw2ICs3MywxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorc3RhdGljIHVpbnQ2NF90IGxl
Z2FjeVNlc3Npb25JRChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24gJnNlc3Npb24pCit7Cisg
ICAgcmV0dXJuIHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkgPyBTZXNzaW9uVHJh
Y2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCA6IFNlc3Npb25UcmFja2VyOjpkZWZhdWx0U2Vz
c2lvbklEOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFs
aXplKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViUGxhdGZvcm1TdHJhdGVnaWVz
PiBwbGF0Zm9ybVN0cmF0ZWdpZXM7CkBAIC0xMzMsNyArMTQxLDcgQEAgU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24KICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNz
OjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0
OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVzRm9yRE9NKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCks
IGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJv
Y2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00o
bGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCks
IDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KQEAgLTE0Niw3ICsxNTQsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaQogewog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24uaXNQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENv
b2tpZXNGcm9tRE9NKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMTU5
LDcgKzE2Nyw3IEBAIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sCiAjaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKICAgICAgICAgYm9vbCByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKHNlc3Npb24u
aXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3Vs
dCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChsZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIGZp
cnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE3Myw3ICsxODEsNyBAQCBT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBOZXR3b3JrU3RvcmFnZQogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
aWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAg
IFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29y
a0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Np
b24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWU6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJl
ZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShsZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWU6OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE4Niw3ICsxOTQsNyBAQCBib29sIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAo
V2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3
Q29va2llcyhzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tp
ZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhsZWdhY3lTZXNz
aW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0xOTksNyArMjA3LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tp
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGMKIHsKICNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpEZWxldGVDb29raWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShsZWdhY3lTZXNzaW9uSUQoc2Vzc2lv
biksIHVybCwgY29va2llTmFtZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggOTU5
NmM1Ny4uODYyOWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaApAQCAtMzksOSArMzksOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAotICAgIHN0
YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2Uo
Y29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7
CisgICAgLy8gRklYTUU6IHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vz
c2lvblRyYWNrZXIKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCk7CisKICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQ
b2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogICAgIFdlYkZy
YW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggZjgwODY3Yy4uNDc2
MmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CkBAIC0yNCw2ICsyNCw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWUuaD4KQEAgLTM0LDUyICszNiwyMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVTZXNzaW9uKCkKLXsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4+IHNlc3Npb247Ci0gICAgcmV0dXJuIHNlc3Npb247Ci19Ci0KLXN0YXRpYyBTdHJpbmcm
IGlkZW50aWZpZXJCYXNlKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBi
YXNlOwotICAgIHJldHVybiBiYXNlOwotfQogICAgIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNv
bnN0IFN0cmluZyYgYmFzZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAg
aWRlbnRpZmllckJhc2UoKSA9IGJhc2U7Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lv
bklEKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBpZiAocHJpdmF0ZVNl
c3Npb24oKSkKKyAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGJhc2U7Ci0gICAgaWYgKGlkZW50aWZpZXJCYXNl
KCkuaXNOdWxsKCkpCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgp
LmlzTnVsbCgpKQogICAgICAgICBiYXNlID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJ
ZGVudGlmaWVyXTsKICAgICBlbHNlCi0gICAgICAgIGJhc2UgPSBpZGVudGlmaWVyQmFzZSgpOwot
Ci0gICAgcHJpdmF0ZVNlc3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihiYXNlKTsKLX0KKyAgICAgICAgYmFzZSA9IFNlc3Npb25UcmFj
a2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpOwogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKLXsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotCi0gICAgcHJpdmF0ZVNlc3Npb24oKSA9IG51bGxwdHI7CisgICAgU2Vzc2lv
blRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3Jl
YXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vz
c2lvbklEKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2ll
QWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kp
CkBAIC04OSw4ICs2MiwxMCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENv
b2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBYwogICAgIGlmIChSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQogICAg
ICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9s
aWN5KTsKIAotICAgIGlmIChwcml2YXRlU2Vzc2lvbigpKQotICAgICAgICBXS1NldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kocHJpdmF0ZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBw
b2xpY3kpOworICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvbiA6IFNlc3Npb25UcmFja2VyOjpn
ZXRTZXNzaW9uTWFwKCkudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHNlc3Npb24pCisgICAgICAg
ICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koc2Vzc2lvbi0+Y29va2llU3RvcmFnZSgp
LmdldCgpLCBwb2xpY3kpOworICAgIH0KIH0KICAgICAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdApAQCAtMTI1LDExICsxMDAs
MTAgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAg
IGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CisgICAgICAgIHJldHVybiAq
U2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQpOwogCiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCk7CiB9Ci0gICAgCiBXZWJGcmFtZUxvYWRlckNsaWVudCogV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6d2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdAogewogICAgIGlmICgh
ZnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmNwcAppbmRleCBmOTc0MzRhLi40YWE5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogCisjaW5j
bHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CkBAIC0zNiwyNyArMzcs
MTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1z
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVTZXNz
aW9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4+IHNlc3Npb247Ci0gICAgcmV0dXJuIHNlc3Npb247Ci19Ci0KLXZv
aWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCit2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKLSAgICBpZiAocHJpdmF0ZVNlc3Npb24oKSkKKyAgICBpZiAoU2Vzc2lvblRyYWNrZXI6
OnNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdmF0ZVNlc3Np
b24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpOwotfQotCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAg
cHJpdmF0ZVNlc3Npb24oKSA9IG51bGxwdHI7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24o
c2Vzc2lvbklEKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKTsKIH0KIAogV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUpCkBA
IC03MCw3ICs1OCw3IEBAIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQoV2ViRnJhbWUqIGZyYW1lKQogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgaWYg
KGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkp
Ci0gICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb24oKTsKKyAgICAgICAgcmV0dXJuICpTZXNz
aW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oCmluZGV4IDBlMDM1NTIuLjIwNGNjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDIsOCArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsK
LSAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIHN0
YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklE
KTsKIAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAyOTFh
YjRhLi4xMjJjNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29k
ZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAi
U3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYkFw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgiCkBAIC0zMzUsNyArMzM2LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWUKICAgICAgICAgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyh0cnVlKTsKIAog
I2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAgICBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNl
KHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CisgICAgU2Vzc2lvblRyYWNr
ZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmll
cik7CiAjZW5kaWYKIAogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3Jr
U2Vzc2lvbikKQEAgLTQ1MiwxNyArNDUzLDE3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZnVsbEtleWJv
YXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQogICAg
IG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2
b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklEKQogewogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNP
VVApCi0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpOworICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3M6
OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKK3ZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewogI2lmIFBMQVRG
T1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBTZXNz
aW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGNkOTliYTEuLjJhODZmNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xNjUsOSArMTY1LDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKIAotICAgIHZvaWQg
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHZvaWQgZGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKLSAgICAKKyAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CisKICAgICB2b2lkIHBhZ2VEaWRFbnRlcldp
bmRvdyh1aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50
NjRfdCBwYWdlSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggMWM4ZjhjYi4uMmEwNzhlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTEsOSArNTEsOSBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRJZ25vcmVU
TFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiAjZW5kaWYKIAotICAgIC8vIFByaXZhdGUg
YnJvd3Npbmcgc2Vzc2lvbiBpcyBwZXIgcHJvY2Vzcy4gSW5kaXZpZHVhbCBwYWdlcyBvciBwYWdl
IGdyb3VwcyBtYXkgdXNlIHRoZSBwcml2YXRlIHNlc3Npb24gb3IgdGhlIGRlZmF1bHQgb25lIGFz
IGFwcHJvcHJpYXRlLgotICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotICAgIERl
c3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKKyAgICAvLyBMZWdhY3kgcHJpdmF0ZSBicm93
c2luZyBzZXNzaW9uIGlzIHBlciBwcm9jZXNzLiBJbmRpdmlkdWFsIHBhZ2VzIG9yIHBhZ2UgZ3Jv
dXBzIG1heSB1c2UgdGhlIHByaXZhdGUgc2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUgYXMgYXBw
cm9wcmlhdGUuCisgICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNz
aW9uSUQpCisgICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lv
bklEKQogCiAgICAgIyBQbHVnLWlucy4KICAgICBEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoKHVpbnQzMl90IGhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSkK
</data>
<flag name="review"
          id="245504"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="245505"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221565</attachid>
            <date>2014-01-18 12:30:21 -0800</date>
            <delta_ts>2014-01-18 13:10:25 -0800</delta_ts>
            <desc>missing deref (where did it go!?)</desc>
            <filename>sessionid-fix.03.diff</filename>
            <type>text/plain</type>
            <size>65479</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjExNGRmZi4uNDk5YmM3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTIwNCw2ICsyMDQsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L1ByaW50SW5mby5jcHAKICAgICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAogICAgIFNo
YXJlZC9TZXNzaW9uU3RhdGUuY3BwCisgICAgU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAogICAg
IFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCiAgICAgU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAogICAgIFNoYXJlZC9TdGF0aXN0aWNzRGF0YS5jcHAKQEAgLTI5Myw2ICsyOTQsNyBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5m
b3JtYXRpb24uY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCisgICAg
VUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAK
ICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvRmluZElu
ZGljYXRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMzA0N2ExLi40MjExNmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTYgQEAKKzIwMTQtMDEtMTggIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29t
PgorCisgICAgICAgIEZsZXNoIG91dCBzZXNzaW9uIEFQSXMgKHN0aWxsIG5vdCBlbmFibGVkIGF0
IEFQSSBsZXZlbCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjY5MTgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29r
aWVzRnJvbURPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tp
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAg
ICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmNwcC4KKyAgICAgICAgKFdlYktpdDo6c2Vzc2lvbk1h
cCk6CisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJCYXNlKToKKyAgICAgICAgKFdlYktpdDo6
U2Vzc2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXApOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9u
VHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJh
Y2tlcjo6c2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpkZXN0cm95
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVy
QmFzZSk6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmguCisgICAgICAgIChXZWJLaXQ6OlNl
c3Npb25UcmFja2VyOjppc0VwaGVtZXJhbElEKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tp
ZVN0b3JhZ2VTaGltLmNwcDoKKyAgICAgICAgKFdlYktpdDo6d2ViS2l0Q29va2llU3RvcmFnZUNv
cHlSZXF1ZXN0SGVhZGVyRmllbGRzRm9yVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJU2Vz
c2lvbi5jcHA6CisgICAgICAgIChBUEk6OmdlbmVyYXRlSUQpOgorICAgICAgICAoQVBJOjpTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbik6CisgICAgICAgIChBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZh
dGVTZXNzaW9uKToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6U2Vzc2lvbik6CisgICAgICAgIChB
UEk6OlNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlNlc3Npb246OmlzRXBoZW1lcmFs
KToKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6Z2V0SUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UElTZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJv
d3NpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXNzaW9uSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpz
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2Fj
eVNlc3Npb25JRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29va2llc0Zyb21ET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW46CisKIDIwMTQtMDEtMTggIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogUGFnZSBzaG91bGQgdXNlIHN0ZDo6dW5pcXVlX3B0ciBmb3IgSW5z
cGVjdG9yQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTljMTE4
Zi4uOGEzMGI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NDIsNiArNDQy
LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2VjdXJp
dHlPcmlnaW5EYXRhLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBcCisJU291cmNlL1dl
YktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVk
L1Nlc3Npb25UcmFja2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdGF0aXN0aWNzRGF0
YS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdGF0aXN0aWNzRGF0YS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvc291cC9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGY1OTk0NDYuLmIxZGQ1NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5j
bHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JEYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CkBAIC0xNDcsMTAgKzE0OCwxMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChib29sIGVu
YWJsZWQpCiAgICAgbV9zZXJpYWxMb2FkaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKLXN0YXRp
YyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkKK3N0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkg
ewotICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uID0gUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBpZiAoU2Vz
c2lvblRyYWNrZXI6OmlzRXBoZW1lcmFsSUQoc2Vzc2lvbklEKSkgeworICAgICAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24o
c2Vzc2lvbklEKS5nZXQoKTsKICAgICAgICAgaWYgKHByaXZhdGVTZXNzaW9uKQogICAgICAgICAg
ICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbjsKICAgICAgICAgLy8gU29tZSByZXF1ZXN0cyB3aXRo
IHByaXZhdGUgYnJvd3NpbmcgbW9kZSByZXF1ZXN0ZWQgbWF5IHN0aWxsIGJlIGNvbWluZyBzaG9y
dGx5IGFmdGVyIE5ldHdvcmtQcm9jZXNzIHdhcyB0b2xkIHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24u
CkBAIC0xNjAsOSArMTYxLDkgQEAgc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9h
ZCh1aW50NjRfdCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIHdpdGggdGhl
IHByaXZhdGUgYnJvd3NpbmcgZmxhZy4KKyAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIHdpdGgg
dGhlIHNlc3Npb24gSUQuCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNoYXJlZCgpLmRvd25sb2FkTWFu
YWdlcigpLnN0YXJ0RG93bmxvYWQoZG93bmxvYWRJRCwgcmVxdWVzdCk7CiB9CiAKQEAgLTE4Miwz
NCArMTgzLDM0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtCiAgICAgbG9hZGVyLT5kaWRDb252
ZXJ0SGFuZGxlVG9Eb3dubG9hZCgpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKHVpbnQ2NF90IHNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1
bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzdG9yYWdlU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQg
PSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0
UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNl
dENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSh1aW50
NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9t
RE9NKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1
cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNvb2tpZXNFbmFibGVkKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6
OmNvb2tpZXNFbmFibGVkKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBm
aXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSh1aW50NjRfdCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQog
ewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0
b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0
UmF3Q29va2llcyh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQpCiB7Ci0gICAgV2ViQ29yZTo6Z2V0
UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQ
YXJ0eSwgdXJsLCByZXN1bHQpOworICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKHVpbnQ2NF90
IHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsK
LSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgQmxvYlJlZ2lzdHJhdGlvbkRhdGEmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAppbmRleCA5NDU3Mzc1Li4zOTgxZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTc2LDE1ICs3NiwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVj
dFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVk
aXJlY3RVUkwpOwogICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHModWludDMyX3QgcmVzb3Vy
Y2VMb2FkUHJpb3JpdHkpOwogICAgIHZvaWQgc2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCk7
Ci0gICAgdm9pZCBzdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWlu
dDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAg
dm9pZCBzdGFydERvd25sb2FkKHVpbnQ2NF90IHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZvaWQgY29va2llc0Zv
ckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYp
OwotICAgIHZvaWQgY29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wm
IHJlc3VsdCk7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UmF3Q29va2ll
cyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAg
ICB2b2lkIGRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCBjb29raWVz
Rm9yRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTSh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29r
aWVzRW5hYmxlZCh1aW50NjRfdCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCYgcmVzdWx0KTsKKyAgICB2b2lkIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7
CisgICAgdm9pZCBnZXRSYXdDb29raWVzKHVpbnQ2NF90IHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKHVpbnQ2NF90IHNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAogICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IEJsb2JSZWdpc3RyYXRp
b25EYXRhJik7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggN2U4OTAzNS4uYTQ1OTdmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTMyLDE1ICszMiwxNSBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgCiAgICAgU2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSAtPiAo
KQogCi0gICAgU3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2
NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFN0
YXJ0RG93bmxvYWQodWludDY0X3Qgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90
IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwg
dXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKLSAgICBTZXRDb29raWVzRnJvbURPTShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwg
dXJsLCBTdHJpbmcgY29va2llU3RyaW5nKQotICAgIENvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1
cmwpIC0+IChib29sIGVuYWJsZWQpCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2Vi
Q29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpCi0gICAgR2V0UmF3Q29va2llcyhib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3Jl
OjpVUkwgdXJsKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKLSAgICBEZWxl
dGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgdXJsLCBT
dHJpbmcgY29va2llTmFtZSkKKyAgICBDb29raWVzRm9yRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwg
V2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVz
dWx0KQorICAgIFNldENvb2tpZXNGcm9tRE9NKHVpbnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6
VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVTdHJpbmcpCisg
ICAgQ29va2llc0VuYWJsZWQodWludDY0X3Qgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQ
YXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKGJvb2wgZW5hYmxlZCkKKyAgICBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJz
dFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKKyAgICBHZXRSYXdD
b29raWVzKHVpbnQ2NF90IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OlVSTCB1cmwpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERl
bGV0ZUNvb2tpZSh1aW50NjRfdCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBj
b29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFdlYktp
dDo6QmxvYlJlZ2lzdHJhdGlvbkRhdGEgZGF0YSkKICAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJM
KFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTUwMDBmNS4uOWMx
YzFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIK
ICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKQEAgLTE1NywxMSArMTU4LDEyIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1lCiAgICAgc2V0Q2FjaGVNb2RlbChzdGF0aWNfY2FzdDx1
aW50MzJfdD4ocGFyYW1ldGVycy5jYWNoZU1vZGVsKSk7CiAKICNpZiBQTEFURk9STShNQUMpIHx8
IFVTRShDRk5FVFdPUkspCi0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NC
dW5kbGVJZGVudGlmaWVyKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2Uo
cGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRpZgogCisgICAgLy8g
RklYTUU6IGluc3RlYWQgb2YgaGFuZGxpbmcgdGhpcyBoZXJlLCBhIG1lc3NhZ2Ugc2hvdWxkIGJl
IHNlbnQgbGF0ZXIgKHNjYWxlcyB0byBtdWx0aXBsZSBzZXNzaW9ucykKICAgICBpZiAocGFyYW1l
dGVycy5wcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgICAgICBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tl
cjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRV
c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwpAQCAtMjEyLDE0ICsyMTQsMTQgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1
aW50NjRfdCBzZXNzaW9uSUQpCiB7Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQp
CiB7Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCk7CisgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA1NDg0ZDQ5Li5hZDVhOGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTEwNCw4ICsxMDQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQ
cm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAg
ICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCk7Ci0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAg
dm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOworICAgIHZvaWQgZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHZvaWQgZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKICAgICB2b2lkIGRv
d25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQp
OwogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDZhZDZjMjUuLmM0YTcxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zNCw4ICszNCw4IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZChWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXMpCiAjZW5kaWYKIAot
ICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotICAgIERlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKKyAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90
IHNlc3Npb25JRCkKKyAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBz
ZXNzaW9uSUQpCiAKICAgICBEb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ2FuY2VsRG93bmxvYWQodWludDY0
X3QgZG93bmxvYWRJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IGVmMjVmMzAxLi41ZjNiZjcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0LmgKQEAgLTM5LDExICszOSw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAotICAgIHN0YXRpYyB2b2lkIHNldFByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0g
ICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0KLSAgICBzdGF0aWMgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Cisg
ICAgLy8gRklYTUU6IHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lv
blRyYWNrZXIKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVp
bnQ2NF90IHNlc3Npb25JRCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQubW0KaW5kZXggYTM4MjllOC4uMTA1OWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpA
QCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJSZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5oIgogCisjaW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIgogI2ltcG9ydCAi
V2ViRXJyb3JzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQg
PFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAtMzYsMTIgKzM3LDYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
KCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsKLSAg
ICByZXR1cm4gc2Vzc2lvbjsKLX0KIAogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6On5SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dCgpCiB7CkBAIC02NSw3ICs2MCw3IEBAIGJvb2wgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdAogTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Np
b24oKSBjb25zdAogewogICAgIGlmIChtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAg
ICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKCkuZ2V0KCk7CisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiog
cHJpdmF0ZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCkuZ2V0KCk7CiAgICAgICAgIGlmIChwcml2YXRlU2Vzc2lv
bikKICAgICAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb247CiAgICAgICAgIC8vIFNvbWUg
cmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBi
ZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95
IGl0cyBzZXNzaW9uLgpAQCAtNzYsMTEgKzcxLDYgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogICAgIHJldHVy
biBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi1O
ZXR3b3JrU3RvcmFnZVNlc3Npb24qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKLXsKLSAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oKS5nZXQoKTsKLX0KLQogUmV0YWluUHRyPENGRGF0YVJlZj4gUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bmlsOwpAQCAtOTEsMzIgKzgxLDEzIEBAIFJlc291cmNlRXJyb3IgUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgcmV0
dXJuIFdlYktpdDo6YmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQogCi1zdGF0aWMgU3RyaW5nJiBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkKLXsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJh
c2U7Ci0gICAgcmV0dXJuIGJhc2U7Ci19Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7Ci0gICAgcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKLX0KLQot
dm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCi17Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYg
KFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVCghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgp
LmlzTnVsbCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0
cmluZyhwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgKyAiLlBy
aXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0KLSAgICBwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbigpID0gc3RkOjptb3ZlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKCkpKTsKLX0KLQotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKCkgPSBudWxscHRyOworICAgIEFTU0VSVCghU2Vzc2lvblRyYWNrZXI6OmdldElkZW50
aWZpZXJCYXNlKCkuaXNOdWxsKCkpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Np
b25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkgKyAnLicgKyBTdHJpbmc6Om51
bWJlcihzZXNzaW9uSUQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAu
Y3BwCmluZGV4IDNiZWY1NjQuLmQ3ZjhkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKQEAgLTUyLDMxICs1MiwxNiBAQCB1aW50NjRfdCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6aW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJikKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkKLXsKLX0KLQogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi1OZXR3b3JrU3Rv
cmFnZVNlc3Npb24qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAmTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLX0KLQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TZXNzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYzNhYTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2Vzc2lvblRyYWNrZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc2Vzc2lvbk1hcCgpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4+IG1hcDsK
KyAgICByZXR1cm4gbWFwLmdldCgpOworfQorCitzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFz
ZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGJhc2U7CisgICAgcmV0dXJuIGJhc2U7Cit9CisKK2NvbnN0IEhhc2hN
YXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgU2Vz
c2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXAoKQoreworICAgIHJldHVybiBzZXNzaW9uTWFwKCk7
Cit9CisKK2NvbnN0IFN0cmluZyYgU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkK
K3sKKyAgICByZXR1cm4gaWRlbnRpZmllckJhc2UoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4mIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHVpbnQ2NF90IHNl
c3Npb25JRCkKK3sKKyAgICByZXR1cm4gc2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKK30KKwordm9pZCBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBzZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7Cit9CisKK3ZvaWQgU2Vzc2lv
blRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWRlbnRpZmllckJhc2UoKSA9IGlk
ZW50aWZpZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2Vzc2lvblRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmM2
ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFj
a2VyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Vzc2lvblRyYWNr
ZXJfaAorI2RlZmluZSBTZXNzaW9uVHJhY2tlcl9oCisKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2Vzc2lvblRyYWNrZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNlc3Npb25UcmFja2VyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgZGVmYXVsdFNlc3Npb25JRCA9IDE7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQgPSAyOworICAgIHN0YXRpYyBib29sIGlzRXBoZW1lcmFsSUQo
dWludDY0X3Qgc2Vzc2lvbklEKSB7IHJldHVybiBzZXNzaW9uSUQgIT0gU2Vzc2lvblRyYWNrZXI6
OmRlZmF1bHRTZXNzaW9uSUQ7IH0KKyAgICBzdGF0aWMgY29uc3QgSGFzaE1hcDx1aW50NjRfdCwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBnZXRTZXNz
aW9uTWFwKCk7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0SWRlbnRpZmllckJhc2UoKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4mIHNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95
U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZp
ZXJCYXNlKGNvbnN0IFN0cmluZyYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBTZXNzaW9uVHJhY2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
Q29va2llU3RvcmFnZVNoaW0uY3BwCmluZGV4IDU3MTE0MzYuLjFiYmI4ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0uY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgpAQCAtNDcsNyArNDgsNyBAQCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVm
IHdlYktpdENvb2tpZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRlckZpZWxkc0ZvclVSTChDRkhUVFBD
bwogewogICAgIFN0cmluZyBjb29raWVzOwogICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2llc1VS
TDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmYWxzZSwgZmlyc3RQYXJ0eUZvckNv
b2tpZXNVUkwsIGluUmVxdWVzdFVSTCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llcyksIDApKQorICAgIGlmICghV2Vi
UHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFNlc3Npb25UcmFja2VyOjpkZWZhdWx0U2Vzc2lvbklELCBmaXJz
dFBhcnR5Rm9yQ29va2llc1VSTCwgaW5SZXF1ZXN0VVJMKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVzKSwgMCkpCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkNvb2tpZXMg
PSBjb29raWVzLmNyZWF0ZUNGU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vz
c2lvbi5jcHAKaW5kZXggNDIzMTJiYi4uYzJhMjYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUElTZXNzaW9uLmNwcApAQCAtMjYsMjMgKzI2LDYzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQVBJU2Vzc2lvbi5oIgogCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
KwogbmFtZXNwYWNlIEFQSSB7CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlEKGJvb2wgaXNF
cGhlbWVyYWwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyB1
aW50NjRfdCB1bmlxdWVTZXNzaW9uSUQgPSBXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEOworICAgIEFTU0VSVChpc0VwaGVtZXJhbCk7CisgICAgcmV0dXJuICsr
dW5pcXVlU2Vzc2lvbklEOworfQorCitTZXNzaW9uJiBTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBTZXNzaW9uKiBk
ZWZhdWx0U2Vzc2lvbiA9IG5ldyBTZXNzaW9uKGZhbHNlLCBXZWJLaXQ6OlNlc3Npb25UcmFja2Vy
OjpkZWZhdWx0U2Vzc2lvbklEKTsKKyAgICByZXR1cm4gKmRlZmF1bHRTZXNzaW9uOworfQorCitT
ZXNzaW9uJiBTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBTZXNzaW9uKiBsZWdhY3lQcml2YXRlU2Vzc2lv
biA9IG5ldyBTZXNzaW9uKHRydWUsIFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQpOworICAgIHJldHVybiAqbGVnYWN5UHJpdmF0ZVNlc3Npb247Cit9CisKIFNl
c3Npb246OlNlc3Npb24oYm9vbCBpc0VwaGVtZXJhbCkKICAgICA6IG1faXNFcGhlbWVyYWwoaXNF
cGhlbWVyYWwpCisgICAgLCBtX3Nlc3Npb25JRChnZW5lcmF0ZUlEKGlzRXBoZW1lcmFsKSkKK3sK
K30KKworU2Vzc2lvbjo6U2Vzc2lvbihib29sIGlzRXBoZW1lcmFsLCB1aW50NjRfdCBzZXNzaW9u
SUQpCisgICAgOiBtX2lzRXBoZW1lcmFsKGlzRXBoZW1lcmFsKQorICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogewogfQogCiBQYXNzUmVmUHRyPFNlc3Npb24+IFNlc3Npb246OmNyZWF0ZShi
b29sIGlzRXBoZW1lcmFsKQogeworICAgIC8vIEZJWE1FOiBzdXBwb3J0IGNyZWF0aW9uIG9mIG5v
bi1kZWZhdWx0LCBub24tZXBoZW1lcmFsIHNlc3Npb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTZXNzaW9uKGlzRXBoZW1lcmFsKSk7CiB9CiAKLWJvb2wgU2Vzc2lvbjo6aXNFcGhlbWVyYWwo
KQorYm9vbCBTZXNzaW9uOjppc0VwaGVtZXJhbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXNF
cGhlbWVyYWw7CiB9CiAKK3VpbnQ2NF90IFNlc3Npb246OmdldElEKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKIFNlc3Npb246On5TZXNzaW9uKCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJU2Vzc2lvbi5oCmluZGV4IDNmYjVmNjcuLmRmNzE2ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmlu
ZSBBUElTZXNzaW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIlNlc3Np
b25UcmFja2VyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIEFQ
SSB7CkBAIC0zNCwxMiArMzUsMTcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBTZXNzaW9uIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U2Vzc2lvbj4gewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlc3Npb24+IGNyZWF0ZShib29sIGlzRXBoZW1l
cmFsKTsKLSAgICBib29sIGlzRXBoZW1lcmFsKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGRlZmF1
bHRTZXNzaW9uKCk7CisgICAgc3RhdGljIFNlc3Npb24mIGxlZ2FjeVByaXZhdGVTZXNzaW9uKCk7
CisgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0OworICAgIHVpbnQ2NF90IGdldElEKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB+U2Vzc2lvbigpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNl
c3Npb24oYm9vbCBpc0VwaGVtZXJhbCk7CisgICAgU2Vzc2lvbihib29sIGlzRXBoZW1lcmFsLCB1
aW50NjRfdCBzZXNzaW9uSUQpOwogICAgIGJvb2wgbV9pc0VwaGVtZXJhbDsKKyAgICB1aW50NjRf
dCBtX3Nlc3Npb25JRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGUxMDUxNWIuLmIzYzhlODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAi
V0tDb250ZXh0UHJpdmF0ZS5oIgpAQCAtNDY3LDE2ICs0NjgsMTYgQEAgdm9pZCBXZWJDb250ZXh0
OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJp
dmF0ZUJyb3cKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmICh1c2VzTmV0d29y
a1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlmIChwcml2YXRlQnJv
d3NpbmdFbmFibGVkKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7Cisg
ICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJp
dmF0ZVNlc3Npb25JRCksIDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKSwgMCk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpLCAwKTsKICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCkKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpF
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpOworICAgICAgICBzZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpKTsKICAgICBlbHNlCi0gICAgICAg
IHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKSk7CisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpKTsKIH0KIAogdm9pZCAoKnNfaW52YWxpZE1lc3NhZ2VD
YWxsYmFjaykoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUpOwpAQCAtNTk3LDcgKzU5OCw3IEBAIFdl
YlByb2Nlc3NQcm94eSYgV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6SW5pdGlhbGl6ZVdlYlByb2Nlc3MocGFy
YW1ldGVycywgV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlcihpbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGEuZ2V0KCksICpwcm9jZXNzKSksIDApOwogCiAgICAgaWYgKFdlYlBy
ZWZlcmVuY2VzOjphbnlQYWdlR3JvdXBzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSkKLSAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpLCAwKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCksIDApOwogCiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3Mp
OwogCkBAIC03NDAsNyArNzQxLDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250ZXh0OjpjcmVh
dGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCkKICAgICByZXR1cm4g
KnJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0
ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAs
IFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2Vi
Q29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkqIHJlbGF0
ZWRQYWdlKQogewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7CiAgICAgaWYg
KG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsK
QEAgLTc1Niw3ICs3NTcsMTMgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGEKICAgICAgICAgICAg
IHByb2Nlc3MgPSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1p
dCgpOwogICAgIH0KIAotICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGll
bnQsIHBhZ2VHcm91cCA/ICpwYWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCkpOwor
ICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHBhZ2VHcm91cCA/
ICpwYWdlR3JvdXAgOiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCksIHNlc3Npb24pOworfQorCitQ
YXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiBy
ZWxhdGVkUGFnZSkKK3sKKyAgICBXZWJQYWdlR3JvdXAqIGdyb3VwID0gcGFnZUdyb3VwID8gcGFn
ZUdyb3VwIDogJm1fZGVmYXVsdFBhZ2VHcm91cC5nZXQoKTsKKyAgICByZXR1cm4gY3JlYXRlV2Vi
UGFnZShwYWdlQ2xpZW50LCBncm91cCwgZ3JvdXAtPnByZWZlcmVuY2VzKCktPnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSA/IEFQSTo6U2Vzc2lvbjo6bGVnYWN5UHJpdmF0ZVNlc3Npb24oKSA6IEFQ
STo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKSwgcmVsYXRlZFBhZ2UpOwogfQogCiBEb3dubG9h
ZFByb3h5KiBXZWJDb250ZXh0Ojpkb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaAppbmRleCBiOThjNDg2Li5mNmI5ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmgKQEAgLTE0OSw2ICsxNDksNyBAQCBwdWJsaWM6CiAKICAgICBTdG9yYWdl
TWFuYWdlciYgc3RvcmFnZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiAqbV9zdG9yYWdlTWFuYWdl
cjsgfQogCisgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNs
aWVudCYsIFdlYlBhZ2VHcm91cCosIEFQSTo6U2Vzc2lvbiYsIFdlYlBhZ2VQcm94eSogcmVsYXRl
ZFBhZ2UgPSAwKTsKICAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQ
YWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwKiwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IDAp
OwogCiAgICAgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVy
biBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQpAQCAtMjkyLDYgKzI5Myw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCB3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygpOwogICAgIHN0YXRp
YyB2b2lkIHdpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKIAorICAgIHN0YXRpYyBib29s
IGlzRXBoZW1lcmFsU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworCiAjaWYgVVNFKFNPVVAp
CiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCk7CiAgICAgYm9vbCBpZ25vcmVUTFNF
cnJvcnMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZVRMU0Vycm9yczsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3NDRjMWM1Li40MWJiNzRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjI4LDEyICsyMjgs
MTIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHdlYktleWJvYXJkRXZlbnRUeXBlU3RyaW5nKFdlYkV2
ZW50OjpUeXBlIHR5cGUpCiB9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogCi1QYXNzUmVmUHRy
PFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCwgdWlu
dDY0X3QgcGFnZUlEKQorUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3Jl
YXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vi
UGFnZUdyb3VwJiBwYWdlR3JvdXAsIEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbiwgdWludDY0X3QgcGFn
ZUlEKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZVByb3h5KHBhZ2VDbGllbnQs
IHByb2Nlc3MsIHBhZ2VHcm91cCwgcGFnZUlEKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUdyb3VwLCBzZXNzaW9uLCBwYWdl
SUQpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNs
aWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCwg
dWludDY0X3QgcGFnZUlEKQorV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJQYWdlR3JvdXAmIHBhZ2VH
cm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCB1aW50NjRfdCBwYWdlSUQpCiAgICAgOiBtX3Bh
Z2VDbGllbnQocGFnZUNsaWVudCkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9w
YWdlR3JvdXAocGFnZUdyb3VwKQpAQCAtMjc5LDYgKzI3OSw3IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgV2ViCiAgICAgLCBtX25lZWRUb3VjaEV2ZW50cyhmYWxzZSkKICNlbmRpZgogICAgICwgbV9w
YWdlSUQocGFnZUlEKQorICAgICwgbV9zZXNzaW9uKHNlc3Npb24pCiAgICAgLCBtX2lzUGFnZVN1
c3BlbmRlZChmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2lzU21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKFRleHRDaGVja2VyOjppc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGRiMDBhZTQuLjgzYTJh
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgV2ViUGFnZVByb3h5X2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgor
I2luY2x1ZGUgIkFQSVNlc3Npb24uaCIKICNpbmNsdWRlICJBdXRvQ29ycmVjdGlvbkNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyQWN0
aW9uLmgiCkBAIC03NCw2ICs3NSw3IEBACiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMyNywxMCArMzI5
LDExIEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1
YmxpYzoKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VD
bGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlR3JvdXAmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQm
LCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlR3JvdXAmLCBBUEk6OlNlc3Npb24mLCB1aW50NjRf
dCBwYWdlSUQpOwogICAgIHZpcnR1YWwgfldlYlBhZ2VQcm94eSgpOwogCiAgICAgdWludDY0X3Qg
cGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICB1aW50NjRfdCBzZXNzaW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24tPmdldElEKCk7IH0KIAogICAgIFdlYkZyYW1l
UHJveHkqIG1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lLmdldCgpOyB9CiAg
ICAgV2ViRnJhbWVQcm94eSogZm9jdXNlZEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mb2N1c2Vk
RnJhbWUuZ2V0KCk7IH0KQEAgLTg1NSw3ICs4NTgsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6
U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigpIHsgcmV0dXJuIG1f
c2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CiAgICAgICAgIAogcHJpdmF0ZToKLSAgICBXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIHVpbnQ2
NF90IHBhZ2VJRCk7CisgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJv
eHkmLCBXZWJQYWdlR3JvdXAmLCBBUEk6OlNlc3Npb24mLCB1aW50NjRfdCBwYWdlSUQpOwogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKICAgICB2b2lkIHVwZGF0ZVZpZXdTdGF0ZShX
ZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUgPSBXZWJDb3JlOjpWaWV3U3Rh
dGU6OkFsbEZsYWdzKTsKQEAgLTEzMTIsNiArMTMxNSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFJlZjxBUEk6OlNlc3Npb24+IG1fc2Vzc2lvbjsK
IAogICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5kZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMTBmMWFiMC4uNDc2NmI5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE2NywxMCArMTY3
LDEwIEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCkKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQogCi1QYXNz
UmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91cCYgcGFnZUdyb3VwKQorUGFzc1JlZlB0cjxX
ZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCwgQVBJOjpTZXNzaW9uJiBzZXNzaW9u
KQogewogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7Ci0gICAgUmVmUHRy
PFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQs
ICp0aGlzLCBwYWdlR3JvdXAsIHBhZ2VJRCk7CisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gd2Vi
UGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlR3JvdXAs
IHNlc3Npb24sIHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UuZ2V0
KCkpOwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlLmdldCgpKTsKICNp
ZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKaW5kZXggYTNjOTI5Yy4uYzU0NTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJQcm9jZXNzUHJv
eHlfaAogI2RlZmluZSBXZWJQcm9jZXNzUHJveHlfaAogCisjaW5jbHVkZSAiQVBJU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyTWFwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgpAQCAtNzcs
NyArNzgsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsgfQogCiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQpOwotICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdl
KFBhZ2VDbGllbnQmLCBXZWJQYWdlR3JvdXAmKTsKKyAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94
eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwJiwgQVBJOjpTZXNzaW9u
Jik7CiAgICAgdm9pZCBhZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5KiwgdWludDY0X3Qg
cGFnZUlEKTsKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKICAgICBW
ZWN0b3I8V2ViUGFnZVByb3h5Kj4gcGFnZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZjc1ZTM1Li43ZDVmYWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC03ODcsNiArNzg3LDggQEAKIAkJNkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdL
SW5zcGVjdG9yUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0
ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyOEU4NkYxMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RUYxNzk1MTg4QzAw
ODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi87IH07CiAJCTcyOEU4NkYyMTc5NTE4OEMw
MDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xv
clBpY2tlck1hYy5tbSAqLzsgfTsKKwkJNzUzRTNFMEQxODg3Mzk4NTAwMTg4NDk2IC8qIFNlc3Np
b25UcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc1M0UzRTBCMTg4NzM5NzMwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5jcHAgKi87IH07
CisJCTc1M0UzRTBFMTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUzRTNFMDkxODg3Mzk0QjAw
MTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggKi87IH07CiAJCTc1NTQyMkJEMTgwNjJCQjIwMDQ2
RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkI5MTgwNjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdp
bkRhdGFNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNzU1NDIyQzQxODA2MkJGOTAwNDZGNkE4IC8qIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzU1NDIyQkUxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRh
dGFNYW5hZ2VyUHJveHkuY3BwICovOyB9OwogCQk3NTU0MjJDQjE4MDY1MDAyMDA0NkY2QTggLyog
V2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzU1NDIyQzYxODA2NEZGQzAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFN
YW5hZ2VyLmNwcCAqLzsgfTsKQEAgLTI0NjgsNiArMjQ3MCw4IEBACiAJCTZFRTg0OUM2MTM2OEQ5
MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tJbnNw
ZWN0b3JQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVG
MTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb2xvclBpY2tl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzUzRTNFMDkxODg3Mzk0QjAw
MTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlc3Npb25UcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1M0Uz
RTBCMTg4NzM5NzMwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXNzaW9uVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc1NTQyMkI5MTgwNjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFN
YW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLT3JpZ2lu
RGF0YU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTU0MjJCQTE4
MDYyQjlDMDA0NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS09yaWdpbkRhdGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc1NTQyMkJFMTgwNjJCRTQwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzcyOCw2ICszNzMyLDggQEAKIAkJCQkzMzE1Mjk3NDEzMEQwQ0IyMDBFRDI0ODMgLyogU2VjdXJp
dHlPcmlnaW5EYXRhLmggKi8sCiAJCQkJNTE4RDJDQzgxMkQ1MURGQjAwM0JCOTNCIC8qIFNlc3Np
b25TdGF0ZS5jcHAgKi8sCiAJCQkJNTE4RDJDQzkxMkQ1MURGQjAwM0JCOTNCIC8qIFNlc3Npb25T
dGF0ZS5oICovLAorCQkJCTc1M0UzRTBCMTg4NzM5NzMwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tl
ci5jcHAgKi8sCisJCQkJNzUzRTNFMDkxODg3Mzk0QjAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2Vy
LmggKi8sCiAJCQkJMUE2NDIwRTIxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5j
cHAgKi8sCiAJCQkJMUE2NDIwRTMxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5o
ICovLAogCQkJCTUxMjE3NDVFMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5j
cHAgKi8sCkBAIC02NjUzLDYgKzY2NTksNyBAQAogCQkJCUJDNDA3NjFDMTI0RkYwMzcwMDY4RjIw
QSAvKiBXS1VSTENGLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwQzEyNEZGMDI3MDA2OEYy
MEEgLyogV0tVUkxSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYyOTEyNEZGMDQw
MDA2OEYyMEEgLyogV0tVUkxSZXF1ZXN0TlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTc1M0UzRTBF
MTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM0MDc2MEUxMjRGRjAyNzAwNjhGMjBBIC8qIFdLVVJMUmVzcG9uc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTc1OUNDRDVBMTgwOEY2MTYwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYyQjEyNEZGMDQwMDA2OEYyMEEgLyogV0tV
UkxSZXNwb25zZU5TLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkxOCw3IEBACiAJCQkJ
QkNEMjVGMTgxMUQ2QkRFMTAwMTY5QjBFIC8qIFdLQnVuZGxlRnJhbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM0OTg2MzAxMjREMThDMTAwRDgzNEUxIC8qIFdLQnVuZGxlSGl0VGVzdFJlc3Vs
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTAxQkQxQTEyRjEyNDM0MDBFOUYyNDggLyogV0tC
dW5kbGVJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzUzRTNFMEQxODg3Mzk4NTAw
MTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzA0M0NE
MTJGNzVFRTAwMDY0NzJCOSAvKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM0QkVGRTIxMjBBMUE0QzAwRkJBMEM3IC8qIFdLQnVuZGxlTm9kZUhhbmRs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIwNTI4MjExQzk0Mjg0MDA4RjMzNzUgLyogV0tC
dW5kbGVQYWdlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAx
NjUwYjU1Li5kYmYwY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRl
ICJMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oIgpAQCAtMjk5LDkgKzMwMCw5IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VH
cm91cCwgYm9vCiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVGhpcyB0ZXN0LW9ubHkg
ZnVuY3Rpb24gZG9lc24ndCB3b3JrIHdpdGggTmV0d29ya1Byb2Nlc3MsIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Mjc0Pi4KICNpZiBQTEFURk9STShNQUMpIHx8
IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQogICAgIGlmIChlbmFibGVkKQotICAgICAgICBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7
CisgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpOwogICAgIGVs
c2UKLSAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKTsKKyAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKFNl
c3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKTsKICNlbmRpZgogICAgIGNvbnN0
IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+
aWRlbnRpZmllcigpKS0+cGFnZXMoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRv
ciBpdGVyID0gcGFnZXMuYmVnaW4oKTsgaXRlciAhPSBwYWdlcy5lbmQoKTsgKytpdGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDU1YzFlNTAuLjQ1ZjY4ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKKyNpbmNsdWRlICJTZXNz
aW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgpA
QCAtNzIsNiArNzMsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKK3N0YXRpYyB1aW50NjRfdCBs
ZWdhY3lTZXNzaW9uSUQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uICZzZXNzaW9uKQorewor
ICAgIHJldHVybiBzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpID8gU2Vzc2lvblRy
YWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQgOiBTZXNzaW9uVHJhY2tlcjo6ZGVmYXVsdFNl
c3Npb25JRDsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlh
bGl6ZSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlBsYXRmb3JtU3RyYXRlZ2ll
cz4gcGxhdGZvcm1TdHJhdGVnaWVzOwpAQCAtMTMzLDcgKzE0MSw3IEBAIFN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vz
czo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgU3RyaW5nIHJlc3Vs
dDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0ZvckRPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
LCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9N
KGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQp
LCAwKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CkBAIC0xNDYsNyArMTU0LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2kKIHsK
ICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQo
KS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShzZXNzaW9uLmlzUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwor
ICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRD
b29raWVzRnJvbURPTShsZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCwg
Y29va2llU3RyaW5nKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTE1
OSw3ICsxNjcsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLAogI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2Vz
cygpKSB7CiAgICAgICAgIGJvb2wgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNo
YXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChzZXNzaW9u
LmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1
bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQobGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCBm
aXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xNzMsNyArMTgxLDcgQEAg
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgTmV0d29ya1N0b3JhZ2UKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAg
IGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAg
ICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNz
aW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUobGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xODYsNyArMTk0LDcgQEAgYm9vbCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLAogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYg
KFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlm
ICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJh
d0Nvb2tpZXMoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwg
dXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29r
aWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMobGVnYWN5U2Vz
c2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMTk5LDcgKzIwNyw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjCiB7CiAjaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5l
Y3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCksIHVybCwgY29va2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUobGVnYWN5U2Vzc2lvbklEKHNlc3Np
b24pLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDk1
OTZjNTcuLjg2MjlmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNl
KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
OworICAgIC8vIEZJWE1FOiByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNl
c3Npb25UcmFja2VyCisgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bih1aW50NjRfdCBzZXNzaW9uSUQpOworCiAgICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0
UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKICAgICBXZWJG
cmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IGY4MDg2N2MuLjQ3
NjJkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5t
bQpAQCAtMjQsNiArMjQsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lLmg+CkBAIC0zNCw1MiArMzYsMjMgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJy
b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlU2Vzc2lvbigpCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+PiBzZXNzaW9uOwotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi1zdGF0aWMgU3RyaW5n
JiBpZGVudGlmaWVyQmFzZSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
YmFzZTsKLSAgICByZXR1cm4gYmFzZTsKLX0KICAgICAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShj
b25zdCBTdHJpbmcmIGJhc2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAg
IGlkZW50aWZpZXJCYXNlKCkgPSBiYXNlOwotfQotCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQordm9pZCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Np
b25JRCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYgKHByaXZhdGVT
ZXNzaW9uKCkpCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBiYXNlOwotICAgIGlmIChpZGVudGlmaWVyQmFz
ZSgpLmlzTnVsbCgpKQorICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2Uo
KS5pc051bGwoKSkKICAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl07CiAgICAgZWxzZQotICAgICAgICBiYXNlID0gaWRlbnRpZmllckJhc2UoKTsK
LQotICAgIHByaXZhdGVTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSk7Ci19CisgICAgICAgIGJhc2UgPSBTZXNzaW9uVHJh
Y2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsKIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLQotICAgIHByaXZhdGVTZXNzaW9uKCkgPSBudWxscHRyOworICAgIFNlc3Np
b25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNy
ZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNl
c3Npb25JRCkpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tp
ZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5
KQpAQCAtODksOCArNjIsMTAgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRD
b29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWMKICAgICBpZiAoUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKSkKICAg
ICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBv
bGljeSk7CiAKLSAgICBpZiAocHJpdmF0ZVNlc3Npb24oKSkKLSAgICAgICAgV0tTZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHByaXZhdGVTZXNzaW9uKCktPmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwg
cG9saWN5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNlc3Npb24gOiBTZXNzaW9uVHJhY2tlcjo6
Z2V0U2Vzc2lvbk1hcCgpLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChzZXNzaW9uKQorICAgICAg
ICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHNlc3Npb24tPmNvb2tpZVN0b3JhZ2Uo
KS5nZXQoKSwgcG9saWN5KTsKKyAgICB9CiB9CiAgICAgCiBib29sIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6Om5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QKQEAgLTEyNSwxMSArMTAw
LDEwIEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
c3RvcmFnZVNlc3Npb24oKSBjb25zdAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAg
ICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOworICAgICAgICByZXR1cm4g
KlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKTsKIAogICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpOwogfQotICAgIAogV2ViRnJhbWVMb2FkZXJDbGllbnQqIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OndlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QKIHsKICAgICBpZiAo
IWZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5jcHAKaW5kZXggZjk3NDM0YS4uNGFhOTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKIAorI2lu
Y2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRl
ICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtMzYsMjcgKzM3
LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlU2Vz
c2lvbigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+PiBzZXNzaW9uOwotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi12
b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKQordm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgaWYgKHByaXZhdGVTZXNzaW9uKCkpCisgICAgaWYgKFNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByaXZhdGVTZXNz
aW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKTsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAg
IHByaXZhdGVTZXNzaW9uKCkgPSBudWxscHRyOworICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9u
KHNlc3Npb25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklEKSk7CiB9CiAKIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2ViRnJhbWUqIGZyYW1lKQpA
QCAtNzAsNyArNTgsNyBAQCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0KFdlYkZyYW1lKiBmcmFtZSkKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIGlm
IChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
KQotICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CisgICAgICAgIHJldHVybiAqU2Vz
c2lvblRyYWNrZXI6OnNlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9u
SUQpOwogCiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaAppbmRleCAwZTAzNTUyLi4yMDRjY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQyLDggKzQyLDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7
Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKKyAgICBz
dGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25J
RCk7CiAKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjkx
YWI0YS4uMTIyYzQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNv
ZGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUg
IlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXZWJB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIgpAQCAtMzM1LDcgKzMzNiw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1lCiAgICAgICAgIHNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcodHJ1ZSk7CiAK
ICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOworICAgIFNlc3Npb25UcmFj
a2VyOjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZp
ZXIpOwogI2VuZGlmCiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29y
a1Nlc3Npb24pCkBAIC00NTIsMTcgKzQ1MywxNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmZ1bGxLZXli
b2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKICAg
ICBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
OwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQor
dm9pZCBXZWJQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNl
c3Npb25JRCkKIHsKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShT
T1VQKQotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKTsKKyAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCk7CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNz
OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCit2b2lkIFdlYlByb2Nlc3M6OmRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKICNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQotICAgIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CisgICAgU2Vz
c2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBjZDk5YmExLi4yYTg2ZjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTY1LDkgKzE2NSw5IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAKLSAgICB2b2lk
IGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgCisgICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CisgICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworCiAgICAgdm9pZCBwYWdlRGlkRW50ZXJX
aW5kb3codWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWlu
dDY0X3QgcGFnZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDFjOGY4Y2IuLjJhMDc4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTUxLDkgKzUxLDkg
QEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0SWdub3Jl
VExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogI2VuZGlmCiAKLSAgICAvLyBQcml2YXRl
IGJyb3dzaW5nIHNlc3Npb24gaXMgcGVyIHByb2Nlc3MuIEluZGl2aWR1YWwgcGFnZXMgb3IgcGFn
ZSBncm91cHMgbWF5IHVzZSB0aGUgcHJpdmF0ZSBzZXNzaW9uIG9yIHRoZSBkZWZhdWx0IG9uZSBh
cyBhcHByb3ByaWF0ZS4KLSAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKLSAgICBE
ZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCisgICAgLy8gTGVnYWN5IHByaXZhdGUgYnJv
d3Npbmcgc2Vzc2lvbiBpcyBwZXIgcHJvY2Vzcy4gSW5kaXZpZHVhbCBwYWdlcyBvciBwYWdlIGdy
b3VwcyBtYXkgdXNlIHRoZSBwcml2YXRlIHNlc3Npb24gb3IgdGhlIGRlZmF1bHQgb25lIGFzIGFw
cHJvcHJpYXRlLgorICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklEKQorICAgIERlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Np
b25JRCkKIAogICAgICMgUGx1Zy1pbnMuCiAgICAgRGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaCh1aW50MzJfdCBoYXNoLCBkb3VibGUgZXhwaXJhdGlvblRpbWUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>