<?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>191523</bug_id>
          
          <creation_ts>2018-11-11 18:00:42 -0800</creation_ts>
          <short_desc>[WebAuthn] Implement AuthenticatorCancel</short_desc>
          <delta_ts>2019-10-23 12:25:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>202559</dependson>
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>repstein</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1477444</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-11-11 18:00:42 -0800</bug_when>
    <thetext>We need to implement AuthenticatorCancel for local authenticators and ways within WebKit/WebCore to invoke AuthenticatorCancel. Things like refreshing a page could go through this route.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576112</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-02 12:39:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/55920204&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580879</commentid>
    <comment_count>2</comment_count>
      <attachid>381169</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-16 23:02:48 -0700</bug_when>
    <thetext>Created attachment 381169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580975</commentid>
    <comment_count>3</comment_count>
      <attachid>381169</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-17 08:56:11 -0700</bug_when>
    <thetext>Comment on attachment 381169
Patch

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

&gt; Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp:67
&gt; +    if (!m_document || !m_document-&gt;frame() || !m_document-&gt;page()) {

Not needed. If you did not have a frame, you wouldn&apos;t have a page.

&gt; Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp:104
&gt; +    if (!m_document || !m_document-&gt;frame() || !m_document-&gt;page()) {

Not needed. If you did not have a frame, you wouldn&apos;t have a page.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.cpp:143
&gt; +    const auto&amp; callerOrigin = document.securityOrigin();

we normally omit the &quot;const&quot; when we&apos;re using auto.

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:102
&gt; +    memset(serialized.data() + serialized.size(), 0, kHidPacketSize - serialized.size());

Looks to me like you&apos;re writing in memory that you don&apos;t own here? I get that the vector capacity is kHidPacketSize, but it is not its size.
You should swap your too lines, first resize() and then memset.

Also, grow() here would be more efficient than resize() since serialized.size() &lt;= kHidPacketSize.

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:151
&gt; +    memset(serialized.data() + serialized.size(), 0, kHidPacketSize - serialized.size());

Same comment as above. ASAN would likely complain here.

&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationPanel.cpp:53
&gt; +    if (!m_manager)

I think this can be:
if (m_manager)
    m_manager-&gt;cancelRequest(*this);

given how simple the method is.

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:167
&gt; +void AuthenticatorManager::cancelRequest(const WebPageProxy&amp; page, Optional&lt;FrameIdentifier&gt; subFrameId)

const Optional&lt;FrameIdentifier&gt;&amp;

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:172
&gt; +    if (subFrameId &amp;&amp; (subFrameId != *(m_pendingRequestData.frameId)))

Too many parentheses.

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:174
&gt; +    invokePendingCompletionHandler(ExceptionData { NotAllowedError, emptyString() });

Probably want a better error message than &quot;&quot;

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidConnection.h:68
&gt; +    bool isInitialized() { return m_isInitialized; }

should be const.

&gt; Source/WebKit/UIProcess/WebAuthentication/WebAuthenticationRequestData.h:49
&gt; +    WTF::Optional&lt;WebCore::FrameIdentifier&gt; frameId;

FrameIdentifier are not unique at UIProcess level, or even at WebPageProxy level. So it looks very fragile to use this in UIProcess to identifier a request. A { WebCore::PageIdentifier + WebCore::FrameIdentifier } is globally unique though.

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/FidoAuthenticator.cpp:42
&gt; +    if (!m_driver)

if (m_driver)
    m_driver-&gt;cancel();

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4119
&gt; +    m_websiteDataStore-&gt;authenticatorManager().cancelRequest(*this, frame-&gt;isMainFrame() ? WTF::nullopt : Optional&lt;FrameIdentifier&gt;(frameID));

could use makeOptional(frameID)

Seems odd to not be using a frameID for the main frame, since it has one.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:896
&gt; +        // WebPageProxy takes care of the main frame.

Why? Why can&apos;t we have a simple code path no matter if the frame is a main frame or not?

&gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:58
&gt; +    auto messageId = setRequestCallback(WTFMove(handler));

Should this be using sendWithAsyncReply() ?

&gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:68
&gt; +    auto messageId = setRequestCallback(WTFMove(handler));

Should this be using sendWithAsyncReply() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580976</commentid>
    <comment_count>4</comment_count>
      <attachid>381169</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-17 08:59:41 -0700</bug_when>
    <thetext>Comment on attachment 381169
Patch

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

I think your handling of the &apos;getSerializedData&apos; calls is wrong.

&gt; Source/WebKit/ChangeLog:28
&gt; +        Noted, CtapHidDriver is the only CtapDriver implements the cancel method. Since the message

Note: The CtapHidDriver is the only CtapDriver that implements the cancel method.&quot;

&gt;&gt; Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp:67
&gt;&gt; +    if (!m_document || !m_document-&gt;frame() || !m_document-&gt;page()) {
&gt; 
&gt; Not needed. If you did not have a frame, you wouldn&apos;t have a page.

We use this same test in a few places. I wonder if it would be better to have (perhaps come up with a better name for this predicate):

static bool documentHasValidState(Document* document) { return document &amp;&amp;  document-&gt;frame() &amp;&amp; document-&gt;page(); }

Then just say:

if (!documentHasValidState(m_document)) { ...

&gt;&gt; Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp:104
&gt;&gt; +    if (!m_document || !m_document-&gt;frame() || !m_document-&gt;page()) {
&gt; 
&gt; Not needed. If you did not have a frame, you wouldn&apos;t have a page.

if (!documentHasValidState(m_document)) { ...

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:103
&gt; +    serialized.resize(kHidPacketSize);

You said that you switched from grow here, because it doesn&apos;t initialized POD types. But resize also shrinks the Vector to match the passed input, if it is smaller than the Vector&apos;s current size. Is that what you want?

Previously, this logic would make the serialized Vector larger by &apos;kHidPacketSize&apos; bytes. Now, we change the size of Vector to be &apos;kHidPacketSize&apos;.

I think you should still keep the &apos;grow&apos;, and after the &apos;grow&apos; is executed, perform the memset to initialize the range of data.

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:152
&gt; +    serialized.resize(kHidPacketSize);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebCore/FidoHidMessageTest.cpp:63
&gt; + * Byte 7-n:  Data block

Was the original comment wrong? You don&apos;t seem to have changed this test case at all, but the comment is now very different in terms of which bytes mean what.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580988</commentid>
    <comment_count>5</comment_count>
      <attachid>381169</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-17 09:28:28 -0700</bug_when>
    <thetext>Comment on attachment 381169
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp:67
&gt;&gt;&gt; +    if (!m_document || !m_document-&gt;frame() || !m_document-&gt;page()) {
&gt;&gt; 
&gt;&gt; Not needed. If you did not have a frame, you wouldn&apos;t have a page.
&gt; 
&gt; We use this same test in a few places. I wonder if it would be better to have (perhaps come up with a better name for this predicate):
&gt; 
&gt; static bool documentHasValidState(Document* document) { return document &amp;&amp;  document-&gt;frame() &amp;&amp; document-&gt;page(); }
&gt; 
&gt; Then just say:
&gt; 
&gt; if (!documentHasValidState(m_document)) { ...

Really not a fan of this proposal. I&apos;d rather we keep the bogus check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581194</commentid>
    <comment_count>6</comment_count>
      <attachid>381169</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-17 15:43:21 -0700</bug_when>
    <thetext>Comment on attachment 381169
Patch

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

Thanks Chris and Brent for taking a look.

&gt;&gt; Source/WebKit/ChangeLog:28
&gt;&gt; +        Noted, CtapHidDriver is the only CtapDriver implements the cancel method. Since the message
&gt; 
&gt; Note: The CtapHidDriver is the only CtapDriver that implements the cancel method.&quot;

Fixed.

&gt;&gt;&gt;&gt; Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp:67
&gt;&gt;&gt;&gt; +    if (!m_document || !m_document-&gt;frame() || !m_document-&gt;page()) {
&gt;&gt;&gt; 
&gt;&gt;&gt; Not needed. If you did not have a frame, you wouldn&apos;t have a page.
&gt;&gt; 
&gt;&gt; We use this same test in a few places. I wonder if it would be better to have (perhaps come up with a better name for this predicate):
&gt;&gt; 
&gt;&gt; static bool documentHasValidState(Document* document) { return document &amp;&amp;  document-&gt;frame() &amp;&amp; document-&gt;page(); }
&gt;&gt; 
&gt;&gt; Then just say:
&gt;&gt; 
&gt;&gt; if (!documentHasValidState(m_document)) { ...
&gt; 
&gt; Really not a fan of this proposal. I&apos;d rather we keep the bogus check.

Okay, dropped the new check.

&gt;&gt;&gt; Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp:104
&gt;&gt;&gt; +    if (!m_document || !m_document-&gt;frame() || !m_document-&gt;page()) {
&gt;&gt; 
&gt;&gt; Not needed. If you did not have a frame, you wouldn&apos;t have a page.
&gt; 
&gt; if (!documentHasValidState(m_document)) { ...

Okay, dropped the new check.

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.cpp:143
&gt;&gt; +    const auto&amp; callerOrigin = document.securityOrigin();
&gt; 
&gt; we normally omit the &quot;const&quot; when we&apos;re using auto.

Omitted.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:102
&gt;&gt; +    memset(serialized.data() + serialized.size(), 0, kHidPacketSize - serialized.size());
&gt; 
&gt; Looks to me like you&apos;re writing in memory that you don&apos;t own here? I get that the vector capacity is kHidPacketSize, but it is not its size.
&gt; You should swap your too lines, first resize() and then memset.
&gt; 
&gt; Also, grow() here would be more efficient than resize() since serialized.size() &lt;= kHidPacketSize.

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:103
&gt;&gt; +    serialized.resize(kHidPacketSize);
&gt; 
&gt; You said that you switched from grow here, because it doesn&apos;t initialized POD types. But resize also shrinks the Vector to match the passed input, if it is smaller than the Vector&apos;s current size. Is that what you want?
&gt; 
&gt; Previously, this logic would make the serialized Vector larger by &apos;kHidPacketSize&apos; bytes. Now, we change the size of Vector to be &apos;kHidPacketSize&apos;.
&gt; 
&gt; I think you should still keep the &apos;grow&apos;, and after the &apos;grow&apos; is executed, perform the memset to initialize the range of data.

Fixed as follow:
auto offset = serialized.size();
serialized.grow(kHidPacketSize);
memset(serialized.data() + offset, 0, kHidPacketSize - offset);

&gt;&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:151
&gt;&gt; +    memset(serialized.data() + serialized.size(), 0, kHidPacketSize - serialized.size());
&gt; 
&gt; Same comment as above. ASAN would likely complain here.

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:152
&gt;&gt; +    serialized.resize(kHidPacketSize);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationPanel.cpp:53
&gt;&gt; +    if (!m_manager)
&gt; 
&gt; I think this can be:
&gt; if (m_manager)
&gt;     m_manager-&gt;cancelRequest(*this);
&gt; 
&gt; given how simple the method is.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:167
&gt;&gt; +void AuthenticatorManager::cancelRequest(const WebPageProxy&amp; page, Optional&lt;FrameIdentifier&gt; subFrameId)
&gt; 
&gt; const Optional&lt;FrameIdentifier&gt;&amp;

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:172
&gt;&gt; +    if (subFrameId &amp;&amp; (subFrameId != *(m_pendingRequestData.frameId)))
&gt; 
&gt; Too many parentheses.

Removed one.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:174
&gt;&gt; +    invokePendingCompletionHandler(ExceptionData { NotAllowedError, emptyString() });
&gt; 
&gt; Probably want a better error message than &quot;&quot;

It doesn&apos;t matter. Sites will never get this back. Anyway. changed to &quot;Operation timed out.&quot;.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidConnection.h:68
&gt;&gt; +    bool isInitialized() { return m_isInitialized; }
&gt; 
&gt; should be const.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/WebAuthenticationRequestData.h:49
&gt;&gt; +    WTF::Optional&lt;WebCore::FrameIdentifier&gt; frameId;
&gt; 
&gt; FrameIdentifier are not unique at UIProcess level, or even at WebPageProxy level. So it looks very fragile to use this in UIProcess to identifier a request. A { WebCore::PageIdentifier + WebCore::FrameIdentifier } is globally unique though.

I don&apos;t think GlobalFrameIdentifier is really helpful here as the request can only live within the lifetime of its corresponding web process, but I don&apos;t mind adding another safe guard.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/FidoAuthenticator.cpp:42
&gt;&gt; +    if (!m_driver)
&gt; 
&gt; if (m_driver)
&gt;     m_driver-&gt;cancel();

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4119
&gt;&gt; +    m_websiteDataStore-&gt;authenticatorManager().cancelRequest(*this, frame-&gt;isMainFrame() ? WTF::nullopt : Optional&lt;FrameIdentifier&gt;(frameID));
&gt; 
&gt; could use makeOptional(frameID)
&gt; 
&gt; Seems odd to not be using a frameID for the main frame, since it has one.

Changed the method signature to: AuthenticatorManager::cancelRequest(const WebCore::PageIdentifier&amp;, const Optional&lt;WebCore::FrameIdentifier&gt;&amp;) to use GlobalFrameIdentifier.

&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:896
&gt;&gt; +        // WebPageProxy takes care of the main frame.
&gt; 
&gt; Why? Why can&apos;t we have a simple code path no matter if the frame is a main frame or not?

Just thought it will be redundant to do it twice as WebPageProxy::resetState is also calling the cancelRequest. It doesn&apos;t hurt to call it twice. So, let&apos;s simplify the code. Not sure if WebPageProxy::resetState can be omitted.

&gt;&gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:58
&gt;&gt; +    auto messageId = setRequestCallback(WTFMove(handler));
&gt; 
&gt; Should this be using sendWithAsyncReply() ?

Right, a good idea!

&gt;&gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:68
&gt;&gt; +    auto messageId = setRequestCallback(WTFMove(handler));
&gt; 
&gt; Should this be using sendWithAsyncReply() ?

Fixed.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebCore/FidoHidMessageTest.cpp:63
&gt;&gt; + * Byte 7-n:  Data block
&gt; 
&gt; Was the original comment wrong? You don&apos;t seem to have changed this test case at all, but the comment is now very different in terms of which bytes mean what.

I guess this particular test predated WebAuthn/FIDO2 and Google folks forgot to update the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581196</commentid>
    <comment_count>7</comment_count>
      <attachid>381240</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-17 15:44:22 -0700</bug_when>
    <thetext>Created attachment 381240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581207</commentid>
    <comment_count>8</comment_count>
      <attachid>381244</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-17 15:59:00 -0700</bug_when>
    <thetext>Created attachment 381244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581473</commentid>
    <comment_count>9</comment_count>
      <attachid>381319</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-18 11:46:01 -0700</bug_when>
    <thetext>Created attachment 381319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581491</commentid>
    <comment_count>10</comment_count>
      <attachid>381319</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-18 12:54:19 -0700</bug_when>
    <thetext>Comment on attachment 381319
Patch

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

Looks good! r=me

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:104
&gt; +    memset(serialized.data() + offset, 0, kHidPacketSize - offset);

Yes, this looks much better.

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:154
&gt; +    memset(serialized.data() + offset, 0, kHidPacketSize - offset);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581494</commentid>
    <comment_count>11</comment_count>
      <attachid>381319</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-18 12:59:53 -0700</bug_when>
    <thetext>Comment on attachment 381319
Patch

Thanks, Brent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581501</commentid>
    <comment_count>12</comment_count>
      <attachid>381319</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 13:56:05 -0700</bug_when>
    <thetext>Comment on attachment 381319
Patch

Clearing flags on attachment: 381319

Committed r251295: &lt;https://trac.webkit.org/changeset/251295&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581502</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 13:56:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582811</commentid>
    <comment_count>14</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-23 08:19:24 -0700</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/251295/webkit

broke http/wpt/webauthn/public-key-credential-get-success-hid.https.html
and caused it to be severely flakey. Diff makes it look like it is now flaking to a pass in the sub test. 

on Mac and iOS Debug wk2

History:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-get-success-hid.https.html

Diff:
--- /Volumes/Data/slave/mojave-debug-tests-wk2/build/layout-test-results/http/wpt/webauthn/public-key-credential-get-success-hid.https-expected.txt
+++ /Volumes/Data/slave/mojave-debug-tests-wk2/build/layout-test-results/http/wpt/webauthn/public-key-credential-get-success-hid.https-actual.txt
@@ -4,5 +4,5 @@
 PASS PublicKeyCredential&apos;s [[get]] with userVerification { preferred } in a mock hid authenticator. 
 PASS PublicKeyCredential&apos;s [[get]] with userVerification { discouraged } in a mock hid authenticator. 
 PASS PublicKeyCredential&apos;s [[get]] with mixed options in a mock hid authenticator. 
-PASS PublicKeyCredential&apos;s [[get]] with two consecutive requests. 
+FAIL PublicKeyCredential&apos;s [[get]] with two consecutive requests. assert_unreached: Should have rejected: This request has been cancelled by a new request. Reached unreachable code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582812</commentid>
    <comment_count>15</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-23 08:23:34 -0700</bug_when>
    <thetext>
&gt; and caused it to be severely flakey. Diff makes it look like it is now
&gt; flaking to a pass in the sub test. 

Meant to type &quot;Diff makes it look like it is now flaking to a fail in the sub test.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582929</commentid>
    <comment_count>16</comment_count>
    <who name="Russell Epstein">repstein</who>
    <bug_when>2019-10-23 11:53:27 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #14)
&gt; It looks like the changes in https://trac.webkit.org/changeset/251295/webkit
&gt; 
&gt; broke http/wpt/webauthn/public-key-credential-get-success-hid.https.html
&gt; and caused it to be severely flakey. Diff makes it look like it is now
&gt; flaking to a pass in the sub test. 
&gt; 
&gt; on Mac and iOS Debug wk2
&gt; 
&gt; History:
&gt; https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-
&gt; get-success-hid.https.html
&gt; 
&gt; Diff:
&gt; ---
&gt; /Volumes/Data/slave/mojave-debug-tests-wk2/build/layout-test-results/http/
&gt; wpt/webauthn/public-key-credential-get-success-hid.https-expected.txt
&gt; +++
&gt; /Volumes/Data/slave/mojave-debug-tests-wk2/build/layout-test-results/http/
&gt; wpt/webauthn/public-key-credential-get-success-hid.https-actual.txt
&gt; @@ -4,5 +4,5 @@
&gt;  PASS PublicKeyCredential&apos;s [[get]] with userVerification { preferred } in a
&gt; mock hid authenticator. 
&gt;  PASS PublicKeyCredential&apos;s [[get]] with userVerification { discouraged } in
&gt; a mock hid authenticator. 
&gt;  PASS PublicKeyCredential&apos;s [[get]] with mixed options in a mock hid
&gt; authenticator. 
&gt; -PASS PublicKeyCredential&apos;s [[get]] with two consecutive requests. 
&gt; +FAIL PublicKeyCredential&apos;s [[get]] with two consecutive requests.
&gt; assert_unreached: Should have rejected: This request has been cancelled by a
&gt; new request. Reached unreachable code

Re-opening due to failing regression tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582945</commentid>
    <comment_count>17</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-23 12:25:37 -0700</bug_when>
    <thetext>Bug 202563 will take care of the test failure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381169</attachid>
            <date>2019-10-16 23:02:48 -0700</date>
            <delta_ts>2019-10-17 15:44:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191523-20191016230247.patch</filename>
            <type>text/plain</type>
            <size>107443</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVjMzU5NTFkNTUwYjlk
MjllYjg3NzkyMGRlZjU4ZDI4ZTRlNWQ4Ny4uMTFjZTQ5NTkyNDRhYjJiMDExYTNhNjcxOTk3NzEy
YzYxMmZmNTkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTEwLTE2ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgQXV0aGVudGljYXRvckNhbmNlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTkyMDIw
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0cyBpbiBleGlzdGluZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQ6OnJlcXVlc3RSZXBseSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQ6OnNldFJlcXVlc3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OnNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
cik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXIgaXMgY2hhbmdlZCB0
byBGdW5jdGlvbiBhcyB0aG9zZSBjb21wbGV0aW9uIGhhbmRsZXJzIHdpbGwgbm90CisgICAgICAg
IGJlIGNhbGxlZCBkdXJpbmcgZGVzdHJ1Y3Rpb24gb2YgdGhlIHdlYiBwYWdlLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcDoKKyAgICAgICAgKGZp
ZG86OkZpZG9IaWRNZXNzYWdlOjpGaWRvSGlkTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZElu
aXRQYWNrZXQ6OmdldFNlcmlhbGl6ZWREYXRhIGNvbnN0KToKKyAgICAgICAgKGZpZG86OkZpZG9I
aWRDb250aW51YXRpb25QYWNrZXQ6OmdldFNlcmlhbGl6ZWREYXRhIGNvbnN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3Vy
YXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAq
IHRlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGw6CisgICAgICAg
IEFkZHMgYSBuZXcgb3B0aW9uIHRvIHRlc3QgQXV0aGVudGljYXRvckNhbmNlbC4KKwogMjAxOS0x
MC0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1RG
Q10gQWRkIHN1cHBvcnQgZm9yIGNvbGdyb3VwL2NvbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMmNjMDM1MzY5ODBj
MGNmYjQyM2UzYTQwMGI1NjcxNTYyN2EwMjEzLi5mYjk3ZGY5YmY0OTgxMzA5YWE4MTkwOTkwMmZi
YjA2MjZkZDY1YmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxOS0xMC0xNiAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1w
bGVtZW50IEF1dGhlbnRpY2F0b3JDYW5jZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTUyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU5MjAy
MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnQgdHdvIHdheXMgdG8gY2FuY2VsIGEgcGVuZGluZyBXZWJBdXRobiBj
ZXJlbW9ueToKKyAgICAgICAgMSkgVmlhIG5hdmlnYXRpb24gYWN0aXZpdGllcy4gQWN0aXZpdGll
cyBpbmNsdWRlIGkpIG1haW4gZnJhbWUgbmF2aWdhdGlvbiwgaWkpIG1haW4gZnJhbWUgcmVsb2Fk
LAorICAgICAgICBpaWkpIG1haW4gZnJhbWUgZGVzdHJ1Y3Rpb24sIGl2KSBzdWIgZnJhbWUgbmF2
aWdhdGlvbiwgYW5kIHYpIHN1YiBmcmFtZSBkZXN0cnVjdGlvbi4gQWxsIHRoZSBhYm92ZQorICAg
ICAgICBhY3Rpdml0aWVzIHdpbGwgY2FuY2VsIGFueSBwZW5kaW5nIFdlYkF1dGhuIGNlcmVtb255
IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmcmFtZS4gVG8gcHJvdmUKKyAgICAgICAgdGhl
IGFzc29jaWF0aW9uLCBhIEZyYW1lSWRlbnRpZmllciBpcyBicmlkZ2VkIGludG8gV2ViQXV0aGVu
dGljYXRpb25SZXF1ZXN0RGF0YS4gRXZlbiB0aG91Z2ggdGhpcworICAgICAgICBGcmFtZUlkZW50
aWZpZXIgaXMgbm90IEdsb2JhbEZyYW1lSWRlbnRpZmllciwgaXQgaXMgc3VmZmljaWVudCB0byBp
ZGVudGlmeSBhIHVuaXF1ZSBmcmFtZSBkdXJpbmcKKyAgICAgICAgdGhlIHRpbWUgb2YgdGhlIGNl
cmVtb255IGdpdmVuIGFueSBQU09OIGFjdGlvbiB3aWxsIGNhbmNlbCB0aGUgd2hvbGUgY2VyZW1v
bnkgaWYgYXNzb2NpYXRlZCB3aXRoCisgICAgICAgIHRoZSBwYWdlLiBUaGF0J3Mgd2h5IEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0IGRpc3Rpbmd1aXNoZXMgbWFpbiBmcmFtZSBv
ciBub3QuCisgICAgICAgIDIpIFZpYSBVSS4gVGhpcyBwYXRoIGlzIHNpbXBseSBicmlkZ2VkIC1b
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjYW5jZWxdIGludG8gQXV0aGVudGljYXRvck1hbmFn
ZXIuCisgICAgICAgIE5vdGVkLCB0aGlzIHBhdGNoIGZvbGxvd3MgdGhlIHNwZWMgdG8gd2FpdCB1
bnRpbCB0aW1lIG91dCB0byBub3RpZnkgUlBzLgorICAgICAgICBSZWZlcmVuY2VzOiBpKSBTdGVw
IDIwIG9mIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCwg
aWkpIFN0ZXAgMTggb2YKKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNn
ZXRBc3NlcnRpb24KKworICAgICAgICBBcyBmb3Igd2hhdCB0aGUgY2FuY2VsIGFjdHVhbGx5IGRv
ZXMsIGl0OgorICAgICAgICAxKSBzdG9wcyBhbnkgSElEL05GQyBzY2FubmluZzsKKyAgICAgICAg
Mikgc2VuZHMgQ1RBUEhJRF9DQU5DRUwgdG8gYW55IEhJRCBhdXRoZW50aWNhdG9ycyB0aGF0IGhh
dmUgYmVlbiBhZGRlZC4gUmVmZXJlbmNlOgorICAgICAgICBodHRwczovL2ZpZG9hbGxpYW5jZS5v
cmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTkwMTMwL2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0
b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE5MDEzMC5odG1sI3VzYi1oaWQtY2FuY2VsCisgICAgICAg
IFNlbmRpbmcgQ1RBUEhJRF9DQU5DRUwsIGhvd2V2ZXIsIGlzIG5vdCB0cml2aWFsLiBBbiBhYnN0
cmFjdCBjbGFzcyBGaWRvQXV0aGVudGljYXRvciBpcyBjcmFmdGVkIHRvCisgICAgICAgIGRvIHRo
aXMgbGFib3IgZm9yIGJvdGggQ3RhcEF1dGhlbnRpY2F0b3IgYW5kIFUyZkF1dGhlbnRpY2F0b3Ig
ZHVyaW5nIHRoZSB0aW1lIG9mIGRlc3RydWN0aW9ucy4KKyAgICAgICAgTm90ZWQsIEN0YXBIaWRE
cml2ZXIgaXMgdGhlIG9ubHkgQ3RhcERyaXZlciBpbXBsZW1lbnRzIHRoZSBjYW5jZWwgbWV0aG9k
LiBTaW5jZSB0aGUgbWVzc2FnZQorICAgICAgICBpcyBzZW50IGR1cmluZyBzdGF0ZSByZXNldCwg
bGlmZWN5Y2xlIG9mIHRoZSBIaWRDb25lbmN0aW9uIGFuZCBIaWRTZXJ2aWNlIHdoaWNoIG1hbmFn
ZSB0aGUgdW5kZXJseWluZworICAgICAgICBJT0hJRERldmljZVJlZiBpcyB2ZXJ5IGhhcmQgdG8g
aG9sZC4gVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIHJlZ3VsYXIgYXN5bmMgc2VuZGVyLiBUaGVy
ZWZvcmUsCisgICAgICAgIEhpZENvbm5lY3Rpb246OnNlbmRTeW5jIGlzIGNyYWZ0ZWQgdG8gc2Vu
ZCB0aGUgbWVzc2FnZSBzeW5jaHJvbm91c2x5IHRvIGdldCByaWQgb2YgdGhlIHRlZGlvdXNuZXNz
CisgICAgICAgIG9mIG1hbmFnaW5nIHRob3NlIGxpZmVjeWNsZXMuCisKKyAgICAgICAgUC5TLiBW
ZWN0b3I6Omdyb3cgZG9lc24ndCBpbml0aWFsaXplIFBPRCB0eXBlcy4gVGhlcmVmb3JlLCB0aGlz
IHBhdGNoIGFsc28gcmVwbGFjZXMgaXQgd2l0aCBtZW1zZXQKKyAgICAgICAgKyByZXNpemUgZm9y
IEZpZG9IaWRQYWNrZXQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKEFQSTo6V2Vi
QXV0aGVudGljYXRpb25QYW5lbDo6Y2FuY2VsIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICgtW19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwgY2FuY2VsXSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0
aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjpydW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpyZXNldFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpIaWRDb25u
ZWN0aW9uOjppc0luaXRpYWxpemVkKToKKyAgICAgICAgKFdlYktpdDo6SGlkQ29ubmVjdGlvbjo6
c2V0SXNJbml0aWFsaXplZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0hpZENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246
On5IaWRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SGlkQ29ubmVjdGlvbjo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OnRlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6
SGlkQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OnJl
Z2lzdGVyRGF0YVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TW9ja0hpZENvbm5lY3Rpb246OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlk
Q29ubmVjdGlvbjo6dGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rp
b246OnNlbmRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnNlbmQp
OgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
aW9uUmVxdWVzdERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6Q3RhcEF1dGhlbnRpY2F0b3Ip
OgorICAgICAgICAoV2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgor
ICAgICAgICAoV2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRpY2F0b3I6OnRyeURvd25ncmFkZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkN0YXBEcml2ZXI6OmNhbmNlbCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkN0YXBIaWREcml2ZXI6Oldvcmtlcjo6d3JpdGUpOgorICAgICAgICAoV2ViS2l0OjpDdGFw
SGlkRHJpdmVyOjpXb3JrZXI6OnJlYWQpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVy
OjpXb3JrZXI6OnJldHVybk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVy
OjpXb3JrZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6V29ya2Vy
OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVy
Q2hhbm5lbEFsbG9jYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OmNvbnRp
bnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZl
cjo6cmV0dXJuUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpyZXNl
dCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OmNhbmNlbCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmNw
cDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuY3BwLgorICAgICAgICAoV2ViS2l0OjpGaWRvQXV0aGVudGljYXRvcjo6Rmlk
b0F1dGhlbnRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpGaWRvQXV0aGVudGljYXRvcjo6fkZp
ZG9BdXRoZW50aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6Rmlkb0F1dGhlbnRpY2F0b3I6OmRy
aXZlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkZpZG9BdXRoZW50aWNhdG9yOjpyZWxlYXNl
RHJpdmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRv
QXV0aGVudGljYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaWRv
U2VydmljZTo6Y29udGludWVBZnRlckdldEluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViS2l0
OjpVMmZBdXRoZW50aWNhdG9yOjpVMmZBdXRoZW50aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6
VTJmQXV0aGVudGljYXRvcjo6aXNzdWVDb21tYW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRGVzdHJveUZy
YW1lKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6
bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3I6OmdldEFzc2VydGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6ZnJvbUNv
cmVGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisKIDIw
MTktMTAtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjUxMTM4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Ny
ZWRlbnRpYWxzQ29udGFpbmVyLmNwcAppbmRleCAyZjAzODk1NDk2YzQwN2I2NmJhZGY1NzVkZDMy
YjVmYzU4N2IzNmJlLi5kZmZmODE1YzRiOTNiOTI5MGU1YjU4YjM2MWY1MDI4NjNiNTU4Y2NjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Ny
ZWRlbnRpYWxzQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRl
bnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcApAQCAtNjQsNyArNjQsNyBA
QCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
JiYgb3B0aW9ucywgQ3JlZGVudGlhbFBybwogewogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVt
ZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvY3JlZGVudGlhbC1tYW5hZ2VtZW50LTEvI2FsZ29y
aXRobS1yZXF1ZXN0IGFzIG9mIDQgQXVndXN0IDIwMTcKICAgICAvLyB3aXRoIGVuaGFuY2VtZW50
IGZyb20gMTQgTm92ZW1iZXIgMjAxNyBFZGl0b3IncyBEcmFmdC4KLSAgICBpZiAoIW1fZG9jdW1l
bnQgfHwgIW1fZG9jdW1lbnQtPnBhZ2UoKSkgeworICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9k
b2N1bWVudC0+ZnJhbWUoKSB8fCAhbV9kb2N1bWVudC0+cGFnZSgpKSB7CiAgICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtODksNyArODksNyBAQCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpn
ZXQoQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywgQ3JlZGVudGlhbFBybwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IoKS5kaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShtX2RvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBkb2VzSGF2ZVNhbWVP
cmlnaW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9wdGlvbnMuc2lnbmFsKSwgV1RGTW92ZShw
cm9taXNlKSk7CisgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IoKS5kaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJs
aWNLZXkudmFsdWUoKSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RGTW92
ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRp
YWxzQ29udGFpbmVyOjpzdG9yZShjb25zdCBCYXNpY0NyZWRlbnRpYWwmLCBDcmVkZW50aWFsUHJv
bWlzZSYmIHByb21pc2UpCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRh
aW5lcjo6aXNDcmVhdGUoQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMsIENyZWRl
bnQKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3Jn
L1RSL2NyZWRlbnRpYWwtbWFuYWdlbWVudC0xLyNhbGdvcml0aG0tY3JlYXRlIGFzIG9mIDQgQXVn
dXN0IDIwMTcKICAgICAvLyB3aXRoIGVuaGFuY2VtZW50IGZyb20gMTQgTm92ZW1iZXIgMjAxNyBF
ZGl0b3IncyBEcmFmdC4KLSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1fZG9jdW1lbnQtPnBhZ2Uo
KSkgeworICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9kb2N1bWVudC0+ZnJhbWUoKSB8fCAhbV9k
b2N1bWVudC0+cGFnZSgpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6OmlzQ3JlYXRlKENyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMmJiBvcHRpb25zLCBDcmVkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpLmNyZWF0
ZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgp
LCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9wdGlvbnMuc2ln
bmFsKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IoKS5jcmVhdGUoKm1fZG9jdW1lbnQsIG9wdGlvbnMucHVibGljS2V5
LnZhbHVlKCksIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCksIFdURk1vdmUob3B0
aW9ucy5zaWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogdm9pZCBDcmVkZW50aWFsc0Nv
bnRhaW5lcjo6cHJldmVudFNpbGVudEFjY2VzcyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IDQzYTNkZjRhYzUwZDRh
MDRhMDhhYjk4ODBkNTY1YWUwNzk0ZWNiY2MuLjU0ODY1MTlkNzk4ZDhjYmYyODc3MGEwOGVmYWI1
MGQzNWNmMjE0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCIKICNpbmNsdWRlICJB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
SlNCYXNpY0NyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWwuaCIKQEAgLTEzNSwxMCArMTM2LDEzIEBAIHZv
aWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvCiAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9
CiAKLXZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIGNhbGxlck9yaWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYgb3B0aW9ucywgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0
U2lnbmFsPiYmIGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0
Cit2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9u
cywgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmIGFi
b3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0CiB7CiAgICAgdXNp
bmcgbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckludGVybmFsOwogCisgICAgY29u
c3QgYXV0byYgY2FsbGVyT3JpZ2luID0gZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBh
dXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisgICAgQVNTRVJUKGZyYW1lKTsKICAgICAv
LyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhu
LyNjcmVhdGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTdGVwIDEs
IDMsIDE2IGFyZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIuCiAgICAgLy8gU3RlcCAyLgpAQCAtMTg1
LDcgKzE4OSw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIGNhbGxlck9yaWdpbiwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZN
b3ZlKGNsaWVudERhdGFKc29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2ln
bmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92
ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25h
bCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbERhdGEmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRl
ZCgpKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9y
LCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMDAsMTMgKzIwNCwxNiBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0CiAgICAgICAgIHByb21p
c2UucmVqZWN0KGV4Y2VwdGlvbi50b0V4Y2VwdGlvbigpKTsKICAgICB9OwogICAgIC8vIEFzeW5j
IG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQgYW5kIGhhbmRsZWQgaW4gdGhlIG1lc3Nlbmdlci4K
LSAgICBtX2NsaWVudC0+bWFrZUNyZWRlbnRpYWwoY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25z
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV9jbGllbnQtPm1ha2VDcmVkZW50
aWFsKCpmcmFtZSwgY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRl
cm5hbFNvdXJjZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25zdCBQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldp
dGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlh
bFByb21pc2UmJiBwcm9taXNlKSBjb25zdAordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBib29sIHNhbWVP
cmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENy
ZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKIHsKICAgICB1c2luZyBuYW1lc3BhY2Ug
QXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CiAKKyAgICBjb25zdCBhdXRvJiBjYWxs
ZXJPcmlnaW4gPSBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOwogICAgIC8vIFRoZSBmb2xsb3dp
bmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNyZWRl
bnRpYWwgYXMgb2YgNSBEZWNlbWJlciAyMDE3LgogICAgIC8vIFN0ZXAgMSwgMywgMTMgYXJlIGhh
bmRsZWQgYnkgdGhlIGNhbGxlci4KICAgICAvLyBTdGVwIDIuCkBAIC0yNTMsNyArMjYwLDcgQEAg
dm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xpZW50RGF0
YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwgPSBXVEZNb3Zl
KGFib3J0U2lnbmFsKV0gKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBk
YXRhLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewor
ICAgIGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFK
c29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92ZShh
Ym9ydFNpZ25hbCldIChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0
YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLT5hYm9ydGVkKCkpIHsKICAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5
IEFib3J0U2lnbmFsLiJfcyB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2OCw3ICsyNzUs
NyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxT
b3VyY2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mCiAgICAgICAgIHByb21pc2UucmVqZWN0KGV4Y2Vw
dGlvbi50b0V4Y2VwdGlvbigpKTsKICAgICB9OwogICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJl
IGRpc3BhdGNoZWQgYW5kIGhhbmRsZWQgaW4gdGhlIG1lc3Nlbmdlci4KLSAgICBtX2NsaWVudC0+
Z2V0QXNzZXJ0aW9uKGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIG1fY2xpZW50LT5nZXRBc3NlcnRpb24oKmZyYW1lLCBjbGllbnRE
YXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRv
ckF2YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggOWM2NWFlNmE2NzliYTQ5Nzk1OTJlMjI5OTliODkz
ZWFhMzY2MjE5Yy4uYmRhYTU1NTAwNjNhZDk5MDEwODRhZTk5Yzg2NzRjNWJkYmI0Nzk0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEFib3J0U2lnbmFsOwogY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50
OwogY2xhc3MgQmFzaWNDcmVkZW50aWFsOwotY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBE
b2N1bWVudDsKIAogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CiBz
dHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwpAQCAtNTMsOCArNTMsOCBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJik7CiAKICAgICAvLyBUaGUgZm9s
bG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IHN0YXRpYyBtZXRob2RzIG9mIFB1YmxpY0tleUNyZWRl
bnRpYWwuCi0gICAgdm9pZCBjcmVhdGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2Vz
dG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsK
LSAgICB2b2lkIGRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgYm9vbCBzYW1lT3Jp
Z2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlz
ZSYmKSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0
b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0Owor
ICAgIHZvaWQgZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1lbnQmLCBjb25z
dCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBib29sIHNhbWVPcmlnaW5XaXRo
QW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNv
bnN0OwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxh
YmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKSBjb25zdDsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcAppbmRleCA2MTEwNGY3MGY0MzgyOWUx
OTUwNTJlOWQ0YTE2MGY5YmMxZDgwMmMzLi5mZmMyYWYxNWU1YTM2NWE5OTJkNzk1MzY1NzUzYjFj
OTk1Y2FjOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuY3BwCkBAIC0zNiw3
ICszNiw4IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OjpyZXF1ZXN0UmVw
bHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBXZWJDCiB7CiAgICAgaWYgKG1lc3NhZ2VJZCAh
PSBtX2FjY3VtdWxhdGVkUmVxdWVzdE1lc3NhZ2VJZCAtIDEpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihkYXRhLCBleGNlcHRpb24pOworICAgIG1fcGVu
ZGluZ0NhbGxiYWNrKGRhdGEsIGV4Y2VwdGlvbik7CisgICAgbV9wZW5kaW5nQ2FsbGJhY2sgPSBu
dWxscHRyOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDo6aXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVz
c2FnZUlkLCBib29sIHJlc3VsdCkKQEAgLTQ1LDEyICs0NiwxMiBAQCB2b2lkIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYgogICAgIGhhbmRsZXIocmVzdWx0KTsKIH0KIAotdWludDY0X3QgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50OjpzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoUmVxdWVzdENv
bXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3VpbnQ2NF90IEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudDo6c2V0UmVxdWVzdENhbGxiYWNrKFJlcXVlc3RDYWxsYmFjayYmIGhhbmRsZXIp
CiB7Ci0gICAgaWYgKG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBtX3BlbmRp
bmdDb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgTm90QWxsb3dlZEVycm9yLCAiVGhpcyByZXF1ZXN0
IGhhcyBiZWVuIHZvaWRlZCBieSBhIG5ldyByZXF1ZXN0LiJfcyB9KTsKKyAgICBpZiAobV9wZW5k
aW5nQ2FsbGJhY2spCisgICAgICAgIG1fcGVuZGluZ0NhbGxiYWNrKHsgfSwgeyBOb3RBbGxvd2Vk
RXJyb3IsICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIl9z
IH0pOwogCi0gICAgbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIp
OworICAgIG1fcGVuZGluZ0NhbGxiYWNrID0gV1RGTW92ZShoYW5kbGVyKTsKICAgICByZXR1cm4g
bV9hY2N1bXVsYXRlZFJlcXVlc3RNZXNzYWdlSWQrKzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50LmgKaW5kZXggMDMzMGNkYTM4Mjc3ZTYxZmYxNjNkMzUwNjkxNjdkZTBmMjVmZmQ3
OC4uNTNiZWQ5ZGZkMWQ2ZTMxZmIwYTY2MGU5ZDVkY2RmNTZlYjhhY2I5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudC5oCkBAIC0zNSwxMiArMzUsMTMgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRnJhbWU7CiAKIHN0cnVjdCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOwogc3RydWN0IFB1YmxpY0tleUNyZWRl
bnRpYWxEYXRhOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKIAot
dXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmKT47Cit1c2luZyBSZXF1ZXN0Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNv
bnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiwgY29uc3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSYpPjsKIHVzaW5nIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudD4gewpAQCAtNTEsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgLy8g
U2VuZGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwg
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXNz
ZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgRnJhbWUmLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
LCBSZXF1ZXN0Q2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRpb24o
Y29uc3QgRnJhbWUmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDYWxsYmFjayYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJs
ZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKIAogICAgIC8vIFJlY2VpdmVycy4KQEAg
LTYyLDEyICs2MywxMiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgLy8gT25seSBvbmUgcmVx
dWVzdCBpcyBhbGxvd2VkIGF0IG9uZSB0aW1lLiBBIG5ldyByZXF1ZXN0IHdpbGwgY2FuY2VsIGFu
eSBwZW5kaW5nIHJlcXVlc3QuCiAgICAgLy8gQSBtZXNzYWdlIGlkIHRoYXQgaXMgdGllZCB0byB0
aGUgcmVxdWVzdCB3aWwgYmUgZ2VuZXJhdGVkIGVhY2ggdGltZSB0byBwcmV2ZW50IG1pc21hdGNo
aW5nIHJlc3BvbnNlcy4KLSAgICB1aW50NjRfdCBzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIo
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHVpbnQ2NF90IHNldFJlcXVlc3RDYWxs
YmFjayhSZXF1ZXN0Q2FsbGJhY2smJik7CiAgICAgdWludDY0X3QgYWRkUXVlcnlDb21wbGV0aW9u
SGFuZGxlcihRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpOwogCiBwcml2YXRlOgogICAgIHVpbnQ2
NF90IG1fYWNjdW11bGF0ZWRSZXF1ZXN0TWVzc2FnZUlkIHsgMSB9OwotICAgIFJlcXVlc3RDb21w
bGV0aW9uSGFuZGxlciBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcjsKKyAgICBSZXF1ZXN0Q2Fs
bGJhY2sgbV9wZW5kaW5nQ2FsbGJhY2s7CiAgICAgdWludDY0X3QgbV9hY2N1bXVsYXRlZFF1ZXJ5
TWVzc2FnZUlkIHsgMSB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFF1ZXJ5Q29tcGxldGlvbkhh
bmRsZXI+IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVy
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVz
dENvbnZlcnRlci5oCmluZGV4IDRhY2MzZmY2MmI5NTI0OWY0ODdiMjJjZTg0YWM0MTc5ZjRjMzE4
NmYuLjc4MTE0ZmFlYjdiN2QzOWZjYjY2OWViYjI4YTA4ZTgxZTdmNWVhZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVy
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
cXVlc3RDb252ZXJ0ZXIuaApAQCAtNTMsOCArNTMsNyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
dWludDhfdD4gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1
aQogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVl
c3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0
aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSk7CiAKIC8vIFJlcHJlc2VudHMgQ1RB
UCByZXF1ZXN0cyB3aXRoIGVtcHR5IHBhcmFtZXRlcnMsIGluY2x1ZGluZwotLy8gQXV0aGVudGlj
YXRvckdldEluZm8sIEF1dGhlbnRpY2F0b3JDYW5jZWwsIEF1dGhlbnRpY2F0b3JSZXNldCBhbmQK
LS8vIEF1dGhlbnRpY2F0b3JHZXROZXh0QXNzZXJ0aW9uIGNvbW1hbmRzLgorLy8gQXV0aGVudGlj
YXRvckdldEluZm8sIEF1dGhlbnRpY2F0b3JSZXNldCBhbmQgQXV0aGVudGljYXRvckdldE5leHRB
c3NlcnRpb24gY29tbWFuZHMuCiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2Rl
RW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQpOwogCiB9IC8vIG5h
bWVzcGFjZSBmaWRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAppbmRleCAxYjkxMmQ5OGQ5ZjA0ZjMwNzRhMWI4ZTFh
NjI2MDFhNDJmYWYzNTdkLi5iMTJkYWVmZWUxNGU1MTJiNGZmNGE3NGExMjYxMDQxZDczNTlkNmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hp
ZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9G
aWRvSGlkTWVzc2FnZS5jcHAKQEAgLTE0Niw2ICsxNDYsNyBAQCBzaXplX3QgRmlkb0hpZE1lc3Nh
Z2U6Om51bVBhY2tldHMoKSBjb25zdAogCiBGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2Uo
dWludDMyX3QgY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZCB0eXBlLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEpCiAgICAgOiBtX2NoYW5uZWxJZChjaGFubmVsSWQpCisgICAgLCBt
X2NtZCh0eXBlKQogewogICAgIHVpbnQ4X3Qgc2VxdWVuY2UgPSAwOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKaW5k
ZXggMjZiODBhYThhNWYxMzk2M2M3NjhlN2U5MjNiYmFhYjJiODdiNWVlZS4uN2NkNjdiYzY0MGU0
M2ZmZGM5NmNkMTgyOTE5YjJkYTliN2YwNTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtOTksNyArOTks
OCBAQCBWZWN0b3I8dWludDhfdD4gRmlkb0hpZEluaXRQYWNrZXQ6OmdldFNlcmlhbGl6ZWREYXRh
KCkgY29uc3QKICAgICBzZXJpYWxpemVkLmFwcGVuZCgobV9wYXlsb2FkTGVuZ3RoID4+IDgpICYg
MHhmZik7CiAgICAgc2VyaWFsaXplZC5hcHBlbmQobV9wYXlsb2FkTGVuZ3RoICYgMHhmZik7CiAg
ICAgc2VyaWFsaXplZC5hcHBlbmQobV9kYXRhLmJlZ2luKCksIG1fZGF0YS5zaXplKCkpOwotICAg
IHNlcmlhbGl6ZWQuZ3JvdyhrSGlkUGFja2V0U2l6ZSk7CisgICAgbWVtc2V0KHNlcmlhbGl6ZWQu
ZGF0YSgpICsgc2VyaWFsaXplZC5zaXplKCksIDAsIGtIaWRQYWNrZXRTaXplIC0gc2VyaWFsaXpl
ZC5zaXplKCkpOworICAgIHNlcmlhbGl6ZWQucmVzaXplKGtIaWRQYWNrZXRTaXplKTsKIAogICAg
IHJldHVybiBzZXJpYWxpemVkOwogfQpAQCAtMTQ3LDcgKzE0OCw4IEBAIFZlY3Rvcjx1aW50OF90
PiBGaWRvSGlkQ29udGludWF0aW9uUGFja2V0OjpnZXRTZXJpYWxpemVkRGF0YSgpIGNvbnN0CiAg
ICAgc2VyaWFsaXplZC5hcHBlbmQobV9jaGFubmVsSWQgJiAweGZmKTsKICAgICBzZXJpYWxpemVk
LmFwcGVuZChtX3NlcXVlbmNlKTsKICAgICBzZXJpYWxpemVkLmFwcGVuZChtX2RhdGEuYmVnaW4o
KSwgbV9kYXRhLnNpemUoKSk7Ci0gICAgc2VyaWFsaXplZC5ncm93KGtIaWRQYWNrZXRTaXplKTsK
KyAgICBtZW1zZXQoc2VyaWFsaXplZC5kYXRhKCkgKyBzZXJpYWxpemVkLnNpemUoKSwgMCwga0hp
ZFBhY2tldFNpemUgLSBzZXJpYWxpemVkLnNpemUoKSk7CisgICAgc2VyaWFsaXplZC5yZXNpemUo
a0hpZFBhY2tldFNpemUpOwogCiAgICAgcmV0dXJuIHNlcmlhbGl6ZWQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oCmluZGV4IDc0NTBmMjU2NzZhYzEyN2M2MzQ5Y2ZlYzZlOWEwZmM1NjM0ZGU3ZTcu
LmViMzgxY2JhMzE1YjI1NTAxNmI1N2U5OWZkMjc1ZDY5YTg2ZmI2ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oCkBAIC04Myw2ICs4Myw3IEBAIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uIHsKICAgICAgICAgYm9vbCBmYXN0RGF0YUFycml2YWwgeyBmYWxzZSB9Owog
ICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgeyBmYWxzZSB9OwogICAgICAgICBi
b29sIGNhbkRvd25ncmFkZSB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgZXhwZWN0Q2FuY2VsIHsg
ZmFsc2UgfTsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxIaWRDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMTU5LDcgKzE2
MCw3IEBAIE9wdGlvbmFsPE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2Fs
Q29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
dm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9u
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHBheWxv
YWRCYXNlNjQgPDwgc3RhZ2UgPDwgc3ViU3RhZ2UgPDwgZXJyb3IgPDwgaXNVMmYgPDwga2VlcEFs
aXZlIDw8IGZhc3REYXRhQXJyaXZhbCA8PCBjb250aW51ZUFmdGVyRXJyb3JEYXRhIDw8IGNhbkRv
d25ncmFkZTsKKyAgICBlbmNvZGVyIDw8IHBheWxvYWRCYXNlNjQgPDwgc3RhZ2UgPDwgc3ViU3Rh
Z2UgPDwgZXJyb3IgPDwgaXNVMmYgPDwga2VlcEFsaXZlIDw8IGZhc3REYXRhQXJyaXZhbCA8PCBj
b250aW51ZUFmdGVyRXJyb3JEYXRhIDw8IGNhbkRvd25ncmFkZSA8PCBleHBlY3RDYW5jZWw7CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0xODQsNiArMTg1LDggQEAgT3B0aW9uYWw8
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbj4gTW9j
a1dlYkF1dGhlbnRpY2EKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5jYW5Eb3duZ3JhZGUpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmV4cGVjdENhbmNlbCkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5pZGwKaW5kZXggYmRlYjg2MWNjOWU2YzRjNjI3YTA3MzJkN2FlNmE3
NDU2NzlhNmZkZC4uMTY0NzBmOTI3MjlkYmFhMmE5MTUyYTA1NmI3ZjhjNWY3NDVjYzM4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsCkBAIC05MSw2ICs5MSw3IEBACiAgICAgYm9vbGVhbiBm
YXN0RGF0YUFycml2YWwgPSBmYWxzZTsKICAgICBib29sZWFuIGNvbnRpbnVlQWZ0ZXJFcnJvckRh
dGEgPSBmYWxzZTsKICAgICBib29sZWFuIGNhbkRvd25ncmFkZSA9IGZhbHNlOworICAgIGJvb2xl
YW4gZXhwZWN0Q2FuY2VsID0gZmFsc2U7CiB9OwogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBiZjk2Yzg2
MDhmMGFhYzM2MDZlMDMyOWJjOTY1ZDYwOWNmNjg3MWMyLi4zMWVlMTE4OTAyNTU3NTc1MTc2MTAw
NjgyMzliMTYyYTA2ZmYwN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTQxMiw2ICs0MTIsNyBAQCBVSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcAorVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5jcHAKIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcAppbmRleCAw
MGQyZDFhMjRjMjFjMjllMjk3NThmYjJmZmJiNWFhY2Y1N2YzYmJmLi4wN2QwZDdmZTk1ZWJjM2Mz
MzcwZTk2YTQyODczYTI1MjgyODc2NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCkBAIC0yOSwyMiAr
MjksMzIgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgi
CiAKIG5hbWVzcGFjZSBBUEkgewordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotUmVmPFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWw+IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIHJwSWQpCitSZWY8V2ViQXV0aGVudGljYXRpb25QYW5lbD4gV2ViQXV0aGVudGljYXRp
b25QYW5lbDo6Y3JlYXRlKGNvbnN0IEF1dGhlbnRpY2F0b3JNYW5hZ2VyJiBtYW5hZ2VyLCBjb25z
dCBTdHJpbmcmIHJwSWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXV0aGVudGlj
YXRpb25QYW5lbChycElkKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXV0aGVudGlj
YXRpb25QYW5lbChtYW5hZ2VyLCBycElkKSk7CiB9CiAKLVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoY29uc3QgU3RyaW5nJiBycElkKQotICAgIDogbV9ycElk
KHJwSWQpCitXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsKGNv
bnN0IEF1dGhlbnRpY2F0b3JNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHJwSWQpCisg
ICAgOiBtX21hbmFnZXIobWFrZVdlYWtQdHIobWFuYWdlcikpCisgICAgLCBtX3JwSWQocnBJZCkK
ICAgICAsIG1fY2xpZW50KFdURjo6bWFrZVVuaXF1ZVJlZjxXZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50PigpKQogewogfQogCiBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjp+V2ViQXV0aGVudGlj
YXRpb25QYW5lbCgpID0gZGVmYXVsdDsKIAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpj
YW5jZWwoKSBjb25zdAoreworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9tYW5hZ2VyLT5jYW5jZWxSZXF1ZXN0KCp0aGlzKTsKK30KKwogdm9pZCBXZWJBdXRoZW50
aWNhdGlvblBhbmVsOjpzZXRDbGllbnQoVW5pcXVlUmVmPFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQ+JiYgY2xpZW50KQogewogICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsLmgKaW5kZXggNzUwNDg4NmMwNGMwMzNhYTI2ZDI1ZDhmMTM1MDNkNWY5Zjk3NTgyZi4u
NzhlN2VlOTU2OGZiYzEwMjNmMGFmODFkMWY3YTNhMmViY2Y2ZTM2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5o
CkBAIC0zMiwyMyArMzIsMjkgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOworfQorCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDsKIAogY2xhc3MgV2ViQXV0aGVudGljYXRpb25QYW5lbCBmaW5h
bCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2ViQXV0aGVudGljYXRpb25QYW5l
bD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJBdXRoZW50aWNhdGlvblBhbmVsPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxXZWJBdXRoZW50aWNhdGlvblBhbmVsPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBycElkKTsKKyAgICBzdGF0aWMgUmVmPFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw+IGNy
ZWF0ZShjb25zdCBXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyJiwgY29uc3QgU3RyaW5nJiBy
cElkKTsKICAgICB+V2ViQXV0aGVudGljYXRpb25QYW5lbCgpOwogCiAgICAgV1RGOjpTdHJpbmcg
cnBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcnBJZDsgfQorICAgIHZvaWQgY2FuY2VsKCkgY29uc3Q7
CiAKICAgICBjb25zdCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50JiBjbGllbnQoKSBjb25z
dCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50KFVuaXF1ZVJl
ZjxXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50PiYmKTsKIAogcHJpdmF0ZToKLSAgICBXZWJB
dXRoZW50aWNhdGlvblBhbmVsKGNvbnN0IFN0cmluZyYgcnBJZCk7CisgICAgV2ViQXV0aGVudGlj
YXRpb25QYW5lbChjb25zdCBXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyJiwgY29uc3QgU3Ry
aW5nJiBycElkKTsKIAorICAgIFdlYWtQdHI8V2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcj4g
bV9tYW5hZ2VyOwogICAgIFdURjo6U3RyaW5nIG1fcnBJZDsKICAgICBVbmlxdWVSZWY8V2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudD4gbV9jbGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbQppbmRleCA2MjkxMzJhYjdhOWVkYmNkODUwNDE4MmJiYjQxNGFjN2Y1NTUyYWUyLi4x
NzI4ZTZmNTM4ZTQ1NzE4OTdhYTRiZTBhZWZmZjgyZDA2Y2E1YWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQpAQCAtNjcsNiArNjcsOSBAQCAtICh2b2lkKXNldERlbGVnYXRlOihpZDxf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+KWRlbGVnYXRlCiAKIC0gKHZvaWQpY2Fu
Y2VsCiB7CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBfcGFuZWwtPmNhbmNlbCgpOworI2Vu
ZGlmCiB9CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1h
bmFnZXIuY3BwCmluZGV4IDFjNDFhM2MyODVlZjA3MjQ1ZWUxY2U1MjlhNTY1NjgxZjI0ODM1NTAu
Ljc0MTY1OGQwZmVlM2Q0MTI0ODMwNGU0NGNkNWJmNDg3MDAxYzk0NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTE2NCw2ICsxNjQsMjggQEAgdm9pZCBBdXRoZW50
aWNhdG9yTWFuYWdlcjo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRh
JiYgZGF0YSwgQ2EKICAgICBydW5QYW5lbCgpOwogfQogCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5h
Z2VyOjpjYW5jZWxSZXF1ZXN0KGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBzdWJGcmFtZUlkKQoreworICAgIGlmICghbV9wZW5kaW5nQ29tcGxldGlv
bkhhbmRsZXIgfHwgbV9wZW5kaW5nUmVxdWVzdERhdGEucGFnZS5nZXQoKSAhPSAmcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX3BlbmRpbmdSZXF1ZXN0RGF0YS5mcmFtZUlkKTsK
KyAgICBpZiAoc3ViRnJhbWVJZCAmJiAoc3ViRnJhbWVJZCAhPSAqKG1fcGVuZGluZ1JlcXVlc3RE
YXRhLmZyYW1lSWQpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGludm9rZVBlbmRpbmdDb21wbGV0
aW9uSGFuZGxlcihFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCBlbXB0eVN0cmluZygp
IH0pOworICAgIGNsZWFyU3RhdGUoKTsKKyAgICBtX3JlcXVlc3RUaW1lT3V0VGltZXIuc3RvcCgp
OworfQorCisvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgcGFydCBvZiBTdGVwIDIwLiBvZiBo
dHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNyZWRlbnRpYWwKKy8vIGFuZCBw
YXJ0IG9mIFN0ZXAgMTguIG9mIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jZ2V0QXNz
ZXJ0aW9uIGFzIG9mIDQgTWFyY2ggMjAxOToKKy8vICJJZiB0aGUgdXNlciBleGVyY2lzZXMgYSB1
c2VyIGFnZW50IHVzZXItaW50ZXJmYWNlIG9wdGlvbiB0byBjYW5jZWwgdGhlIHByb2Nlc3MsIi4K
K3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgQVBJOjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkKK3sKKyAgICBpZiAoIW1fcGVuZGluZ0NvbXBsZXRp
b25IYW5kbGVyIHx8IG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsLmdldCgpICE9ICZwYW5lbCkK
KyAgICAgICAgcmV0dXJuOworICAgIHJlc2V0U3RhdGUoKTsKK30KKwogdm9pZCBBdXRoZW50aWNh
dG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZUFzeW5jKCkKIHsKICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CkBAIC0xNzcsOSArMTk5LDcg
QEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZSgpCiB7CiAgICAgaWYgKG1f
cGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wZW5kaW5n
UmVxdWVzdERhdGEgPSB7IH07Ci0gICAgbV9zZXJ2aWNlcy5jbGVhcigpOwotICAgIG1fYXV0aGVu
dGljYXRvcnMuY2xlYXIoKTsKKyAgICByZXNldFN0YXRlKCk7CiB9CiAKIHZvaWQgQXV0aGVudGlj
YXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JBZGRlZChSZWY8QXV0aGVudGljYXRvcj4mJiBhdXRo
ZW50aWNhdG9yKQpAQCAtMjY0LDcgKzI4NCw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6
OnJ1blBhbmVsKCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGVu
ZGluZ1JlcXVlc3REYXRhLnBhbmVsID0gQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpjcmVh
dGUoZ2V0UnBJZChtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcHRpb25zKSk7CisgICAgbV9wZW5kaW5n
UmVxdWVzdERhdGEucGFuZWwgPSBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OmNyZWF0ZSgq
dGhpcywgZ2V0UnBJZChtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcHRpb25zKSk7CiAgICAgYXV0byYg
cGFuZWwgPSAqbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWw7CiAgICAgcGFnZS0+dWlDbGllbnQo
KS5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5lbCwgW3dlYWtQYW5lbCA9IG1h
a2VXZWFrUHRyKHBhbmVsKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNdIChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkgewogICAgICAgICAvLyBUaGUgcGFu
ZWwgYWRkcmVzcyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgY3VycmVudCBwZW5kaW5nIHJl
cXVlc3QgaXMgc3RpbGwgdGhlIHNhbWUuCkBAIC0zMDUsNiArMzI1LDE0IEBAIHZvaWQgQXV0aGVu
dGljYXRvck1hbmFnZXI6Omludm9rZVBlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihSZXNwb25kJiYg
cmVzcG9uZCkKICAgICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3BvbmQp
KTsKIH0KIAorCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXNldFN0YXRlKCkKK3sKKyAg
ICBtX2F1dGhlbnRpY2F0b3JzLmNsZWFyKCk7CisgICAgbV9zZXJ2aWNlcy5jbGVhcigpOworICAg
IG1fcGVuZGluZ1JlcXVlc3REYXRhID0geyB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuaAppbmRleCBkMzc2NmFkMTQ3OTczMTQxNWVkZTQ4MmY5ZTljMmZlMDA4ZDNhMjUyLi4xMmI3
M2ZhYmFkOWZjMDk0YTY1Yzk2NzNkODE2OWFmODllMjc5YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmgKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgV2Vi
QXV0aGVudGljYXRpb25QYW5lbDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyIDogcHVibGljIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
OjpPYnNlcnZlciwgcHVibGljIEF1dGhlbnRpY2F0b3I6Ok9ic2VydmVyIHsKQEAgLTU1LDYgKzU5
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkgPSBkZWZh
dWx0OwogCiAgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERh
dGEmJiwgQ2FsbGJhY2smJik7CisgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KGNvbnN0IFdlYlBhZ2VQ
cm94eSYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gc3ViRnJhbWVJZCA9IFdU
Rjo6bnVsbG9wdCk7IC8vIENhbGxlZCBmcm9tIFdlYlBhZ2VQcm94eS9XZWJQcm9jZXNzUHJveHku
CisgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5l
bCYpOyAvLyBDYWxsZWQgZnJvbSBwYW5lbCBjbGllbnRzLgogCiAgICAgdmlydHVhbCBib29sIGlz
TW9jaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTgyLDEwICs4OCwxMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgdGltZU91dFRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHJ1blBhbmVsKCk7
CiAgICAgdm9pZCBzdGFydFJlcXVlc3QoKTsKKyAgICB2b2lkIHJlc2V0U3RhdGUoKTsKIAogICAg
IC8vIFJlcXVlc3Q6IFdlIG9ubHkgYWxsb3cgb25lIHJlcXVlc3QgcGVyIHRpbWUuIEEgbmV3IHJl
cXVlc3Qgd2lsbCBjYW5jZWwgYW55IHBlbmRpbmcgb25lcy4KICAgICBXZWJBdXRoZW50aWNhdGlv
blJlcXVlc3REYXRhIG1fcGVuZGluZ1JlcXVlc3REYXRhOwotICAgIENhbGxiYWNrIG1fcGVuZGlu
Z0NvbXBsZXRpb25IYW5kbGVyOyAvLyBTaG91bGQgYmUgaW52b2tlZCBkaXJlY3RseSwgdXNlIGlu
dm9rZVBlbmRpbmdDb21wbGV0aW9uSGFuZGxlci4KKyAgICBDYWxsYmFjayBtX3BlbmRpbmdDb21w
bGV0aW9uSGFuZGxlcjsgLy8gU2hvdWxkIG5vdCBiZSBpbnZva2VkIGRpcmVjdGx5LCB1c2UgaW52
b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyLgogICAgIFJ1bkxvb3A6OlRpbWVyPEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyPiBtX3JlcXVlc3RUaW1lT3V0VGltZXI7CiAKICAgICBWZWN0b3I8VW5pcXVl
UmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPj4gbV9zZXJ2aWNlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0hpZENvbm5lY3Rpb24uaAppbmRleCA0ZWFiNWRkNzczNDEyMTEyOTlhNzI5Mzg5ZjA1ZTZl
Zjg5OWUxOGU3Li4wZWY4MTA4Y2QwNTVjOWE3ZjU0OGQ5N2E5YzBmNThiMjY2YzNkYTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9I
aWRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBPdmVycmlkZWQgYnkgTW9ja0hpZENvbm5lY3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlKCk7CisgICAgdmlydHVhbCBE
YXRhU2VudCBzZW5kU3luYyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOwogICAgIC8vIENh
bGxlciBzaG91bGQgc2VuZCBkYXRhIGFnYWluIGFmdGVyIGNhbGxiYWNrIGlzIGludm9rZWQgdG8g
Y29udHJvbCBmbG93LgogICAgIHZpcnR1YWwgdm9pZCBzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEsIERhdGFTZW50Q2FsbGJhY2smJik7CiAgICAgdm9pZCByZWdpc3RlckRhdGFSZWNlaXZlZENh
bGxiYWNrKERhdGFSZWNlaXZlZENhbGxiYWNrJiYpOwpAQCAtNjQsOCArNjUsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWNlaXZlUmVwb3J0KFZlY3Rvcjx1aW50OF90PiYmKTsKIAogcHJvdGVjdGVk
OgotICAgIGJvb2wgbV9pbml0aWFsaXplZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Rlcm1pbmF0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIHsgcmV0dXJuIG1faXNJbml0
aWFsaXplZDsgfQorICAgIHZvaWQgc2V0SXNJbml0aWFsaXplZChib29sIGlzSW5pdGlhbGl6ZWQp
IHsgbV9pc0luaXRpYWxpemVkID0gaXNJbml0aWFsaXplZDsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgY29uc3VtZVJlcG9ydHMoKTsKQEAgLTc4LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBD
b3VsZCBxdWV1ZSBkYXRhIHJlcXVlc3RlZCBieSBvdGhlciBhcHBsaWNhdGlvbnMuCiAgICAgRGVx
dWU8VmVjdG9yPHVpbnQ4X3Q+PiBtX2lucHV0UmVwb3J0czsKICAgICBEYXRhUmVjZWl2ZWRDYWxs
YmFjayBtX2lucHV0Q2FsbGJhY2s7CisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlv
bi5tbQppbmRleCBmMDc3YWU5ODEzNmI5NDM5NTZjZGZhNjQ1NTQ0NzgzMjBkYTc0ODI1Li5mMmYx
OTNjNzUwMTI0YjhjZTYzMDVjMjc1MGE2MmExZjM0ZmFkOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hp
ZENvbm5lY3Rpb24ubW0KQEAgLTYzLDcgKzYzLDcgQEAgSGlkQ29ubmVjdGlvbjo6SGlkQ29ubmVj
dGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCiAKIEhpZENvbm5lY3Rpb246On5IaWRDb25uZWN0
aW9uKCkKIHsKLSAgICBBU1NFUlQobV90ZXJtaW5hdGVkKTsKKyAgICBBU1NFUlQoIW1faXNJbml0
aWFsaXplZCk7CiB9CiAKIHZvaWQgSGlkQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZSgpCkBAIC03Miw3
ICs3Miw3IEBAIHZvaWQgSGlkQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZSgpCiAgICAgSU9ISUREZXZp
Y2VTY2hlZHVsZVdpdGhSdW5Mb29wKG1fZGV2aWNlLmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50
KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAgbV9pbnB1dEJ1ZmZlci5yZXNpemUoa0hp
ZE1heFBhY2tldFNpemUpOwogICAgIElPSElERGV2aWNlUmVnaXN0ZXJJbnB1dFJlcG9ydENhbGxi
YWNrKG1fZGV2aWNlLmdldCgpLCBtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZlci5z
aXplKCksICZyZXBvcnRSZWNlaXZlZCwgdGhpcyk7Ci0gICAgbV9pbml0aWFsaXplZCA9IHRydWU7
CisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKIH0KIAogdm9pZCBIaWRDb25uZWN0aW9uOjp0
ZXJtaW5hdGUoKQpAQCAtODAsMTIgKzgwLDIzIEBAIHZvaWQgSGlkQ29ubmVjdGlvbjo6dGVybWlu
YXRlKCkKICAgICBJT0hJRERldmljZVJlZ2lzdGVySW5wdXRSZXBvcnRDYWxsYmFjayhtX2Rldmlj
ZS5nZXQoKSwgbV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpLCBudWxs
cHRyLCBudWxscHRyKTsKICAgICBJT0hJRERldmljZVVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2Rl
dmljZS5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUp
OwogICAgIElPSElERGV2aWNlQ2xvc2UobV9kZXZpY2UuZ2V0KCksIGtJT0hJRE9wdGlvbnNUeXBl
Tm9uZSk7Ci0gICAgbV90ZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBm
YWxzZTsKK30KKworYXV0byBIaWRDb25uZWN0aW9uOjpzZW5kU3luYyhjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEpIC0+IERhdGFTZW50Cit7CisgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7
CisgICAgYXV0byBzdGF0dXMgPSBJT0hJRERldmljZVNldFJlcG9ydChtX2RldmljZS5nZXQoKSwg
a0lPSElEUmVwb3J0VHlwZU91dHB1dCwga0hpZFJlcG9ydElkLCBkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBz
ZW5kIHJlcG9ydCB0byB0aGUgYXV0aGVudGljYXRvcjogJWQiLCBzdGF0dXMpOworICAgICAgICBy
ZXR1cm4gRGF0YVNlbnQ6Ok5vOworICAgIH0KKyAgICByZXR1cm4gRGF0YVNlbnQ6OlllczsKIH0K
IAogdm9pZCBIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFT
ZW50Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Cisg
ICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CiAgICAgYXV0byB0YXNrID0gbWFrZUJsb2NrUHRy
KFtkZXZpY2UgPSBtX2RldmljZSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC0xMDQsNyArMTE1LDcgQEAgdm9pZCBIaWRDb25uZWN0aW9uOjpzZW5kKFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJiBjYWxsYmFjaykKIAogdm9p
ZCBIaWRDb25uZWN0aW9uOjpyZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNrKERhdGFSZWNlaXZl
ZENhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOworICAg
IEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOwogICAgIEFTU0VSVCghbV9pbnB1dENhbGxiYWNrKTsK
ICAgICBtX2lucHV0Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKICAgICBjb25zdW1lUmVw
b3J0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAppbmRleCA2NTg0
NjZkZTdiMTMxZWJlNTRlNjcxZjY3MDQzYzdmZmU2YzUzNjhiLi45ZTVkOGZhNzA2NjgwZGY2ZTE0
Zjk2M2YyM2JlOWU4ODVlNzQ0ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0
aW9uLmNwcApAQCAtNjAsMTcgKzYwLDI5IEBAIE1vY2tIaWRDb25uZWN0aW9uOjpNb2NrSGlkQ29u
bmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UsIGNvbnN0IE1vY2tXZWJBdXRoZW50CiAKIHZv
aWQgTW9ja0hpZENvbm5lY3Rpb246OmluaXRpYWxpemUoKQogewotICAgIG1faW5pdGlhbGl6ZWQg
PSB0cnVlOworICAgIHNldElzSW5pdGlhbGl6ZWQodHJ1ZSk7CiB9CiAKIHZvaWQgTW9ja0hpZENv
bm5lY3Rpb246OnRlcm1pbmF0ZSgpCiB7Ci0gICAgbV90ZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICBz
ZXRJc0luaXRpYWxpemVkKGZhbHNlKTsKK30KKworYXV0byBNb2NrSGlkQ29ubmVjdGlvbjo6c2Vu
ZFN5bmMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBEYXRhU2VudAoreworICAgIEFT
U0VSVChpc0luaXRpYWxpemVkKCkpOworICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaGlkLT5leHBl
Y3RDYW5jZWwpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0
ZUZyb21TZXJpYWxpemVkRGF0YShkYXRhKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtZXNzYWdl
LCBtZXNzYWdlKTsKKyAgICAgICAgQVNTRVJUKG1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprQ2FuY2VsKTsKKyAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IGNhbmNlbGxl
ZC4iKTsKKyAgICB9CisgICAgcmV0dXJuIERhdGFTZW50OjpZZXM7CiB9CiAKIHZvaWQgTW9ja0hp
ZENvbm5lY3Rpb246OnNlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgRGF0YVNlbnRDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewotICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKKyAgICBBU1NFUlQo
aXNJbml0aWFsaXplZCgpKTsKICAgICBhdXRvIHRhc2sgPSBtYWtlQmxvY2tQdHIoW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRh
dGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFi
bGUgewpAQCAtMjI4LDYgKzI0MCw4IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBv
cnRzKCkKICAgICB9CiAKICAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpIaWRTdGFnZTo6UmVxdWVz
dCAmJiBtX3N1YlN0YWdlID09IE1vY2s6OkhpZFN1YlN0YWdlOjpNc2cpIHsKKyAgICAgICAgaWYg
KG1fY29uZmlndXJhdGlvbi5oaWQtPmV4cGVjdENhbmNlbCkKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5oaWQtPmtlZXBBbGl2ZSkgewogICAgICAgICAg
ICAgbV9jb25maWd1cmF0aW9uLmhpZC0+a2VlcEFsaXZlID0gZmFsc2U7CiAgICAgICAgICAgICBG
aWRvSGlkSW5pdFBhY2tldCBpbml0UGFja2V0KG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprS2VlcEFsaXZlLCB7IEN0YXBLZWVwQWxpdmVTdGF0dXNQcm9jZXNzaW5nIH0s
IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oCmluZGV4IDBkYjAwZTk4NTQz
MWNjYjhmNmY4MzQ2YmYzOGI1OTBiNTM5M2IwMDMuLjg4YjI4NGY1NGFiMGQ4ZjNmYzMxODg5ZjAz
OWNmOTkzYjM2MDc0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKQEAg
LTQ4LDkgKzQ4LDExIEBAIHB1YmxpYzoKICAgICBNb2NrSGlkQ29ubmVjdGlvbihJT0hJRERldmlj
ZVJlZiwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgc2VuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBEYXRh
U2VudENhbGxiYWNrJiYpIGZpbmFsOworICAgIC8vIEhpZENvbm5lY3Rpb24KICAgICB2b2lkIGlu
aXRpYWxpemUoKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZSgpIGZpbmFsOworICAgIERhdGFT
ZW50IHNlbmRTeW5jKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgZmluYWw7CisgICAgdm9p
ZCBzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCByZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNrSW50ZXJuYWwoKSBmaW5hbDsK
IAogICAgIHZvaWQgYXNzZW1ibGVSZXF1ZXN0KFZlY3Rvcjx1aW50OF90PiYmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0aW9uUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaAppbmRleCA0YmI1NDg1ZTVlYWE4
YzAwNWY5ZmMwZDMzOTZiNzU3MTRhNDBjNDJjLi5hMDBmNWEyNzJkOTY0YmFiNjVkYzQ2ZDE5YTFi
MzVhZmJjODA3NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0
RGF0YS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsLmgiCiAjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25QYW5lbEZsYWdzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CkBAIC00NSw2ICs0Niw3IEBAIHN0cnVjdCBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhIHsK
ICAgICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4gcGFnZTsKICAgICBXZWJBdXRoZW50aWNhdGlvblBh
bmVsUmVzdWx0IHBhbmVsUmVzdWx0IHsgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5h
dmFpbGFibGUgfTsKICAgICBSZWZQdHI8QVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsPiBwYW5l
bDsKKyAgICBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJZDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDRmY2Q4Y2Q4ZGJjNDg4NjI1MmY1
OTViZGZmZDUxY2RlM2RiNzU3NzkuLjI4NDNjNzVjYWM2MmJlNmFjNGM2YjZmYWFkZDU0OTFlYjFi
MTQ0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5jcHAKQEAgLTU0LDE0ICs1NCwxNCBAQCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eTo6fldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KCkKICAgICBtX3dlYlBh
Z2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBh
Z2VQcm94eS53ZWJQYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zJiBvcHRpb25zKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eTo6bWFrZUNyZWRlbnRpYWwodWludDY0X3QgbWVzc2FnZUlkLCBGcmFtZUlkZW50aWZpZXIgZnJh
bWVJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKQogewotICAgIGhhbmRsZVJlcXVl
c3QobWVzc2FnZUlkLCB7IGhhc2gsIG9wdGlvbnMsIG1ha2VXZWFrUHRyKG1fd2ViUGFnZVByb3h5
KSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIgfSk7
CisgICAgaGFuZGxlUmVxdWVzdChtZXNzYWdlSWQsIHsgaGFzaCwgb3B0aW9ucywgbWFrZVdlYWtQ
dHIobV93ZWJQYWdlUHJveHkpLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWls
YWJsZSwgbnVsbHB0ciwgZnJhbWVJZCB9KTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5OjpnZXRBc3NlcnRpb24odWludDY0X3QgbWVzc2FnZUlkLCBGcmFtZUlkZW50aWZpZXIgZnJh
bWVJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaGFuZGxlUmVxdWVz
dChtZXNzYWdlSWQsIHsgaGFzaCwgb3B0aW9ucywgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkp
LCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciB9KTsK
KyAgICBoYW5kbGVSZXF1ZXN0KG1lc3NhZ2VJZCwgeyBoYXNoLCBvcHRpb25zLCBtYWtlV2Vha1B0
cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxh
YmxlLCBudWxscHRyLCBmcmFtZUlkIH0pOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5OjpoYW5kbGVSZXF1ZXN0KHVpbnQ2NF90IG1lc3NhZ2VJZCwgV2ViQXV0aGVu
dGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAppbmRleCBlZjczMzQxNjI4ZDMwYjFiNGM3YzllNjA5
YzMxNmMyN2Y1Zjk2MTcwLi4wOWU5M2ZlODA2MmIyY2JmOGYyYjJhNWQ2NmU0YWM2OGZkMjU5NWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC01Nyw4ICs1OCw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKIAogICAgIC8vIFJlY2VpdmVycy4KLSAgICB2b2lkIG1ha2VDcmVkZW50aWFsKHVp
bnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJD
b3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJik7Ci0gICAgdm9pZCBnZXRB
c3NlcnRpb24odWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gs
IGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYpOworICAg
IHZvaWQgbWFrZUNyZWRlbnRpYWwodWludDY0X3QgbWVzc2FnZUlkLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYpOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9u
KHVpbnQ2NF90IG1lc3NhZ2VJZCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucyYpOwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKHVpbnQ2NF90IG1lc3NhZ2VJZCk7CiAKICAgICAvLyBTZW5kZXJzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbgppbmRleCAxMTdjZDg4MDhmMGRlNTc1NjJjMWQ4MWExMTgyYjU3ZDU2NTAw
MmI4Li5jNjYzNTdkNmUzNWJmMTFmOGZlMjFkMzZjMjBjMThlZjhkNmM0OTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjYsOCArMjYsOCBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eSB7CiAKLSAgICBNYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBtZXNz
YWdlSWQsIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zKTsKLSAgICBHZXRBc3NlcnRpb24odWludDY0
X3QgbWVzc2FnZUlkLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKTsKKyAgICBNYWtlQ3JlZGVudGlh
bCh1aW50NjRfdCBtZXNzYWdlSWQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBW
ZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMgb3B0aW9ucyk7CisgICAgR2V0QXNzZXJ0aW9uKHVpbnQ2NF90IG1lc3Nh
Z2VJZCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFZlY3Rvcjx1aW50OF90PiBo
YXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9w
dGlvbnMpOwogICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJs
ZSh1aW50NjRfdCBtZXNzYWdlSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRp
Y2F0b3IuY3BwCmluZGV4IDhlZGExMWI5MWE5YzQ5ZjY1YTg3NDM1MDM0ZTRjOGQyZTVhYzZjODcu
LmFjZTRjMGM3M2YwNGZjMzFmNzMxNDk0N2I2NWViZmE1MmQ2NTc2ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRp
Y2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCkBAIC00MiwxMSArNDIsOSBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBmaWRvOwogCiBDdGFwQXV0aGVudGljYXRv
cjo6Q3RhcEF1dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVy
LCBBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiYgaW5mbykKLSAgICA6IG1fZHJpdmVyKFdU
Rk1vdmUoZHJpdmVyKSkKKyAgICA6IEZpZG9BdXRoZW50aWNhdG9yKFdURk1vdmUoZHJpdmVyKSkK
ICAgICAsIG1faW5mbyhXVEZNb3ZlKGluZm8pKQogewotICAgIC8vIEZJWE1FKDE5MTUyMCk6IFdl
IG5lZWQgYSB3YXkgdG8gY29udmVydCBzdGQ6OnVuaXF1ZV9wdHIgdG8gVW5pcXVlUmVmLgotICAg
IEFTU0VSVChtX2RyaXZlcik7CiB9CiAKIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVk
ZW50aWFsKCkKQEAgLTU1LDcgKzUzLDcgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6bWFrZUNy
ZWRlbnRpYWwoKQogICAgIGlmIChwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5z
aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIGNib3JDbWQgPSBlbmNvZGVNYWtlQ3Jl
ZGVuaXRhbFJlcXVlc3RBc0NCT1IocmVxdWVzdERhdGEoKS5oYXNoLCBXVEY6OmdldDxQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLCBtX2lu
Zm8ub3B0aW9ucygpLnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7Ci0gICAgbV9kcml2
ZXItPnRyYW5zYWN0KFdURk1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeworICAgIGRyaXZlcigpLnRyYW5zYWN0KFdU
Rk1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODEsNyArNzksNyBA
QCB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogewogICAgIEFTU0VSVCgh
bV9pc0Rvd25ncmFkZWQpOwogICAgIGF1dG8gY2JvckNtZCA9IGVuY29kZUdldEFzc2VydGlvblJl
cXVlc3RBc0NCT1IocmVxdWVzdERhdGEoKS5oYXNoLCBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyksIG1faW5mby5vcHRpb25z
KCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSgpKTsKLSAgICBtX2RyaXZlci0+dHJhbnNh
Y3QoV1RGTW92ZShjYm9yQ21kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShWZWN0
b3I8dWludDhfdD4mJiBkYXRhKSB7CisgICAgZHJpdmVyKCkudHJhbnNhY3QoV1RGTW92ZShjYm9y
Q21kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShWZWN0b3I8dWludDhfdD4mJiBk
YXRhKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTAsOCArMTA4LDggQEAgYm9vbCBD
dGFwQXV0aGVudGljYXRvcjo6dHJ5RG93bmdyYWRlKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgbV9pc0Rvd25ncmFkZWQgPSB0cnVlOwotICAgIG1fZHJpdmVyLT5zZXRQcm90b2NvbChQ
cm90b2NvbFZlcnNpb246OmtVMmYpOwotICAgIG9ic2VydmVyKCktPmRvd25ncmFkZSh0aGlzLCBV
MmZBdXRoZW50aWNhdG9yOjpjcmVhdGUoV1RGTW92ZShtX2RyaXZlcikpKTsKKyAgICBkcml2ZXIo
KS5zZXRQcm90b2NvbChQcm90b2NvbFZlcnNpb246OmtVMmYpOworICAgIG9ic2VydmVyKCktPmRv
d25ncmFkZSh0aGlzLCBVMmZBdXRoZW50aWNhdG9yOjpjcmVhdGUocmVsZWFzZURyaXZlcigpKSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3Iu
aAppbmRleCA4MDU0MTk4MTRhNmEyMjc1MzIwM2Y4M2JjNjYyZjY3ZTc3ZTc5MmYxLi5lZTU0M2Q4
NWY5NGQwOGZhMGM2YjdhMDQ5Y2RmZWRmOGVmNDJmYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
QXV0aGVudGljYXRvci5oCkBAIC0yNywxNCArMjcsMTQgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yLmgiCisjaW5jbHVkZSAiRmlkb0F1dGhlbnRp
Y2F0b3IuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Uu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEN0YXBEcml2ZXI7CiAKLWNsYXNzIEN0
YXBBdXRoZW50aWNhdG9yIGZpbmFsIDogcHVibGljIEF1dGhlbnRpY2F0b3IgeworY2xhc3MgQ3Rh
cEF1dGhlbnRpY2F0b3IgZmluYWwgOiBwdWJsaWMgRmlkb0F1dGhlbnRpY2F0b3IgewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8Q3RhcEF1dGhlbnRpY2F0b3I+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9w
dHI8Q3RhcERyaXZlcj4mJiBkcml2ZXIsIGZpZG86OkF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9u
c2UmJiBpbmZvKQogICAgIHsKQEAgLTUyLDcgKzUyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIHRy
eURvd25ncmFkZSgpOwogICAgIGJvb2wgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4
dGVuc2lvbigpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+IG1fZHJpdmVyOwog
ICAgIGZpZG86OkF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UgbV9pbmZvOwogICAgIGJvb2wg
bV9pc0Rvd25ncmFkZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcERyaXZlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmgKaW5kZXgg
MDc5YmVhMzg4MmQ2ZDYzMGQ4NjdhNWJhYjFlODNmYzZiYzc3ZDlkNi4uN2E0MjBmZTFjZWMyMThi
OTA2NmU2MzAzNmVmYmJjNjNhNDE3YjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmgKQEAgLTQx
LDE0ICs0MSwxNSBAQCBjbGFzcyBDdGFwRHJpdmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEN0
YXBEcml2ZXI+IHsKIHB1YmxpYzoKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChWZWN0b3I8dWludDhfdD4mJik+OwogCi0gICAgQ3RhcERyaXZlcigpID0gZGVmYXVs
dDsKICAgICB2aXJ0dWFsIH5DdGFwRHJpdmVyKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBzZXRQ
cm90b2NvbChmaWRvOjpQcm90b2NvbFZlcnNpb24gcHJvdG9jb2wpIHsgbV9wcm90b2NvbCA9IHBy
b3RvY29sOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgp
IHsgfTsKIAogcHJvdGVjdGVkOgorICAgIEN0YXBEcml2ZXIoKSA9IGRlZmF1bHQ7CiAgICAgZmlk
bzo6UHJvdG9jb2xWZXJzaW9uIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbDsg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKaW5kZXggNTMyNjU4
MTkyNTliM2M0MGM1YWUyYTE0YmU0MDM3NzM2OWJjNmZkMy4uMDZmMjMxNTUyNmFmMWYyMzg0YjU1
MGFkZWZhOWYxOWUxMGVlZDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCkBA
IC02OCw5ICs2OCwxMSBAQCB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6dHJhbnNhY3QoZmlk
bzo6Rmlkb0hpZE1lc3NhZ2UmJiByZXF1ZXN0TWVzc2FnZSwgTWVzcwogCiB2b2lkIEN0YXBIaWRE
cml2ZXI6Oldvcmtlcjo6d3JpdGUoSGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQgc2VudCkKIHsKLSAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6V3JpdGUpOworICAgIGlmIChtX3N0YXRlICE9IFN0
YXRlOjpXcml0ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIGlmIChzZW50ICE9IEhpZENvbm5lY3Rp
b246OkRhdGFTZW50OjpZZXMpIHsKLSAgICAgICAgcmV0dXJuTWVzc2FnZShXVEY6Om51bGxvcHQp
OworICAgICAgICBtX3Jlc3BvbnNlTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuTWVzc2FnZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NSw3ICs5Nyw4IEBA
IHZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjp3cml0ZShIaWRDb25uZWN0aW9uOjpEYXRhU2Vu
dCBzZW50KQogCiB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6cmVhZChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWQpOwor
ICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSZWFkKQorICAgICAgICByZXR1cm47CiAgICAgaWYg
KCFtX3Jlc3BvbnNlTWVzc2FnZSkgewogICAgICAgICBtX3Jlc3BvbnNlTWVzc2FnZSA9IEZpZG9I
aWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoZGF0YSk7CiAgICAgICAgIC8vIFRo
ZSBmaXJzdCBmZXcgcmVwb3J0cyBjb3VsZCBiZSBmb3Igb3RoZXIgYXBwbGljYXRpb25zLCBhbmQg
dGhlcmVmb3JlIGlnbm9yZSB0aG9zZS4KQEAgLTEwNyw3ICsxMTAsOCBAQCB2b2lkIEN0YXBIaWRE
cml2ZXI6Oldvcmtlcjo6cmVhZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiAgICAgfSBl
bHNlIHsKICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlTWVzc2FnZS0+YWRkQ29udGludWF0aW9uUGFj
a2V0KGRhdGEpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgaGlk
IGNvbnRpbnVhdGlvbiBwYWNrZXQuIik7Ci0gICAgICAgICAgICByZXR1cm5NZXNzYWdlKFdURjo6
bnVsbG9wdCk7CisgICAgICAgICAgICBtX3Jlc3BvbnNlTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybk1lc3NhZ2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTExOSwxNiArMTIzLDM3IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6V29y
a2VyOjpyZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAgICAgICAgICAgIG1fcmVz
cG9uc2VNZXNzYWdlLnJlc2V0KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuTWVzc2FnZShXVEZNb3ZlKG1fcmVzcG9uc2VNZXNzYWdlKSk7CisgICAgICAg
IHJldHVybk1lc3NhZ2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAotdm9pZCBDdGFw
SGlkRHJpdmVyOjpXb3JrZXI6OnJldHVybk1lc3NhZ2UoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1l
c3NhZ2U+JiYgbWVzc2FnZSkKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZXR1cm5NZXNz
YWdlKCkKK3sKKyAgICAvLyBSZXNldCBzdGF0ZSBiZWZvcmUgY2FsbGluZyB0aGUgcmVzcG9uc2Ug
Y2FsbGJhY2sgdG8gYXZvaWQgYmVpbmcgZGVsZXRlZC4KKyAgICBhdXRvIGNhbGxiYWNrID0gV1RG
TW92ZShtX2NhbGxiYWNrKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBXVEZNb3ZlKG1fcmVzcG9uc2VN
ZXNzYWdlKTsKKyAgICByZXNldCgpOworICAgIGNhbGxiYWNrKFdURk1vdmUobWVzc2FnZSkpOwor
fQorCit2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6cmVzZXQoKQogewotICAgIG1fc3RhdGUg
PSBTdGF0ZTo6SWRsZTsKICAgICBtX2Nvbm5lY3Rpb24tPnVucmVnaXN0ZXJEYXRhUmVjZWl2ZWRD
YWxsYmFjaygpOwotICAgIG1fY2FsbGJhY2soV1RGTW92ZShtZXNzYWdlKSk7CisgICAgbV9jYWxs
YmFjayA9IG51bGxwdHI7CisgICAgbV9yZXNwb25zZU1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9yZXF1ZXN0TWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3N0YXRlID0gU3RhdGU6
OklkbGU7Cit9CisKKy8vIFRoaXMgaW1wbGVtZW50cyBDVEFQSElEX0NBTkNFTCB3aGljaCB2aW9s
YXRlcyB0aGUgdHJhbnNhY3Rpb24gc2VtYW50aWNzOgorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uu
b3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE5MDEzMC9maWRvLWNsaWVudC10by1hdXRoZW50aWNh
dG9yLXByb3RvY29sLXYyLjAtcHMtMjAxOTAxMzAuaHRtbCN1c2ItaGlkLWNhbmNlbAordm9pZCBD
dGFwSGlkRHJpdmVyOjpXb3JrZXI6OmNhbmNlbChmaWRvOjpGaWRvSGlkTWVzc2FnZSYmIHJlcXVl
c3RNZXNzYWdlKQoreworICAgIHJlc2V0KCk7CisgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRl
Q2FjaGUoKTsKKyAgICBBU1NFUlQocmVxdWVzdE1lc3NhZ2UubnVtUGFja2V0cygpID09IDEpOwor
ICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmMocmVxdWVzdE1lc3NhZ2UucG9wTmV4dFBhY2tldCgp
KTsKIH0KIAogQ3RhcEhpZERyaXZlcjo6Q3RhcEhpZERyaXZlcihVbmlxdWVSZWY8SGlkQ29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtMTY3LDcgKzE5Miw4IEBAIHZvaWQgQ3RhcEhpZERyaXZl
cjo6dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmIGNh
bGxiYWNrCiAKIHZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0
ZWQoT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzc2FnZSkKIHsKLSAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6QWxsb2NhdGVDaGFubmVsKTsKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0
ZTo6QWxsb2NhdGVDaGFubmVsKQorICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtZXNzYWdlKSB7
CiAgICAgICAgIHJldHVyblJlc3BvbnNlKHsgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE5Myw3
ICsyMTksNyBAQCB2b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJDaGFubmVsQWxsb2Nh
dGVkKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIG1lcwogICAgIG1fY2hhbm5lbElkIHw9IHN0
YXRpY19jYXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4KytdKSA8PCAxNjsKICAgICBtX2NoYW5u
ZWxJZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleCsrXSkgPDwgODsKICAg
ICBtX2NoYW5uZWxJZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleF0pOwot
ICAgIC8vIEZJWE1FKDE5MTUzNCk6IENoZWNrIHRoZSByZXNldCBvZiB0aGUgcGF5bG9hZC4KKyAg
ICAvLyBGSVhNRSgxOTE1MzQpOiBDaGVjayB0aGUgcmVzdCBvZiB0aGUgcGF5bG9hZC4KICAgICBh
dXRvIGNtZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jaGFubmVsSWQsIHByb3RvY29sKCkg
PT0gUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCA/IEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciA6
IEZpZG9IaWREZXZpY2VDb21tYW5kOjprTXNnLCBtX3JlcXVlc3REYXRhKTsKICAgICBBU1NFUlQo
Y21kKTsKICAgICBtX3dvcmtlci0+dHJhbnNhY3QoV1RGTW92ZSgqY21kKSwgW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXShPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiByZXNwb25zZSkg
bXV0YWJsZSB7CkBAIC0yMDYsNyArMjMyLDggQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51
ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiBtZXMKIAog
dm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChPcHRpb25h
bDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQogewotICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpSZWFkeSk7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJlYWR5KQorICAg
ICAgICByZXR1cm47CiAgICAgQVNTRVJUKCFtZXNzYWdlIHx8IG1lc3NhZ2UtPmNoYW5uZWxJZCgp
ID09IG1fY2hhbm5lbElkKTsKICAgICByZXR1cm5SZXNwb25zZShtZXNzYWdlID8gbWVzc2FnZS0+
Z2V0TWVzc2FnZVBheWxvYWQoKSA6IFZlY3Rvcjx1aW50OF90PigpKTsKIH0KQEAgLTIxNCw4ICsy
NDEsMjggQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZl
ZChPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4KIHZvaWQgQ3RhcEhpZERyaXZlcjo6cmV0
dXJuUmVzcG9uc2UoVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpCiB7CiAgICAgLy8gUmVzZXQg
c3RhdGUgYmVmb3JlIGNhbGxpbmcgdGhlIHJlc3BvbnNlIGNhbGxiYWNrIHRvIGF2b2lkIGJlaW5n
IGRlbGV0ZWQuCisgICAgYXV0byByZXNwb25zZUNhbGxiYWNrID0gV1RGTW92ZShtX3Jlc3BvbnNl
Q2FsbGJhY2spOworICAgIHJlc2V0KCk7CisgICAgcmVzcG9uc2VDYWxsYmFjayhXVEZNb3ZlKHJl
c3BvbnNlKSk7Cit9CisKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6cmVzZXQoKQoreworICAgIG1fcmVz
cG9uc2VDYWxsYmFjayA9IG51bGxwdHI7CisgICAgbV9jaGFubmVsSWQgPSBmaWRvOjprSGlkQnJv
YWRjYXN0Q2hhbm5lbDsKICAgICBtX3N0YXRlID0gU3RhdGU6OklkbGU7Ci0gICAgbV9yZXNwb25z
ZUNhbGxiYWNrKFdURk1vdmUocmVzcG9uc2UpKTsKK30KKwordm9pZCBDdGFwSGlkRHJpdmVyOjpj
YW5jZWwoKQoreworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxlIHx8IHByb3RvY29sKCkg
IT0gUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIENhbmNl
bCBhbnkgb3V0c3RhbmRpbmcgcmVxdWVzdHMuCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlJl
YWR5KSB7CisgICAgICAgIGF1dG8gY2FuY2VsQ29tbWFuZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVh
dGUobV9jaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2FuY2VsLCB7IH0pOworICAg
ICAgICBtX3dvcmtlci0+Y2FuY2VsKFdURk1vdmUoKmNhbmNlbENvbW1hbmQpKTsKKyAgICB9Cisg
ICAgcmVzZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhp
ZERyaXZlci5oCmluZGV4IGM1ZDZkY2FkNTg3ZGYxOTdhZTIyMGVhZGUyZDMwYjY0YmJlMGJjMjgu
LmJmYjIxM2Q3NDRkMmUxNjA5ZDNiYTNiNGJkMzY3NDExZmQzNzIxMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
Q3RhcEhpZERyaXZlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8g
VGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIHRoZSBDVEFQIEhJRCBwcm90b2NvbDoKIC8vIGh0dHBz
Oi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGll
bnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjdXNiCiAv
LyBGU006IElkbGUgPT4gQWxsb2NhdGVDaGFubmVsID0+IFJlYWR5Ci1jbGFzcyBDdGFwSGlkRHJp
dmVyIDogcHVibGljIEN0YXBEcml2ZXIgeworY2xhc3MgQ3RhcEhpZERyaXZlciBmaW5hbCA6IHB1
YmxpYyBDdGFwRHJpdmVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhf
dCB7CiAgICAgICAgIElkbGUsCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBDdGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiYmKTsKIAogICAgIHZvaWQg
dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmKSBmaW5h
bDsKKyAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIC8vIFdvcmtlciBp
cyB0aGUgaGVscGVyIHRoYXQgbWFpbnRhaW5zIHRoZSB0cmFuc2FjdGlvbi4KQEAgLTcxLDExICs3
MiwxMyBAQCBwcml2YXRlOgogICAgICAgICB+V29ya2VyKCk7CiAKICAgICAgICAgdm9pZCB0cmFu
c2FjdChmaWRvOjpGaWRvSGlkTWVzc2FnZSYmLCBNZXNzYWdlQ2FsbGJhY2smJik7CisgICAgICAg
IHZvaWQgY2FuY2VsKGZpZG86OkZpZG9IaWRNZXNzYWdlJiYpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCB3cml0ZShIaWRDb25uZWN0aW9uOjpEYXRhU2VudCk7CiAgICAgICAgIHZvaWQg
cmVhZChjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKLSAgICAgICAgdm9pZCByZXR1cm5NZXNzYWdl
KE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmKTsKKyAgICAgICAgdm9pZCByZXR1cm5N
ZXNzYWdlKCk7CisgICAgICAgIHZvaWQgcmVzZXQoKTsKIAogICAgICAgICBVbmlxdWVSZWY8SGlk
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6
OklkbGUgfTsKQEAgLTg3LDYgKzkwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRpbnVlQWZ0
ZXJDaGFubmVsQWxsb2NhdGVkKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmKTsKICAg
ICB2b2lkIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKE9wdGlvbmFsPGZpZG86OkZpZG9I
aWRNZXNzYWdlPiYmKTsKICAgICB2b2lkIHJldHVyblJlc3BvbnNlKFZlY3Rvcjx1aW50OF90PiYm
KTsKKyAgICB2b2lkIHJlc2V0KCk7CiAKICAgICBVbmlxdWVSZWY8V29ya2VyPiBtX3dvcmtlcjsK
ICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRv
QXV0aGVudGljYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU1OGYzMzg1NzkxM2JkZWVlMTRmYjcxYzFk
NTc0ZmQyMDFmMzk4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlkb0F1
dGhlbnRpY2F0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitGaWRvQXV0aGVudGljYXRvcjo6Rmlkb0F1dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVf
cHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVyKQorICAgIDogbV9kcml2ZXIoV1RGTW92ZShkcml2ZXIp
KQoreworICAgIC8vIEZJWE1FKDE5MTUyMCk6IFdlIG5lZWQgYSB3YXkgdG8gY29udmVydCBzdGQ6
OnVuaXF1ZV9wdHIgdG8gVW5pcXVlUmVmLgorICAgIEFTU0VSVChtX2RyaXZlcik7Cit9CisKK0Zp
ZG9BdXRoZW50aWNhdG9yOjp+Rmlkb0F1dGhlbnRpY2F0b3IoKQoreworICAgIGlmICghbV9kcml2
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX2RyaXZlci0+Y2FuY2VsKCk7Cit9CisKK0N0YXBE
cml2ZXImIEZpZG9BdXRoZW50aWNhdG9yOjpkcml2ZXIoKSBjb25zdAoreworICAgIEFTU0VSVCht
X2RyaXZlcik7CisgICAgcmV0dXJuICptX2RyaXZlcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPEN0
YXBEcml2ZXI+IEZpZG9BdXRoZW50aWNhdG9yOjpyZWxlYXNlRHJpdmVyKCkKK3sKKyAgICBBU1NF
UlQobV9kcml2ZXIpOworICAgIHJldHVybiBXVEZNb3ZlKG1fZHJpdmVyKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvQXV0
aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9GaWRvQXV0aGVudGljYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxNTY2ZTQ3NWQ2MTZkZjc1NGFh
NGE0Y2ZlY2FiOWI1NjA4NTVkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmgKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEN0YXBEcml2ZXI7CisKK2NsYXNzIEZpZG9BdXRoZW50aWNhdG9yIDogcHVibGlj
IEF1dGhlbnRpY2F0b3IgeworcHVibGljOgorICAgIH5GaWRvQXV0aGVudGljYXRvcigpIG92ZXJy
aWRlOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgRmlkb0F1dGhlbnRpY2F0b3Ioc3RkOjp1
bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYpOworCisgICAgQ3RhcERyaXZlciYgZHJpdmVyKCkgY29u
c3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+IHJlbGVhc2VEcml2ZXIoKTsKKwor
cHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gbV9kcml2ZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L0ZpZG9TZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwCmluZGV4IGVhMTRlZTA1Y2M4N2M1N2QwMzUxMmViMmM4
ZWYzNmQ1YzkxZjIyMmMuLjFiNTY1NGI4YzUxNjAyMzUyZWEzN2I3NDc2NDRhOTQyYTU1MTM0NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vRmlkb1NlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRmlk
b1NlcnZpY2U6OmNvbnRpbnVlQWZ0ZXJHZXRJbmZvKFdlYWtQdHI8Q3RhcERyaXZlcj4mJiB3ZWFr
RHJpdmVyLCBWZWN0b3I8CiAgICAgaWYgKCF3ZWFrRHJpdmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gZHJpdmVyID0gbV9kcml2ZXJzLnRha2Uo
d2Vha0RyaXZlci5nZXQoKSk7CisgICAgYXV0byBkcml2ZXIgPSBtX2RyaXZlcnMudGFrZSh3ZWFr
RHJpdmVyLmdldCgpKTsKICAgICBpZiAoIWRyaXZlciB8fCAhb2JzZXJ2ZXIoKSB8fCByZXNwb25z
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVu
dGljYXRvci5jcHAKaW5kZXggYmQ0MjQ1OTRmYmZhNWEyNmRlMDFjYTQ3YWMyM2U4ZWE4ZDllMDgz
OS4uYWI0NjUzNjJkM2I2NjFkOTAwODZkNWY5Y2EzZDIxZWZkNGI4NzE1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50
aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC00NiwxMSArNDYsOSBAQCBjb25zdCB1bnNp
Z25lZCByZXRyeVRpbWVPdXRWYWx1ZU1zID0gMjAwOwogfQogCiBVMmZBdXRoZW50aWNhdG9yOjpV
MmZBdXRoZW50aWNhdG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiYmIGRyaXZlcikKLSAg
ICA6IG1fZHJpdmVyKFdURk1vdmUoZHJpdmVyKSkKKyAgICA6IEZpZG9BdXRoZW50aWNhdG9yKFdU
Rk1vdmUoZHJpdmVyKSkKICAgICAsIG1fcmV0cnlUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZVMmZBdXRoZW50aWNhdG9yOjpyZXRyeUxhc3RDb21tYW5kKQogewotICAgIC8vIEZJWE1FKDE5
MTUyMCk6IFdlIG5lZWQgYSB3YXkgdG8gY29udmVydCBzdGQ6OnVuaXF1ZV9wdHIgdG8gVW5pcXVl
UmVmLgotICAgIEFTU0VSVChtX2RyaXZlcik7CiB9CiAKIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6
bWFrZUNyZWRlbnRpYWwoKQpAQCAtMTE4LDcgKzExNiw3IEBAIHZvaWQgVTJmQXV0aGVudGljYXRv
cjo6aXNzdWVOZXdDb21tYW5kKFZlY3Rvcjx1aW50OF90PiYmIGNvbW1hbmQsIENvbW1hbmRUeXBl
IHR5CiAKIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6aXNzdWVDb21tYW5kKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgY29tbWFuZCwgQ29tbWFuZFR5cGUgdHlwZSkKIHsKLSAgICBtX2RyaXZlci0+dHJh
bnNhY3QoVmVjdG9yPHVpbnQ4X3Q+KGNvbW1hbmQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIHR5cGVdKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKKyAgICBkcml2ZXIoKS50cmFu
c2FjdChWZWN0b3I8dWludDhfdD4oY29tbWFuZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgdHlwZV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAppbmRleCBkOTA1NWNkMDU5MDE0
MTVhYWQ1M2QyMTllYTEzZjljZWY0NjdhOWZjLi40NjcyNzQ4Nzc5ZjM3YWNmMDhiZjRjZWRhNzg5
NWI5ZDMyZGVlZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaApAQCAtMjcs
NyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0b3IuaCIKKyNpbmNsdWRlICJGaWRvQXV0aGVudGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBhcGR1IHsKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIEN0YXBEcml2ZXI7CiAKLWNsYXNzIFUyZkF1dGhlbnRpY2F0b3Ig
ZmluYWwgOiBwdWJsaWMgQXV0aGVudGljYXRvciB7CitjbGFzcyBVMmZBdXRoZW50aWNhdG9yIGZp
bmFsIDogcHVibGljIEZpZG9BdXRoZW50aWNhdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFUyZkF1dGhlbnRpY2F0b3I+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4mJiBk
cml2ZXIpCiAgICAgewpAQCAtNjksNyArNjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGlu
dWVCb2d1c0NvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoYXBkdTo6QXBkdVJlc3BvbnNlJiYp
OwogICAgIHZvaWQgY29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChhcGR1
OjpBcGR1UmVzcG9uc2UmJik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gbV9k
cml2ZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8VTJmQXV0aGVudGljYXRvcj4gbV9yZXRyeVRpbWVy
OwogICAgIFZlY3Rvcjx1aW50OF90PiBtX2xhc3RDb21tYW5kOwogICAgIENvbW1hbmRUeXBlIG1f
bGFzdENvbW1hbmRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggN2Y4OWZiOTc2Yjk4YmUwYzg3Y2YzNzFkZDQ0Zjg1Yzc0MTljZTQ1My4uNThmNDc5MzEy
MmQxNzY3NGQ3NzBkNDdiMTNkZWRjYWI0MThkOTIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0
ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCkBA
IC00MTEzLDYgKzQxMTQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJgogICAgICAgICBtX2xv
YWRlckNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1l
LCBuYXZpZ2F0aW9uLmdldCgpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1l
KCkpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmln
YXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKworI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNl
bFJlcXVlc3QoKnRoaXMsIGZyYW1lLT5pc01haW5GcmFtZSgpID8gV1RGOjpudWxsb3B0IDogT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPihmcmFtZUlEKSk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEV4cGxpY2l0T3BlbkZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBVUkwmJiB1cmwpCkBAIC03MTk2LDYgKzcyMDEsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogI2lmIEVOQUJMRShT
UEVFQ0hfU1lOVEhFU0lTKQogICAgIHJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKTsKICNlbmRpZgor
CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmF1dGhlbnRp
Y2F0b3JNYW5hZ2VyKCkuY2FuY2VsUmVxdWVzdCgqdGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uIHRlcm1pbmF0aW9uUmVhc29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNTAzOGRlY2I2ZDMzYzlhNzhiNDM1NTlmNmI2YzY1MmRk
MjY0MjhmZS4uNzllNmQ0MzhjOWZmNjc4M2QxN2Y4NThkMjU4MTE0YzM1ODFmM2M4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiQVBJRnJhbWVIYW5kbGUuaCIKICNpbmNsdWRlICJBUElQYWdlR3JvdXBI
YW5kbGUuaCIKICNpbmNsdWRlICJBUElQYWdlSGFuZGxlLmgiCisjaW5jbHVkZSAiQXV0aGVudGlj
YXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCkBAIC04OTAsNiAr
ODkxLDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95RnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQpCiAgICAgLy8gYmFjayB0byB0aGUgVUlQcm9jZXNzLCB0aGVuIHRoZSBm
cmFtZURlc3Ryb3llZCBtZXNzYWdlIHdpbGwgc3RpbGwgYmUgcmVjZWl2ZWQgYmVjYXVzZSBpdAog
ICAgIC8vIGdldHMgc2VudCBkaXJlY3RseSB0byB0aGUgV2ViUHJvY2Vzc1Byb3h5LgogICAgIEFT
U0VSVChXZWJGcmFtZVByb3h5TWFwOjppc1ZhbGlkS2V5KGZyYW1lSUQpKTsKKyNpZiBFTkFCTEUo
V0VCX0FVVEhOKQorICAgIGlmIChhdXRvKiBmcmFtZSA9IHdlYkZyYW1lKGZyYW1lSUQpKSB7Cisg
ICAgICAgIC8vIFdlYlBhZ2VQcm94eSB0YWtlcyBjYXJlIG9mIHRoZSBtYWluIGZyYW1lLgorICAg
ICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPndl
YnNpdGVEYXRhU3RvcmUoKS5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QoKnBh
Z2UsIGZyYW1lSUQpOworICAgIH0KKyNlbmRpZgogICAgIG1fZnJhbWVNYXAucmVtb3ZlKGZyYW1l
SUQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA4NGY5NmU2MjcyM2ViYTE2MTdhYjhiMTJjNzE2ZjAwMzYwOWI2MTI2Li5mMzhl
M2Q1ZWYzZjdmZjcyYmU4MzZhZjQ2N2M4ZjdkMjI5NjA1M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1NDYsNiArMzU0Niw4IEBA
CiAJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2VydmljZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGaWRvU2VydmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3QjgyNjRBMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrTmZjU2VydmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I4
MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBNb2NrTmZjU2VydmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTdCOEUzRDUyMzU1ODY0QTAwRDVDNUQxIC8qIEZpZG9BdXRoZW50aWNhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZpZG9BdXRoZW50aWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU3QjhFM0Q2MjM1NTg2NEEwMEQ1QzVEMSAvKiBGaWRvQXV0aGVudGljYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGaWRvQXV0aGVudGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3QkJFQTZDMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1dGhvcml6YXRpb25Mb2Fk
UG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDNjI0NEEyMzQ2NzlBNDAwMzgzRkU3IC8qIFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRoZW50aWNh
dGlvblBhbmVsRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VENkEy
MTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CkBAIC03MDQ3LDYgKzcwNDksOCBAQAogCQkJCTU3NTk3RUI3MjE4MTFEOUEwMDM3Rjky
NCAvKiBDdGFwSGlkRHJpdmVyLmggKi8sCiAJCQkJNTcwREFBQzkyMzAzODVGRDAwRThGQzA0IC8q
IEN0YXBOZmNEcml2ZXIuY3BwICovLAogCQkJCTU3MERBQUM4MjMwMzg1RkQwMEU4RkMwNCAvKiBD
dGFwTmZjRHJpdmVyLmggKi8sCisJCQkJNTdCOEUzRDYyMzU1ODY0QTAwRDVDNUQxIC8qIEZpZG9B
dXRoZW50aWNhdG9yLmNwcCAqLywKKwkJCQk1N0I4RTNENTIzNTU4NjRBMDBENUM1RDEgLyogRmlk
b0F1dGhlbnRpY2F0b3IuaCAqLywKIAkJCQk1N0I4MjY0NzIzMDUwQzUxMDBCNzJFQjAgLyogRmlk
b1NlcnZpY2UuY3BwICovLAogCQkJCTU3QjgyNjQ2MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2Vy
dmljZS5oICovLAogCQkJCTU3RUIyRTM5MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZBdXRoZW50aWNh
dG9yLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAKaW5kZXggNjZmYTFhNzliZDFmNjU5NGNkMjZkOTRjMzU3Njg4NjMxYTU4Zjg5Yi4uZGU1
YzlmNGZiYWRmNDg1MGI2N2I1ZjIzZGJlNTU0OGE3ZDdkMWY1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMu
aD4KQEAgLTQ4LDE2ICs0OSwyNCBAQCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6On5XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7CiB9CiAKLXZvaWQgV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNv
bnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMs
IFdlYkNvcmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit2b2lkIFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6RnJh
bWUmIGZyYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFdlYkNvcmU6OlJlcXVl
c3RDYWxsYmFjayYmIGhhbmRsZXIpCiB7Ci0gICAgYXV0byBtZXNzYWdlSWQgPSBzZXRSZXF1ZXN0
Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgbV93ZWJQYWdlLnNlbmQo
TWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpNYWtlQ3JlZGVudGlh
bChtZXNzYWdlSWQsIGhhc2gsIG9wdGlvbnMpKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IFdlYkZy
YW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKKyAgICBpZiAoIXdlYkZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIG1lc3NhZ2VJZCA9IHNldFJlcXVlc3RDYWxsYmFjayhXVEZNb3Zl
KGhhbmRsZXIpKTsKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6Ok1ha2VDcmVkZW50aWFsKG1lc3NhZ2VJZCwgd2ViRnJhbWUtPmZy
YW1lSUQoKSwgaGFzaCwgb3B0aW9ucykpOwogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBXZWJD
b3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZSYgZnJh
bWUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBXZWJDb3JlOjpSZXF1ZXN0Q2FsbGJh
Y2smJiBoYW5kbGVyKQogewotICAgIGF1dG8gbWVzc2FnZUlkID0gc2V0UmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpOwotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6R2V0QXNzZXJ0aW9uKG1lc3NhZ2VJ
ZCwgaGFzaCwgb3B0aW9ucykpOworICAgIGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21D
b3JlRnJhbWUoZnJhbWUpOworICAgIGlmICghd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gbWVzc2FnZUlkID0gc2V0UmVxdWVzdENhbGxiYWNrKFdURk1vdmUoaGFuZGxlcikp
OworICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eTo6R2V0QXNzZXJ0aW9uKG1lc3NhZ2VJZCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgaGFz
aCwgb3B0aW9ucykpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5
Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oCmluZGV4IDZiYmM2YjY2YWM1Nzg0NjljZTM4NWE5OTdiYTc2NTA1
NDIzNzdmNGYuLjIyYjkxMjA1Y2ZkYzVlOTM4N2Y1YzQxZGE1YTA4NjliOWM0Y2IxMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTQyLDggKzQy
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQKICAgICAvLyBTZW5kZXJzLgotICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyYsIFdlYkNvcmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKLSAgICB2b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gs
IGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkNv
cmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIG1ha2VDcmVk
ZW50aWFsKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29u
c3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIFdlYkNvcmU6
OlJlcXVlc3RDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldEFzc2VydGlvbihjb25zdCBX
ZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50
aWNhdG9yQXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxZGZlMzlkOGZlYzdmN2VjZTkyYTcyMzgz
MjRjNWVmNjQwZjFmMWE3Li4zZjE5M2VkNDFjY2MzNTI3ZDFjYWJkMTkxNTRiM2Q1ODk1YWY1NWFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgV2ViUGFnZSogV2ViRnJhbWU6OnBhZ2UoKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1XZWJGcmFtZSogV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoRnJh
bWUmIGZyYW1lKQorV2ViRnJhbWUqIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGNvbnN0IEZyYW1l
JiBmcmFtZSkKIHsKICAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVM
b2FkZXJDbGllbnQoZnJhbWUubG9hZGVyKCkuY2xpZW50KCkpOwogICAgIGlmICghd2ViRnJhbWVM
b2FkZXJDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aAppbmRleCAyZjBjYzlkMmNmNzZiODYyMDJhOWNjZmQ4YjY2ODBlYjBmNWExYjYzLi5iMzI5YWM1
ZTVmYjJmYWU0MWQ0N2Y2N2ZjYTEyMmM4MzBkYzY2ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiAg
ICAgV2ViUGFnZSogcGFnZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFdlYkZyYW1lKiBmcm9tQ29y
ZUZyYW1lKFdlYkNvcmU6OkZyYW1lJik7CisgICAgc3RhdGljIFdlYkZyYW1lKiBmcm9tQ29yZUZy
YW1lKGNvbnN0IFdlYkNvcmU6OkZyYW1lJik7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZUZyYW1lOyB9CiAKICAgICBGcmFtZUluZm9EYXRhIGlu
Zm8oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAzNDhmZWRlNDNmNzdhMmMxYTc2NjUwNmNjN2EyMDQ3YzY3ZjJkNWM2Li4wZmViY2M3
NWE4MWNkMWM4YmE0MzIxMmRhOTVjMzRkZjdmZjE0OWQwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMTAtMTYg
IEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5d
IEltcGxlbWVudCBBdXRoZW50aWNhdG9yQ2FuY2VsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1
OTIwMjA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZHMgbmV3IHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlv
blBhbmVsVUlEZWxlZ2F0ZSB3ZWJWaWV3OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6aW5pdGlh
dGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1n
ZXQtYXNzZXJ0aW9uLWhpZC5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWw6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi5odG1sOgorCiAyMDE5LTEwLTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IGVkaXRpbmcvYXN5bmMtY2xp
cGJvYXJkL2NsaXBib2FyZC1pbnRlcmZhY2VzLmh0bWwgaXMgZmFpbGluZyBpbiBXZWJLaXQxCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE4YjViZjIwNjJhODczZWZlYmZkZjkyNmQwOGIxOGQ5
ZDFlNGYyYWUuLmJjNmE3ZDNlYjg3ZjdkNWUyOTYxYjAxZWE0ZjFhNzZiODExM2ExNjUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzgsNiArMzM4LDcgQEAKIAkJNTc1OTlFMkIxRjA3MUFB
MDAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0
eVdyaXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc1OTlFMjMxRjA3MTkyQzAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRD
bG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWwgKi87IH07CiAJCTU3NjYzREVBMjM0
RUE2NkQwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzY2M0RFOTIzNEVBNjBCMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tbmZjLmh0bWwgKi87IH07CiAJCTU3NjYzREVDMjM0RjFGOTMwMEU4NUUwOSAvKiB3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzY2M0RFQjIzNEYxRjgwMDBFODVFMDkg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgKi87IH07CisJCTU3
NjYzREYzMjM1N0U0ODkwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1oaWQtY2FuY2VsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc2NjNERjIyMzU3RTQ1RDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNh
dGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbCAqLzsgfTsKIAkJNTc2OUM1MEIxRDlC
MDAwMjAwMDg0N0ZCIC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2OUM1MEExRDlCMDAwMTAwMDg0N0ZC
IC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tICovOyB9OwogCQk1Nzc0QUE2ODIxRkJCRjc4
MDBBRjJBMUIgLyogVGVzdFNPQXV0aG9yaXphdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NzRBQTY3MjFGQkJGNzgwMEFGMkExQiAvKiBUZXN0
U09BdXRob3JpemF0aW9uLm1tICovOyB9OwogCQk1Nzc4RDA1NjIyMTEwQTI2MDA4OTlFM0IgLyog
TG9hZFdlYkFyY2hpdmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Nzc4RDA1NTIyMTEwQTI2MDA4OTlFM0IgLyogTG9hZFdlYkFyY2hpdmUubW0gKi87
IH07CkBAIC0xNDQxLDYgKzE0NDIsNyBAQAogCQkJCUNEQzhFNDk3MUJDNkYxMDgwMDU5NEZFQyAv
KiB2aWRlby13aXRob3V0LWF1ZGlvLm1wNCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkyRUJE
OUQwQTIxMzQ3MzBEMDAyREE3NTggLyogdmlkZW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQlDRDU3Nzc5OTIxMUNFMEU0MDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQk1NzY2M0RGMzIzNTdFNDg5MDBFODVFMDkgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTU3NjYzREVDMjM0RjFGOTMwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2
M0RFQTIzNEVBNjZEMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
bmZjLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTdDNjI0NTAyMzQ2QzIxRTAwMzgz
RkU3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCkBAIC0xODYyLDYgKzE4NjQsNyBAQAogCQk1NzU5OUUyNjFGMDcxOTJDMDBBM0ZC
OEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0
ZTMtc2htICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ZmlsZTsgcGF0aCA9ICJJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxp
dHkuc3FsaXRlMy1zaG0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzY2M0RFOTIz
NEVBNjBCMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzY2M0RFQjIzNEYxRjgwMDBFODVFMDkg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzY2M0RGMjIzNTdFNDVEMDBFODVFMDkgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NjlDNTBBMUQ5QjAwMDEwMDA4NDdG
QiAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Nzc0QUE2NzIxRkJCRjc4MDBBRjJBMUIgLyogVGVzdFNPQXV0aG9y
aXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RTT0F1dGhvcml6YXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NzhEMDU1MjIxMTBBMjYwMDg5OUUzQiAv
KiBMb2FkV2ViQXJjaGl2ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvYWRXZWJBcmNoaXZl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzM4NCw2ICszMzg3LDcgQEAKIAkJ
CQlGNDQ1MUM3NTFFQjhGRDdDMDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFi
bGUuaHRtbCAqLywKIAkJCQlDRDU3Nzc5QjIxMUNFNkNFMDAxQjM3MUUgLyogdmlkZW8td2l0aC1h
dWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgKi8sCiAJCQkJQ0Q1Nzc3OTgyMTFDREU4RjAwMUIzNzFF
IC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgKi8sCisJCQkJNTc2NjNERjIyMzU3RTQ1RDAwRTg1RTA5
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbCAqLywK
IAkJCQk1NzY2M0RFQjIzNEYxRjgwMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24taGlkLmh0bWwgKi8sCiAJCQkJNTc2NjNERTkyMzRFQTYwQjAwRTg1RTA5IC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sICovLAogCQkJCTU3QzYyNDRG
MjM0NkMxRUMwMDM4M0ZFNyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5odG1s
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9I
aWRNZXNzYWdlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlk
b0hpZE1lc3NhZ2VUZXN0LmNwcAppbmRleCAwYzFhMDY5ZjEzYzM5YzQwOWU1ZDVlMWIwM2E3ZTky
YmY5YjM2NmMyLi4wNjZmYWU3OWY3OGIzZjZkNWQ4NWRmNjVkOGMzYzViYTg0NmRlODEyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VU
ZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1l
c3NhZ2VUZXN0LmNwcApAQCAtNTYsMTYgKzU2LDE1IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0
LCBUZXN0UGFja2V0U2l6ZSkKIH0KIAogLyoKLSAqIFUyZiBJbml0IFBhY2tldHMgYXJlIG9mIHRo
ZSBmb3JtYXQ6Ci0gKiBCeXRlIDA6ICAgIDAKLSAqIEJ5dGUgMS00OiAgQ2hhbm5lbCBJRAotICog
Qnl0ZSA1OiAgICBDb21tYW5kIGJ5dGUKLSAqIEJ5dGUgNi03OiAgQmlnIEVuZGlhbiBzaXplIG9m
IGRhdGEKLSAqIEJ5dGUgOC1uOiAgRGF0YSBibG9jaworICogQ1RBUCBISUQgSW5pdCBQYWNrZXRz
IGFyZSBvZiB0aGUgZm9ybWF0OgorICogQnl0ZSAwLTM6ICBDaGFubmVsIElECisgKiBCeXRlIDQ6
ICAgIENvbW1hbmQgYnl0ZQorICogQnl0ZSA1LTY6ICBCaWcgRW5kaWFuIHNpemUgb2YgZGF0YQor
ICogQnl0ZSA3LW46ICBEYXRhIGJsb2NrCiAgKgogICogUmVtYWluaW5nIGJ1ZmZlciBpcyBwYWRk
ZWQgd2l0aCAwCiAgKi8KLVRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YSkK
K1RFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YTEpCiB7CiAgICAgdWludDMy
X3QgY2hhbm5lbElkID0gMHhGNTA2MDcwODsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAs
IDExfTsKQEAgLTg4LDYgKzg3LDM0IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFj
a2V0RGF0YSkKICAgICAgICAgRVhQRUNUX0VRKDAsIHNlcmlhbGl6ZWRbaW5kZXhdKSA8PCAibWlz
bWF0Y2ggYXQgaW5kZXggIiA8PCBpbmRleDsKIH0KIAorLyoKKyAqIENUQVAgSElEIENvbnRpbnVh
dGlvbiBQYWNrZXRzIGFyZSBvZiB0aGUgZm9ybWF0OgorICogQnl0ZSAwLTM6ICBDaGFubmVsIElE
CisgKiBCeXRlIDQ6ICAgIFNFUQorICogQnl0ZSA1LW46ICBEYXRhIGJsb2NrCisgKgorICogUmVt
YWluaW5nIGJ1ZmZlciBpcyBwYWRkZWQgd2l0aCAwCisgKi8KK1RFU1QoRmlkb0hpZE1lc3NhZ2VU
ZXN0LCBUZXN0UGFja2V0RGF0YTIpCit7CisgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHhGNTA2
MDcwODsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKKyAgICBhdXRvIGluaXRQ
YWNrZXQgPSBtYWtlVW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwg
MCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpKTsKKyAgICBzaXplX3QgaW5kZXggPSAwOworCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWQgPSBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0
YSgpOworICAgIEVYUEVDVF9FUSgoY2hhbm5lbElkID4+IDI0KSAmIDB4ZmYsIHNlcmlhbGl6ZWRb
aW5kZXgrK10pOworICAgIEVYUEVDVF9FUSgoY2hhbm5lbElkID4+IDE2KSAmIDB4ZmYsIHNlcmlh
bGl6ZWRbaW5kZXgrK10pOworICAgIEVYUEVDVF9FUSgoY2hhbm5lbElkID4+IDgpICYgMHhmZiwg
c2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAgRVhQRUNUX0VRKGNoYW5uZWxJZCAmIDB4ZmYsIHNl
cmlhbGl6ZWRbaW5kZXgrK10pOworICAgIEVYUEVDVF9FUSgwLCBzZXJpYWxpemVkW2luZGV4Kytd
KTsKKworICAgIEVYUEVDVF9FUShkYXRhWzBdLCBzZXJpYWxpemVkW2luZGV4KytdKTsKKyAgICBF
WFBFQ1RfRVEoZGF0YVsxXSwgc2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAgZm9yICg7IGluZGV4
IDwgc2VyaWFsaXplZC5zaXplKCk7IGluZGV4KyspCisgICAgICAgIEVYUEVDVF9FUSgwLCBzZXJp
YWxpemVkW2luZGV4XSkgPDwgIm1pc21hdGNoIGF0IGluZGV4ICIgPDwgaW5kZXg7Cit9CisKIFRF
U1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0Q29uc3RydWN0b3JzKQogewogICAgIHVp
bnQzMl90IGNoYW5uZWxJZCA9IDB4MDUwNjA3MDg7CkBAIC0yMDksNiArMjM2LDE2IEBAIFRFU1Qo
Rmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0RGVzZXJpYWxpemUpCiAgICAgfQogfQogCitURVNUKEZp
ZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFByb3BlcnRpZXMpCit7CisgICAgdWludDMyX3QgY2hhbm5l
bElkID0gMHgwNTA2MDcwODsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKworICAgIGF1dG8g
bWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUoY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0NhbmNlbCwgZGF0YSk7CisgICAgRVhQRUNUX0VRKGNoYW5uZWxJZCwgbWVzc2Fn
ZS0+Y2hhbm5lbElkKCkpOworICAgIEVYUEVDVF9FUShGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nh
bmNlbCwgbWVzc2FnZS0+Y21kKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tCmluZGV4IDg4NDJkOWE1ZDEwMDRiYmU3Nzg5ZGY5ODUwNDk0MDRhZmQ4MDQ5Njcu
LjgzYWRjY2Y4OTllYTU3OTJiNDdmZjkzMWIyODAwZTMzODAxMTJhNzkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVENQU2Vy
dmVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25m
aWd1cmF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aD4KQEAgLTM2LDEwICszNywxMiBAQAogI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZl
YXR1cmUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlTnVtYmVycy5oPgogCiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuID0g
ZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsRmFpbGVkID0gZmFsc2U7
CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsU3VjY2VkZWQgPSBmYWxzZTsKK3N0
YXRpYyBSZXRhaW5QdHI8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbD4gZ1BhbmVsOwogCiBAaW50
ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgOiBOU09iamVjdCA8X1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPgogQGVuZApAQCAtNjcsNyArNzAsNiBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdDsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRlc3RXZWJBdXRo
ZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSB7Ci0gICAgUmV0YWluUHRyPF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw+IF9wYW5lbDsKICAgICBSZXRhaW5QdHI8VGVzdFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxEZWxlZ2F0ZT4gX2RlbGVnYXRlOwogICAgIEJsb2NrUHRyPHZvaWQoX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbFJlc3VsdCk+IF9jYWxsYmFjazsKIH0KQEAgLTg1LDEwICs4NywxMCBAQCAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbDooX1dLV2ViQXV0aGVudGljYQogCiAgICAgX2RlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBBU1NFUlRf
TkUocGFuZWwsIG5pbCk7Ci0gICAgX3BhbmVsID0gcGFuZWw7Ci0gICAgW19wYW5lbCBzZXREZWxl
Z2F0ZTpfZGVsZWdhdGUuZ2V0KCldOworICAgIGdQYW5lbCA9IHBhbmVsOworICAgIFtnUGFuZWwg
c2V0RGVsZWdhdGU6X2RlbGVnYXRlLmdldCgpXTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShbX3Bh
bmVsIHJlbHlpbmdQYXJ0eUlEXSwgIiIpOworICAgIEVYUEVDVF9UUlVFKFtbZ1BhbmVsIHJlbHlp
bmdQYXJ0eUlEXSBpc0VxdWFsOkAiIl0gfHwgW1tnUGFuZWwgcmVseWluZ1BhcnR5SURdIGlzRXF1
YWw6QCJsb2NhbGhvc3QiXSk7CiAKICAgICBpZiAoX2lzUmFjeSkgewogICAgICAgICBpZiAoIV9j
YWxsYmFjaykgewpAQCAtMTA2LDYgKzEwOCwyNCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKIG5hbWVzcGFjZSB7CiAKK2NvbnN0IGNoYXIgcGFyZW50RnJhbWVbXSA9ICI8aHRtbD48aWZy
YW1lIGlkPSd0aGVGcmFtZScgc3JjPSdpRnJhbWUuaHRtbCc+PC9pZnJhbWU+PC9odG1sPiI7Citj
b25zdCBjaGFyIHN1YkZyYW1lW10gPQorIjxodG1sPiIKKyI8aW5wdXQgdHlwZT0ndGV4dCcgaWQ9
J2lucHV0Jz4iCisiPHNjcmlwdD4iCisiICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7IgorIiAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgZXhwZWN0Q2FuY2VsOiB0cnVlIH0gfSk7IgorIiAgICAgICAgaW50ZXJuYWxzLndpdGhV
c2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOyIKKyIgICAgfSIKKyIgICAgY29u
c3Qgb3B0aW9ucyA9IHsiCisiICAgICAgICBwdWJsaWNLZXk6IHsiCisiICAgICAgICAgICAgY2hh
bGxlbmdlOiBuZXcgVWludDhBcnJheSgxNikiCisiICAgICAgICB9IgorIiAgICB9OyIKKyIgICAg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKTsiCisiPC9zY3JpcHQ+IgorIjwvaHRt
bD4iOworCiBzdGF0aWMgX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqd2ViQXV0aGVudGljYXRpb25F
eHBlcmltZW50YWxGZWF0dXJlKCkKIHsKICAgICBzdGF0aWMgUmV0YWluUHRyPF9XS0V4cGVyaW1l
bnRhbEZlYXR1cmU+IHRoZUZlYXR1cmU7CkBAIC0xMjIsMjEgKzE0MiwxMiBAQCBzdGF0aWMgX1dL
RXhwZXJpbWVudGFsRmVhdHVyZSAqd2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJl
KCkKICAgICByZXR1cm4gdGhlRmVhdHVyZS5nZXQoKTsKIH0KIAotLy8gT25seSBmb2N1c2VkIGRv
Y3VtZW50cyBjYW4gdHJpZ2dlciBXZWJBdXRobi4KLXN0YXRpYyB2b2lkIGZvY3VzKFRlc3RXS1dl
YlZpZXcgKndlYlZpZXcpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIFtbd2ViVmlldyBob3N0
V2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6d2ViVmlld107Ci0jZWxpZiBQTEFURk9STShJT1Mp
Ci0gICAgW3dlYlZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJdOwotI2VuZGlmCi19Ci0KIHN0YXRp
YyB2b2lkIHJlc2V0KCkKIHsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuID0gZmFsc2U7
CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbEZhaWxlZCA9IGZhbHNlOwogICAgIHdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxTdWNjZWRlZCA9IGZhbHNlOworICAgIGdQYW5lbCA9IG51bGxwdHI7CiB9
CiAKIH0gLy8gbmFtZXNhcGNlOwpAQCAtMTQ5LDcgKzE2MCw2IEBAIFRFU1QoV2ViQXV0aGVudGlj
YXRpb25QYW5lbCwgTm9QYW5lbFRpbWVvdXQpCiAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVu
Y2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNh
dGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgIGZvY3VzKHdlYlZpZXcuZ2V0KCkpOwogCiAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJM
LmdldCgpXV07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJPcGVyYXRpb24gdGltZWQg
b3V0LiJdOwpAQCAtMTYzLDcgKzE3Myw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
Tm9QYW5lbEhpZFN1Y2Nlc3MpCiAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0
RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVy
aW1lbnRhbEZlYXR1cmUoKV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbl0pOwotICAgIGZvY3VzKHdlYlZpZXcuZ2V0KCkpOwogCiAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07
CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CkBAIC0xNzQsMTMg
KzE4MywxMiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsVGltZW91dCkKICAg
ICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
biIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CiAKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5D
bGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9y
VGVzdGluZzpZRVNdOwogICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJs
ZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50
YWxGZWF0dXJlKCldOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgZm9jdXMod2ViVmlldy5nZXQoKSk7CiAKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwu
Z2V0KCldXTsKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOwpAQCAt
MTk4LDcgKzIwNiw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFuZWxIaWRTdWNj
ZXNzKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJ
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKLSAgICBmb2N1cyh3ZWJWaWV3LmdldCgpKTsKIAogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwog
ICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CkBAIC0yMjIsNyArMjI5
LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbFJhY3kxKQogICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CiAgICAgW2RlbGVnYXRlIHNldElzUmFjeTp0cnVlXTsKICAgICBbd2Vi
VmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBmb2N1cyh3ZWJWaWV3Lmdl
dCgpKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25Q
YW5lbFJhbik7CkBAIC0yNDMsNyArMjQ5LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBQYW5lbFJhY3kyKQogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW2RlbGVnYXRlIHNl
dElzUmFjeTp0cnVlXTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKLSAgICBmb2N1cyh3ZWJWaWV3LmdldCgpKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6
OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CkBAIC0yNjYsNyArMjcxLDYgQEAgVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbFR3aWNlKQogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3Qg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
ICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBmb2N1cyh3
ZWJWaWV3LmdldCgpKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVu
dGljYXRpb25QYW5lbFJhbik7CkBAIC0yNzgsNiArMjgyLDE3NCBAQCBURVNUKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwsIFBhbmVsVHdpY2UpCiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlv
blBhbmVsU3VjY2VkZWQpOwogfQogCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlbG9h
ZEhpZENhbmNlbCkKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVS
TCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZp
Z3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0
aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29u
ZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNl
c10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRp
b25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RX
ZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJW
aWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAg
VXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuKTsKKyAgICBbd2ViVmlldyByZWxv
YWRdOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbEZhaWxlZCk7Cit9CisK
K1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTG9jYXRpb25DaGFuZ2VIaWRDYW5jZWwpCit7
CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24taGlkLWNhbmNlbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgUmV0YWluUHRyPE5TVVJMPiBvdGhlclVSTCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwor
CisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0
X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5X
aXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1
cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVy
ZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1pl
cm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RV
UkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOwor
ICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJsb2NhdGlvbiA9ICclQCciLCBbb3RoZXJVUkwgYWJzb2x1dGVTdHJpbmddXSBjb21wbGV0
aW9uSGFuZGxlcjpuaWxdOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbEZh
aWxlZCk7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTmV3TG9hZEhpZENhbmNl
bCkKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQtY2FuY2VsIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IG90aGVy
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1Bs
dWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2Nv
bmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxG
ZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
KworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJh
bik7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpvdGhlclVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5l
bEZhaWxlZCk7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgQ2xvc2VIaWRDYW5j
ZWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24taGlkLWNhbmNlbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRF
bmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJp
bWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVu
dGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1
bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CisgICAgW3dlYlZpZXcgX2Nsb3NlXTsKKyAg
ICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQpOworfQorCitURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIFN1YkZyYW1lQ2hhbmdlTG9jYXRpb25IaWRDYW5jZWwpCit7
CisgICAgVENQU2VydmVyIHNlcnZlcihbcGFyZW50RnJhbWUgPSBTdHJpbmcocGFyZW50RnJhbWUp
LCBzdWJGcmFtZSA9IFN0cmluZyhzdWJGcmFtZSldIChpbnQgc29ja2V0KSB7CisgICAgICAgIE5T
U3RyaW5nICpmaXJzdFJlc3BvbnNlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CisgICAg
ICAgICAgICBAIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAiQ29udGVudC1MZW5n
dGg6ICVkXHJcblxyXG4iCisgICAgICAgICAgICAiJUAiLAorICAgICAgICAgICAgcGFyZW50RnJh
bWUubGVuZ3RoKCksCisgICAgICAgICAgICAoaWQpcGFyZW50RnJhbWUKKyAgICAgICAgXTsKKyAg
ICAgICAgTlNTdHJpbmcgKnNlY29uZFJlc3BvbnNlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6CisgICAgICAgICAgICBAIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAiQ29u
dGVudC1MZW5ndGg6ICVkXHJcblxyXG4iCisgICAgICAgICAgICAiJUAiLAorICAgICAgICAgICAg
c3ViRnJhbWUubGVuZ3RoKCksCisgICAgICAgICAgICAoaWQpc3ViRnJhbWUKKyAgICAgICAgXTsK
KworICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgVENQU2VydmVyOjp3
cml0ZShzb2NrZXQsIGZpcnN0UmVzcG9uc2UuVVRGOFN0cmluZywgZmlyc3RSZXNwb25zZS5sZW5n
dGgpOworICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgVENQU2VydmVy
Ojp3cml0ZShzb2NrZXQsIHNlY29uZFJlc3BvbnNlLlVURjhTdHJpbmcsIHNlY29uZFJlc3BvbnNl
Lmxlbmd0aCk7CisgICAgfSk7CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1l
OkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6
WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBm
b3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVy
ZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5l
bFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KGlkKW1ha2VTdHJpbmcoImh0dHA6
Ly9sb2NhbGhvc3Q6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNlcnZlci5wb3J0KCkpKV1dXTsK
KyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOworICAgIFt3ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdDpAInRoZUZyYW1lLnNyYyA9ICdzaW1wbGUuaHRtbCciIGNvbXBs
ZXRpb25IYW5kbGVyOm5pbF07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVs
RmFpbGVkKTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBTdWJGcmFtZURlc3Ry
dWN0aW9uSGlkQ2FuY2VsKQoreworICAgIFRDUFNlcnZlciBzZXJ2ZXIoW3BhcmVudEZyYW1lID0g
U3RyaW5nKHBhcmVudEZyYW1lKSwgc3ViRnJhbWUgPSBTdHJpbmcoc3ViRnJhbWUpXSAoaW50IHNv
Y2tldCkgeworICAgICAgICBOU1N0cmluZyAqZmlyc3RSZXNwb25zZSA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OgorICAgICAgICAgICAgQCJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAg
ICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAlZFxyXG5cclxuIgorICAgICAgICAgICAgIiVAIiwKKyAg
ICAgICAgICAgIHBhcmVudEZyYW1lLmxlbmd0aCgpLAorICAgICAgICAgICAgKGlkKXBhcmVudEZy
YW1lCisgICAgICAgIF07CisgICAgICAgIE5TU3RyaW5nICpzZWNvbmRSZXNwb25zZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OgorICAgICAgICAgICAgQCJIVFRQLzEuMSAyMDAgT0tcclxu
IgorICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAlZFxyXG5cclxuIgorICAgICAgICAgICAg
IiVAIiwKKyAgICAgICAgICAgIHN1YkZyYW1lLmxlbmd0aCgpLAorICAgICAgICAgICAgKGlkKXN1
YkZyYW1lCisgICAgICAgIF07CisKKyAgICAgICAgVENQU2VydmVyOjpyZWFkKHNvY2tldCk7Cisg
ICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBmaXJzdFJlc3BvbnNlLlVURjhTdHJpbmcs
IGZpcnN0UmVzcG9uc2UubGVuZ3RoKTsKKyAgICAgICAgVENQU2VydmVyOjpyZWFkKHNvY2tldCk7
CisgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBzZWNvbmRSZXNwb25zZS5VVEY4U3Ry
aW5nLCBzZWNvbmRSZXNwb25zZS5sZW5ndGgpOworICAgIH0pOworCisgICAgYXV0byAqY29uZmln
dXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRo
VGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25m
aWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2Vz
XSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlv
bkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihp
ZCltYWtlU3RyaW5nKCJodHRwOi8vbG9jYWxob3N0OiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
ZXJ2ZXIucG9ydCgpKSldXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVs
UmFuKTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ0aGVGcmFtZS5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKHRoZUZyYW1lKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBV
dGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQpOworfQorCitURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsSGlkQ2FuY2VsKQoreworICAgIHJlc2V0KCk7CisgICAg
UmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQ
bHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFs
RmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
YW4pOworICAgIFtnUGFuZWwgY2FuY2VsXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpA
Ik9wZXJhdGlvbiB0aW1lZCBvdXQuIl07CisgICAgRVhQRUNUX0ZBTFNFKHdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxGYWlsZWQpOworICAgIEVYUEVDVF9GQUxTRSh3ZWJBdXRoZW50aWNhdGlvblBhbmVs
U3VjY2VkZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2Vs
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjEyNDgx
MWQ0OWI1ZDg2ZjIzMTNkZDFiYmJkMzMwMGQxMWZmMzk3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQtY2FuY2VsLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPGlucHV0IHR5cGU9
InRleHQiIGlkPSJpbnB1dCI+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IGV4cGVjdENhbmNlbDogdHJ1ZSB9IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0
aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisgICAgY29u
c3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBjaGFsbGVu
Z2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAg
ICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgLy8gY29uc29sZS5sb2coIlN1Y2NlZWRlZCEiKTsK
KyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1l
c3NhZ2UoIlN1Y2NlZWRlZCEiKTsKKyAgICB9LCBlcnJvciA9PiB7CisgICAgICAgIC8vIGNvbnNv
bGUubG9nKGVycm9yLm1lc3NhZ2UpOworICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShlcnJvci5tZXNzYWdlKTsKKyAgICB9KTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24taGlkLmh0bWwKaW5kZXggYjFlZjVhMzZkMjhhOGFkMTQ3MTBkOGQ3ZjdmMjVkZTlhMWM2OTcw
OS4uNjU1MTBkMTY5Y2ZiZjM4YWZhODlkYzRhZmRmZDg5OTVhMDVmMTQ1NSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1sCkBAIC0x
LDMgKzEsNCBAQAorPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+CiA8c2NyaXB0PgogICAg
IGNvbnN0IHRlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0ID0KICAgICAgICAgIkFLTUJvbUpwWkZo
QUtBaXR6dWorVHNsemVsZjMvdlp3SUd0RFFOZ29LZUZkNW9FaWVZemh5ekE2NXNhZjB0SzIiICsK
QEAgLTUsOCArNiwxMCBAQAogICAgICAgICAiWjUxVnN0dVFrdUhJMmVYaDBDdDFnUEMwZ1N4M0NX
TGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NGVHV1QldnQiIgKwogICAgICAgICAiNC9GMFZCN0Rs
VVZNMDlJSFBteGUxTXpIVXdSb0NSWmJDQUlnR0tvdjZ4b0F4Mk1FZjYvNnFOczhPdXR6aFAyQyIg
KwogICAgICAgICAiUW9KMUw3RmU2NEc5dUJjPSI7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
Ci0gICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNj
ZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHBheWxvYWRCYXNlNjQ6IFt0ZXN0
QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2Vy
R2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KIAogICAgIGNvbnN0IG9w
dGlvbnMgPSB7CiAgICAgICAgIHB1YmxpY0tleTogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1uZmMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwKaW5kZXggNzA2YTZiN2ZmYmVkZGEx
NDM1MjAwZDVkZmEyZWIyYTdlMjAxMWQyMC4uOTQ1YjZiNjU5NDJiNTZlZDFiMmRkY2U5NmMzNTYy
YWU0MWViMzBmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLW5mYy5odG1sCkBAIC0xLDMgKzEsNCBAQAorPGlucHV0IHR5cGU9InRleHQiIGlk
PSJpbnB1dCI+CiA8c2NyaXB0PgogICAgIGNvbnN0IHRlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCA9
ICJSa2xFVDE4eVh6Q1FBQT09IjsKICAgICBjb25zdCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJh
c2U2NCA9CkBAIC05LDggKzEwLDEwIEBACiAgICAgICAgICJaNTFWc3R1UWt1SEkyZVhoMEN0MWdQ
QzBnU3gzQ1dMaDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiArCiAgICAgICAgICI0
L0YwVkI3RGxVVk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82cU5zOE91
dHpoUDJDIiArCiAgICAgICAgICJRb0oxTDdGZTY0Rzl1QmVRQUE9PSI7Ci0gICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCi0gICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0
ZXN0QXNzZXJ0aW9uTWVzc2FnZUFwZHVCYXNlNjRdIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2
NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RBc3NlcnRpb25NZXNzYWdlQXBk
dUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7
IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KIAogICAgIGNvbnN0IG9wdGlvbnMgPSB7CiAgICAg
ICAgIHB1YmxpY0tleTogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5odG1sIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi5odG1sCmluZGV4IGJmNDlhNWZkY2YxOGQ0NzBkNWIzMmI3ODZjMWQwZGM1ZTA2Y2I5
MmUuLjJkZTJlOTI3YzBhNTQxNTQ5NjdkZjVjNDlhNWZkYTBkZjAwNTE4Y2QgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9u
LWdldC1hc3NlcnRpb24uaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwKQEAgLTEsNCArMSw4
IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KIDxzY3JpcHQ+CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4g
eyBpbnB1dC5mb2N1cygpOyB9KTsKKwogICAgIGNvbnN0IG9wdGlvbnMgPSB7CiAgICAgICAgIHB1
YmxpY0tleTogewogICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381240</attachid>
            <date>2019-10-17 15:44:22 -0700</date>
            <delta_ts>2019-10-17 15:58:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191523-20191017154422.patch</filename>
            <type>text/plain</type>
            <size>128239</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVjMzU5NTFkNTUwYjlk
MjllYjg3NzkyMGRlZjU4ZDI4ZTRlNWQ4Ny4uM2ViNjgwZTYwYmRiMzg5ODM3YWJjMmY3NWRkNjEw
ZWE3ZmFkMTAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTEwLTE2ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgQXV0aGVudGljYXRvckNhbmNlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTkyMDIw
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0cyBpbiBleGlzdGluZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQ6OnJlcXVlc3RSZXBseSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQ6OnNldFJlcXVlc3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OnNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
cik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNl
UmVxdWVzdENvbnZlcnRlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1l
c3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNw
cDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpnZXRTZXJpYWxpemVkRGF0YSBj
b25zdCk6CisgICAgICAgIChmaWRvOjpGaWRvSGlkQ29udGludWF0aW9uUGFja2V0OjpnZXRTZXJp
YWxpemVkRGF0YSBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29uZmln
dXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaWRsOgorICAgICAgICBBZGRzIGEgbmV3IG9wdGlvbiB0byB0ZXN0IEF1
dGhlbnRpY2F0b3JDYW5jZWwuCisKIDIwMTktMTAtMTUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkZCBzdXBwb3J0IGZvciBjb2xncm91cC9j
b2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMTJjYzAzNTM2OTgwYzBjZmI0MjNlM2E0MDBiNTY3MTU2MjdhMDIxMy4u
YWM5MTgxOTg1ZjM4NWY4ZTMyMTU5NTgzODEzMzRkOWQ4YWY2ODJiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMTktMTAtMTYgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBBdXRoZW50aWNhdG9yQ2FuY2VsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1MjMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1OTIwMjA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50IHR3byB3YXlzIHRv
IGNhbmNlbCBhIHBlbmRpbmcgV2ViQXV0aG4gY2VyZW1vbnk6CisgICAgICAgIDEpIFZpYSBuYXZp
Z2F0aW9uIGFjdGl2aXRpZXMuIEFjdGl2aXRpZXMgaW5jbHVkZSBpKSBtYWluIGZyYW1lIG5hdmln
YXRpb24sIGlpKSBtYWluIGZyYW1lIHJlbG9hZCwKKyAgICAgICAgaWlpKSBtYWluIGZyYW1lIGRl
c3RydWN0aW9uLCBpdikgc3ViIGZyYW1lIG5hdmlnYXRpb24sIGFuZCB2KSBzdWIgZnJhbWUgZGVz
dHJ1Y3Rpb24uIEFsbCB0aGUgYWJvdmUKKyAgICAgICAgYWN0aXZpdGllcyB3aWxsIGNhbmNlbCBh
bnkgcGVuZGluZyBXZWJBdXRobiBjZXJlbW9ueSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUg
ZnJhbWUuIFRvIHByb3ZlCisgICAgICAgIHRoZSBhc3NvY2lhdGlvbiwgYSBHbG9iYWxGcmFtZUlk
ZW50aWZpZXIgaXMgYnJpZGdlZCBpbnRvIFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuIE5h
dmlnYXRpb24KKyAgICAgICAgY2FuY2VsIGlzIGRvbmUgaW4gV2ViUGFnZVByb3h5OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkLCBhbmQgZGVzdHJ1Y3Rpb24gY2FuY2VsIGlz
IGRvbmUKKyAgICAgICAgaW4gV2ViUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95RnJhbWUgYW5kIFdl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZS4KKyAgICAgICAgMikgVmlhIFVJLiBUaGlzIHBhdGggaXMg
c2ltcGx5IGJyaWRnZWQgLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNhbmNlbF0gaW50byBB
dXRoZW50aWNhdG9yTWFuYWdlci4KKyAgICAgICAgTm90ZWQsIHRoaXMgcGF0Y2ggZm9sbG93cyB0
aGUgc3BlYyB0byB3YWl0IHVudGlsIHRpbWUgb3V0IHRvIG5vdGlmeSBSUHMuCisgICAgICAgIFJl
ZmVyZW5jZXM6IGkpIFN0ZXAgMjAgb2YgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNj
cmVhdGVDcmVkZW50aWFsLCBpaSkgU3RlcCAxOCBvZgorICAgICAgICBodHRwczovL3d3dy53My5v
cmcvVFIvd2ViYXV0aG4vI2dldEFzc2VydGlvbgorCisgICAgICAgIEFzIGZvciB3aGF0IHRoZSBj
YW5jZWwgYWN0dWFsbHkgZG9lcywgaXQ6CisgICAgICAgIDEpIHN0b3BzIGFueSBISUQvTkZDIHNj
YW5uaW5nOworICAgICAgICAyKSBzZW5kcyBDVEFQSElEX0NBTkNFTCB0byBhbnkgSElEIGF1dGhl
bnRpY2F0b3JzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkLiBSZWZlcmVuY2U6CisgICAgICAgIGh0dHBz
Oi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGll
bnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjdXNiLWhp
ZC1jYW5jZWwKKyAgICAgICAgU2VuZGluZyBDVEFQSElEX0NBTkNFTCwgaG93ZXZlciwgaXMgbm90
IHRyaXZpYWwuIEFuIGFic3RyYWN0IGNsYXNzIEZpZG9BdXRoZW50aWNhdG9yIGlzIGNyYWZ0ZWQg
dG8KKyAgICAgICAgZG8gdGhpcyBsYWJvciBmb3IgYm90aCBDdGFwQXV0aGVudGljYXRvciBhbmQg
VTJmQXV0aGVudGljYXRvciBkdXJpbmcgdGhlIHRpbWUgb2YgZGVzdHJ1Y3Rpb25zLgorICAgICAg
ICBOb3RlZDogVGhlIEN0YXBIaWREcml2ZXIgaXMgdGhlIG9ubHkgQ3RhcERyaXZlciBpbXBsZW1l
bnRzIHRoZSBjYW5jZWwgbWV0aG9kLiBTaW5jZSB0aGUgbWVzc2FnZQorICAgICAgICBpcyBzZW50
IGR1cmluZyBzdGF0ZSByZXNldCwgbGlmZWN5Y2xlIG9mIHRoZSBIaWRDb25lbmN0aW9uIGFuZCBI
aWRTZXJ2aWNlIHdoaWNoIG1hbmFnZSB0aGUgdW5kZXJseWluZworICAgICAgICBJT0hJRERldmlj
ZVJlZiBpcyB2ZXJ5IGhhcmQgdG8gaG9sZC4gVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIHJlZ3Vs
YXIgYXN5bmMgc2VuZGVyLiBUaGVyZWZvcmUsCisgICAgICAgIEhpZENvbm5lY3Rpb246OnNlbmRT
eW5jIGlzIGNyYWZ0ZWQgdG8gc2VuZCB0aGUgbWVzc2FnZSBzeW5jaHJvbm91c2x5IHRvIGdldCBy
aWQgb2YgdGhlIHRlZGlvdXNuZXNzCisgICAgICAgIG9mIG1hbmFnaW5nIHRob3NlIGxpZmVjeWNs
ZXMuCisKKyAgICAgICAgUC5TLiBWZWN0b3I6Omdyb3cgZG9lc24ndCBpbml0aWFsaXplIFBPRCB0
eXBlcy4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGFsc28gYXBwZW5kcyBpdCB3aXRoIG1lbXNldAor
ICAgICAgICBmb3IgRmlkb0hpZFBhY2tldC4KKworICAgICAgICBQLlMuUy4gVGhpcyBwYXRjaCBh
bHNvIHNpbXBsaWZpZXMgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50IGJ5OiBpKSBtb3Zp
bmcgY29kZSBmcm9tIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudAorICAgICAgICB0byBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQsIGFuZCBpaSkgdXNpbmcgc2VuZFdpdGhB
c3luY1JlcGx5LiBUaGUgbGF0dGVyIGFsbG93cyB1cyB0bworICAgICAgICBnZXQgcmlkIG9mIHRo
ZSBjb21wbGV4IG1lY2hhbmlzbSBvZiBlbnN1cmluZyB0aGUgcmlnaHQgcmVwbHkgaXMgcmV0dXJu
ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNh
dGlvblBhbmVsOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVs
OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRp
b25QYW5lbDo6Y2FuY2VsIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgY2FuY2VsXSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1h
bmFnZXI6OmNhbmNlbFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFu
YWdlcjo6Y2xlYXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpydW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXNl
dFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvSGlkQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpIaWRDb25uZWN0aW9uOjppc0lu
aXRpYWxpemVkKToKKyAgICAgICAgKFdlYktpdDo6SGlkQ29ubmVjdGlvbjo6c2V0SXNJbml0aWFs
aXplZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENv
bm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246On5IaWRDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SGlkQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkhpZENvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6SGlkQ29ubmVjdGlv
bjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OnJlZ2lzdGVyRGF0YVJl
Y2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5l
Y3Rpb246OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6
dGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnNlbmRTeW5j
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAo
V2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERh
dGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6Q3RhcEF1dGhlbnRpY2F0b3IpOgorICAgICAgICAo
V2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2Vi
S2l0OjpDdGFwQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
Q3RhcEF1dGhlbnRpY2F0b3I6OnRyeURvd25ncmFkZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmg6CisgICAgICAgIChXZWJL
aXQ6OkN0YXBEcml2ZXI6OmNhbmNlbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWRE
cml2ZXI6Oldvcmtlcjo6d3JpdGUpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpX
b3JrZXI6OnJlYWQpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OnJl
dHVybk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OnJl
c2V0KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6V29ya2VyOjpjYW5jZWwpOgor
ICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9j
YXRlZCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6cmV0dXJuUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpyZXNldCk6CisgICAgICAg
IChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OmNhbmNlbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
Y3BwLgorICAgICAgICAoV2ViS2l0OjpGaWRvQXV0aGVudGljYXRvcjo6Rmlkb0F1dGhlbnRpY2F0
b3IpOgorICAgICAgICAoV2ViS2l0OjpGaWRvQXV0aGVudGljYXRvcjo6fkZpZG9BdXRoZW50aWNh
dG9yKToKKyAgICAgICAgKFdlYktpdDo6Rmlkb0F1dGhlbnRpY2F0b3I6OmRyaXZlciBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkZpZG9BdXRoZW50aWNhdG9yOjpyZWxlYXNlRHJpdmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvQXV0aGVudGljYXRv
ci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5jcHAuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vRmlkb1NlcnZpY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaWRvU2VydmljZTo6Y29u
dGludWVBZnRlckdldEluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50
aWNhdG9yOjpVMmZBdXRoZW50aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6VTJmQXV0aGVudGlj
YXRvcjo6aXNzdWVDb21tYW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRGVzdHJveUZyYW1lKToKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRp
YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFz
c2VydGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisKIDIwMTktMTAtMTUgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjUxMTM4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29u
dGFpbmVyLmNwcAppbmRleCAyZjAzODk1NDk2YzQwN2I2NmJhZGY1NzVkZDMyYjVmYzU4N2IzNmJl
Li5kMzA5ZDhiYTRkNTNjN2MyOTc2OTJhODE3ZmEzZWFjYWIwMTkzNzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2Vt
ZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIENyZWRl
bnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywg
Q3JlZGVudGlhbFBybwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kb2N1bWVudC0+
cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5kaXNjb3ZlckZyb21FeHRlcm5hbFNv
dXJjZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLnB1YmxpY0tleS52YWx1
ZSgpLCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9wdGlvbnMu
c2lnbmFsKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5kaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSgqbV9kb2N1
bWVudCwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUoKSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNB
bmNlc3RvcnMoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOwog
fQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpzdG9yZShjb25zdCBCYXNpY0NyZWRlbnRp
YWwmLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9p
ZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6aXNDcmVhdGUoQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cyYmIG9wdGlvbnMsIENyZWRlbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZG9j
dW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuY3JlYXRlKG1fZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCksIG9wdGlvbnMucHVibGljS2V5LnZhbHVlKCksIGRvZXNIYXZl
U2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCksIFdURk1vdmUob3B0aW9ucy5zaWduYWwpLCBXVEZN
b3ZlKHByb21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcigpLmNyZWF0ZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUoKSwg
ZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25h
bCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpw
cmV2ZW50U2lsZW50QWNjZXNzKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggNDNhM2RmNGFjNTBkNGEwNGEwOGFiOTg4
MGQ1NjVhZTA3OTRlY2JjYy4uOGRjZDIwZDAzZjFkM2FjNTU4MTY2OWQ3YzVkOGYwNTk5MjM5Mzdi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0Jhc2ljQ3Jl
ZGVudGlhbC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
UHVibGljS2V5Q3JlZGVudGlhbC5oIgpAQCAtMTM1LDEwICsxMzYsMTMgQEAgdm9pZCBBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRv
ckNvb3JkaW5hdG8KICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KIAotdm9pZCBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2Fs
bGVyT3JpZ2luLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRp
b25zLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYg
YWJvcnRTaWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3ZvaWQgQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBib29sIHNh
bWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWws
IENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKIHsKICAgICB1c2luZyBuYW1lc3Bh
Y2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CiAKKyAgICBjb25zdCBhdXRvJiBj
YWxsZXJPcmlnaW4gPSBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8qIGZyYW1l
ID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOwogICAgIC8vIFRoZSBmb2xs
b3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNy
ZWRlbnRpYWwgYXMgb2YgNSBEZWNlbWJlciAyMDE3LgogICAgIC8vIFN0ZXAgMSwgMywgMTYgYXJl
IGhhbmRsZWQgYnkgdGhlIGNhbGxlci4KICAgICAvLyBTdGVwIDIuCkBAIC0xODUsNyArMTg5LDcg
QEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZShjb25zdCBTZWN1cml0eU9y
aWdpbiYgY2FsbGVyT3JpZ2luLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xpZW50
RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwgPSBXVEZN
b3ZlKGFib3J0U2lnbmFsKV0gKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
JiBkYXRhLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUg
eworICAgIGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERh
dGFKc29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92
ZShhYm9ydFNpZ25hbCldIChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYg
ZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLT5hYm9ydGVkKCkpIHsKICAg
ICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydGVk
IGJ5IEFib3J0U2lnbmFsLiJfcyB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwMCwxMyAr
MjA0LDE2IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIGNhbGxlck9yaWdpbiwgY29uc3QKICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
ZXhjZXB0aW9uLnRvRXhjZXB0aW9uKCkpOwogICAgIH07CiAgICAgLy8gQXN5bmMgb3BlcmF0aW9u
cyBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgotICAgIG1fY2xp
ZW50LT5tYWtlQ3JlZGVudGlhbChjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX2NsaWVudC0+bWFrZUNyZWRlbnRpYWwoKmZyYW1l
LCBjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAot
dm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9y
cywgUmVmUHRyPEFib3J0U2lnbmFsPiYmIGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYm
IHByb21pc2UpIGNvbnN0Cit2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJG
cm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhB
bmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFBy
b21pc2UmJiBwcm9taXNlKSBjb25zdAogewogICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JJbnRlcm5hbDsKIAorICAgIGF1dG8mIGNhbGxlck9yaWdpbiA9IGRvY3Vt
ZW50LnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgp
OworICAgIEFTU0VSVChmcmFtZSk7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERl
Y2VtYmVyIDIwMTcuCiAgICAgLy8gU3RlcCAxLCAzLCAxMyBhcmUgaGFuZGxlZCBieSB0aGUgY2Fs
bGVyLgogICAgIC8vIFN0ZXAgMi4KQEAgLTI1Myw3ICsyNjAsNyBAQCB2b2lkIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgU2VjdXJpdHlP
cmlnaW4mCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAo
Y29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmIGRhdGEsIGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFj
ayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwgPSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKGNv
bnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhLCBjb25zdCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoYWJvcnRT
aWduYWwgJiYgYWJvcnRTaWduYWwtPmFib3J0ZWQoKSkgewogICAgICAgICAgICAgcHJvbWlzZS5y
ZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwuIl9z
IH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY4LDcgKzI3NSw3IEBAIHZvaWQgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBTZWN1
cml0eU9yaWdpbiYKICAgICAgICAgcHJvbWlzZS5yZWplY3QoZXhjZXB0aW9uLnRvRXhjZXB0aW9u
KCkpOwogICAgIH07CiAgICAgLy8gQXN5bmMgb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCBhbmQg
aGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgotICAgIG1fY2xpZW50LT5nZXRBc3NlcnRpb24oY2xp
ZW50RGF0YUpzb25IYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgbV9jbGllbnQtPmdldEFzc2VydGlvbigqZnJhbWUsIGNsaWVudERhdGFKc29uSGFzaCwgb3B0
aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVBy
b21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaAppbmRleCA5YzY1YWU2YTY3OWJhNDk3OTU5MmUyMjk5OWI4OTNlYWEzNjYyMTljLi5iZGFh
NTU1MDA2M2FkOTkwMTA4NGFlOTljODY3NGM1YmRiYjQ3OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWJvcnRTaWdu
YWw7CiBjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBCYXNpY0Ny
ZWRlbnRpYWw7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIERvY3VtZW50OwogCiBzdHJ1
Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKIHN0cnVjdCBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50PiYmKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBp
bXBsZW1lbnQgc3RhdGljIG1ldGhvZHMgb2YgUHVibGljS2V5Q3JlZGVudGlhbC4KLSAgICB2b2lk
IGNyZWF0ZShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJv
cnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OwotICAgIHZvaWQgZGlzY292
ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3Jz
LCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OworICAg
IHZvaWQgY3JlYXRlKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyYsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9y
dFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7CisgICAgdm9pZCBkaXNjb3Zl
ckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucyYsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0
cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7CiAgICAgdm9pZCBp
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURl
ZmVycmVkPElETEJvb2xlYW4+JiYpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTEwNGY3
MGY0MzgyOWUxOTUwNTJlOWQ0YTE2MGY5YmMxZDgwMmMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
Ci0jaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi12b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDo6cmVxdWVzdFJlcGx5
KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERh
dGEmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikKLXsKLSAg
ICBpZiAobWVzc2FnZUlkICE9IG1fYWNjdW11bGF0ZWRSZXF1ZXN0TWVzc2FnZUlkIC0gMSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKGRhdGEsIGV4Y2Vw
dGlvbik7Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ojppc1VzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNz
YWdlSWQsIGJvb2wgcmVzdWx0KQotewotICAgIGF1dG8gaGFuZGxlciA9IG1fcGVuZGluZ1F1ZXJ5
Q29tcGxldGlvbkhhbmRsZXJzLnRha2UobWVzc2FnZUlkKTsKLSAgICBoYW5kbGVyKHJlc3VsdCk7
Ci19Ci0KLXVpbnQ2NF90IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDo6c2V0UmVxdWVz
dENvbXBsZXRpb25IYW5kbGVyKFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17
Ci0gICAgaWYgKG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBtX3BlbmRpbmdD
b21wbGV0aW9uSGFuZGxlcih7IH0sIHsgTm90QWxsb3dlZEVycm9yLCAiVGhpcyByZXF1ZXN0IGhh
cyBiZWVuIHZvaWRlZCBieSBhIG5ldyByZXF1ZXN0LiJfcyB9KTsKLQotICAgIG1fcGVuZGluZ0Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKLSAgICByZXR1cm4gbV9hY2N1bXVs
YXRlZFJlcXVlc3RNZXNzYWdlSWQrKzsKLX0KLQotdWludDY0X3QgQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yQ2xpZW50OjphZGRRdWVyeUNvbXBsZXRpb25IYW5kbGVyKFF1ZXJ5Q29tcGxldGlvbkhh
bmRsZXImJiBoYW5kbGVyKQotewotICAgIHVpbnQ2NF90IG1lc3NhZ2VJZCA9IG1fYWNjdW11bGF0
ZWRRdWVyeU1lc3NhZ2VJZCsrOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUXVlcnlD
b21wbGV0aW9uSGFuZGxlcnMuYWRkKG1lc3NhZ2VJZCwgV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXR1
cm4gbWVzc2FnZUlkOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggMDMz
MGNkYTM4Mjc3ZTYxZmYxNjNkMzUwNjkxNjdkZTBmMjVmZmQ3OC4uNzViYmRjOWFhMWEwMWNkOWVj
MDQ5NjdjZTgxY2MxNzUyZjIzMGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5o
CkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlZmVycmVk
UHJvbWlzZTsKK2NsYXNzIEZyYW1lOwogCiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9uczsKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTsKQEAgLTUwLDI2ICs1
MSw5IEBAIHB1YmxpYzoKICAgICBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQoKSA9IGRl
ZmF1bHQ7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCi0gICAgLy8gU2VuZGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRp
YWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29u
c3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotCi0g
ICAgLy8gUmVjZWl2ZXJzLgotICAgIHZvaWQgcmVxdWVzdFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJ
ZCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmLCBjb25zdCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhJik7Ci0gICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgLy8gT25seSBvbmUgcmVxdWVzdCBpcyBhbGxvd2VkIGF0IG9uZSB0aW1lLiBB
IG5ldyByZXF1ZXN0IHdpbGwgY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3QuCi0gICAgLy8gQSBt
ZXNzYWdlIGlkIHRoYXQgaXMgdGllZCB0byB0aGUgcmVxdWVzdCB3aWwgYmUgZ2VuZXJhdGVkIGVh
Y2ggdGltZSB0byBwcmV2ZW50IG1pc21hdGNoaW5nIHJlc3BvbnNlcy4KLSAgICB1aW50NjRfdCBz
ZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwot
ICAgIHVpbnQ2NF90IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVlcnlDb21wbGV0aW9uSGFu
ZGxlciYmKTsKLQotcHJpdmF0ZToKLSAgICB1aW50NjRfdCBtX2FjY3VtdWxhdGVkUmVxdWVzdE1l
c3NhZ2VJZCB7IDEgfTsKLSAgICBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgbV9wZW5kaW5nQ29t
cGxldGlvbkhhbmRsZXI7Ci0gICAgdWludDY0X3QgbV9hY2N1bXVsYXRlZFF1ZXJ5TWVzc2FnZUlk
IHsgMSB9OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXI+IG1f
cGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOworICAgIHZpcnR1YWwgdm9pZCBtYWtlQ3Jl
ZGVudGlhbChjb25zdCBGcmFtZSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIm
JikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBp
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0
aW9uSGFuZGxlciYmKSB7IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
cXVlc3RDb252ZXJ0ZXIuaAppbmRleCA0YWNjM2ZmNjJiOTUyNDlmNDg3YjIyY2U4NGFjNDE3OWY0
YzMxODZmLi43ODExNGZhZWI3YjdkMzlmY2I2NjllYmIyOGEwOGU4MWU3ZjVlYWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENv
bnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZp
Y2VSZXF1ZXN0Q29udmVydGVyLmgKQEAgLTUzLDggKzUzLDcgQEAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0
b3I8dWkKIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVHZXRBc3NlcnRpb25S
ZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgQXV0aGVudGljYXRvclN1cHBvcnRl
ZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkpOwogCiAvLyBSZXByZXNlbnRz
IENUQVAgcmVxdWVzdHMgd2l0aCBlbXB0eSBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcKLS8vIEF1dGhl
bnRpY2F0b3JHZXRJbmZvLCBBdXRoZW50aWNhdG9yQ2FuY2VsLCBBdXRoZW50aWNhdG9yUmVzZXQg
YW5kCi0vLyBBdXRoZW50aWNhdG9yR2V0TmV4dEFzc2VydGlvbiBjb21tYW5kcy4KKy8vIEF1dGhl
bnRpY2F0b3JHZXRJbmZvLCBBdXRoZW50aWNhdG9yUmVzZXQgYW5kIEF1dGhlbnRpY2F0b3JHZXRO
ZXh0QXNzZXJ0aW9uIGNvbW1hbmRzLgogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVu
Y29kZUVtcHR5QXV0aGVudGljYXRvclJlcXVlc3QoQ3RhcFJlcXVlc3RDb21tYW5kKTsKIAogfSAv
LyBuYW1lc3BhY2UgZmlkbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKaW5kZXggMWI5MTJkOThkOWYwNGYzMDc0YTFi
OGUxYTYyNjAxYTQyZmFmMzU3ZC4uYjEyZGFlZmVlMTRlNTEyYjRmZjRhNzRhMTI2MTA0MWQ3MzU5
ZDZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0Zp
ZG9IaWRNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCkBAIC0xNDYsNiArMTQ2LDcgQEAgc2l6ZV90IEZpZG9IaWRN
ZXNzYWdlOjpudW1QYWNrZXRzKCkgY29uc3QKIAogRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNz
YWdlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogICAgIDogbV9jaGFubmVsSWQoY2hhbm5lbElkKQorICAg
ICwgbV9jbWQodHlwZSkKIHsKICAgICB1aW50OF90IHNlcXVlbmNlID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3Bw
CmluZGV4IDI2YjgwYWE4YTVmMTM5NjNjNzY4ZTdlOTIzYmJhYWIyYjg3YjVlZWUuLjUyMzIyMGEx
NmZiZmQzNDM5ZTUxMGU1MjcxYjE5YmU2NDY3OTk2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKQEAgLTk5LDcg
Kzk5LDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEZpZG9IaWRJbml0UGFja2V0OjpnZXRTZXJpYWxpemVk
RGF0YSgpIGNvbnN0CiAgICAgc2VyaWFsaXplZC5hcHBlbmQoKG1fcGF5bG9hZExlbmd0aCA+PiA4
KSAmIDB4ZmYpOwogICAgIHNlcmlhbGl6ZWQuYXBwZW5kKG1fcGF5bG9hZExlbmd0aCAmIDB4ZmYp
OwogICAgIHNlcmlhbGl6ZWQuYXBwZW5kKG1fZGF0YS5iZWdpbigpLCBtX2RhdGEuc2l6ZSgpKTsK
KyAgICBhdXRvIG9mZnNldCA9IHNlcmlhbGl6ZWQuc2l6ZSgpOwogICAgIHNlcmlhbGl6ZWQuZ3Jv
dyhrSGlkUGFja2V0U2l6ZSk7CisgICAgbWVtc2V0KHNlcmlhbGl6ZWQuZGF0YSgpICsgb2Zmc2V0
LCAwLCBrSGlkUGFja2V0U2l6ZSAtIG9mZnNldCk7CiAKICAgICByZXR1cm4gc2VyaWFsaXplZDsK
IH0KQEAgLTE0Nyw3ICsxNDksOSBAQCBWZWN0b3I8dWludDhfdD4gRmlkb0hpZENvbnRpbnVhdGlv
blBhY2tldDo6Z2V0U2VyaWFsaXplZERhdGEoKSBjb25zdAogICAgIHNlcmlhbGl6ZWQuYXBwZW5k
KG1fY2hhbm5lbElkICYgMHhmZik7CiAgICAgc2VyaWFsaXplZC5hcHBlbmQobV9zZXF1ZW5jZSk7
CiAgICAgc2VyaWFsaXplZC5hcHBlbmQobV9kYXRhLmJlZ2luKCksIG1fZGF0YS5zaXplKCkpOwor
ICAgIGF1dG8gb2Zmc2V0ID0gc2VyaWFsaXplZC5zaXplKCk7CiAgICAgc2VyaWFsaXplZC5ncm93
KGtIaWRQYWNrZXRTaXplKTsKKyAgICBtZW1zZXQoc2VyaWFsaXplZC5kYXRhKCkgKyBvZmZzZXQs
IDAsIGtIaWRQYWNrZXRTaXplIC0gb2Zmc2V0KTsKIAogICAgIHJldHVybiBzZXJpYWxpemVkOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAppbmRleCAwZGE2Mjc5Y2M1MTUzNjI3ODc0OThlMzJkOWJhY2IwMmNjOTA5
ZTFkLi5hODg4ODZmNWI5NDYyNGRiMjQ0MjAxNGNhYWMxMmVhNjgwZjYyYWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dApAQCAtMjU5LDcgKzI1OSw2IEBAIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUu
Y3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCiAKIE1vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAotTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL1B1Ymxp
Y0tleUNyZWRlbnRpYWwuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRp
bHMuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdUNvbW1hbmQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2EyYTRl
YTY5YWUzYjZjMWY5ODRlMGY2M2FiMTI3OGNjN2ZiYjMwMy4uY2JkNTM0MmUwOWVkY2Q5NWU3MzY2
MGZjYTI4ZmQ2OThhMTg4ODIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODY5Niw3ICs4Njk2LDYgQEAKIAkJNTc2MDgyNEYy
MDExOEQ4RDAwMTE2Njc4IC8qIEpTQmFzaWNDcmVkZW50aWFsQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQmFzaWNDcmVkZW50aWFsQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTc2MDgyNTYyMDExQkUwMjAwMTE2Njc4IC8qIEpTQXV0aGVudGljYXRvclJl
c3BvbnNlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVudGljYXRvclJlc3Bv
bnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyNzAyMDIx
NTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOTMyMDJCQTk1MzAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzY4MTQy
ODFFNkY5OEFEMDBFNzc3NTQgLyogRWNkaEtleURlcml2ZVBhcmFtcy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRWNkaEtl
eURlcml2ZVBhcmFtcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NjgxNDI5
MUU2Rjk5QzEwMEU3Nzc1NCAvKiBDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobUVjZGhLZXlE
ZXJpdmVQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2ODE0MzQxRTZG
RTNFODAwRTc3NzU0IC8qIENyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTc4NSw3ICsxOTc4NCw2IEBACiAJCQkJNTczMDND
MUQyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlk
bCAqLywKIAkJCQk1NzMwM0M0NDIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmNwcCAqLywKIAkJCQk1NzMwM0M0MzIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmggKi8sCi0JCQkJNTc2MDgyOTMyMDJCQTk1MzAwMTE2Njc4IC8qIEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAgKi8sCiAJCQkJNTc2MDgyNzAyMDIxNTEz
RjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oICovLAogCQkJCTU3
MzAzQkNGMjAwODdBODMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaCAqLywKIAkJ
CQk1NzMwM0JEMTIwMDg3QTgzMDAzNTU5NjUgLyogQXV0aGVudGljYXRvclJlc3BvbnNlLmlkbCAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmgKaW5kZXggNzQ1MGYyNTY3NmFjMTI3YzYzNDljZmVjNmU5
YTBmYzU2MzRkZTdlNy4uZWIzODFjYmEzMTViMjU1MDE2YjU3ZTk5ZmQyNzVkNjlhODZmYjZkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmgKQEAgLTgzLDYgKzgzLDcgQEAgc3RydWN0IE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBib29sIGZhc3REYXRhQXJyaXZh
bCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgY29udGludWVBZnRlckVycm9yRGF0YSB7IGZhbHNl
IH07CiAgICAgICAgIGJvb2wgY2FuRG93bmdyYWRlIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBl
eHBlY3RDYW5jZWwgeyBmYWxzZSB9OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPEhpZENvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7
CkBAIC0xNTksNyArMTYwLDcgQEAgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uPiBNb2NrV2ViQXV0aGVudGkKIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CiB2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okhp
ZENvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVu
Y29kZXIgPDwgcGF5bG9hZEJhc2U2NCA8PCBzdGFnZSA8PCBzdWJTdGFnZSA8PCBlcnJvciA8PCBp
c1UyZiA8PCBrZWVwQWxpdmUgPDwgZmFzdERhdGFBcnJpdmFsIDw8IGNvbnRpbnVlQWZ0ZXJFcnJv
ckRhdGEgPDwgY2FuRG93bmdyYWRlOworICAgIGVuY29kZXIgPDwgcGF5bG9hZEJhc2U2NCA8PCBz
dGFnZSA8PCBzdWJTdGFnZSA8PCBlcnJvciA8PCBpc1UyZiA8PCBrZWVwQWxpdmUgPDwgZmFzdERh
dGFBcnJpdmFsIDw8IGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPDwgY2FuRG93bmdyYWRlIDw8IGV4
cGVjdENhbmNlbDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTE4NCw2ICsxODUs
OCBAQCBPcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25m
aWd1cmF0aW9uPiBNb2NrV2ViQXV0aGVudGljYQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhbkRvd25ncmFkZSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXhw
ZWN0Q2FuY2VsKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbAppbmRleCBiZGViODYxY2M5ZTZjNGM2
MjdhMDczMmQ3YWU2YTc0NTY3OWE2ZmRkLi4xNjQ3MGY5MjcyOWRiYWEyYTkxNTJhMDU2YjdmOGM1
Zjc0NWNjMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwKQEAgLTkxLDYgKzkxLDcgQEAK
ICAgICBib29sZWFuIGZhc3REYXRhQXJyaXZhbCA9IGZhbHNlOwogICAgIGJvb2xlYW4gY29udGlu
dWVBZnRlckVycm9yRGF0YSA9IGZhbHNlOwogICAgIGJvb2xlYW4gY2FuRG93bmdyYWRlID0gZmFs
c2U7CisgICAgYm9vbGVhbiBleHBlY3RDYW5jZWwgPSBmYWxzZTsKIH07CiAKIFsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCBiYWU3YzMxOWU0NzY0NDVhOWNlMzZlNjJkNzZlZmVkZGY2
NmFiMTI4Li5jMzljMjk3NTU2NzZlMmE2NTA4ZmE3ZmU0MGQ5NjgxMjU0YWY3NmUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDYsNyArMTQ2LDYgQEAgTUVTU0FHRV9SRUNFSVZF
UlMgPSBcCiAgICAgVmlld1VwZGF0ZURpc3BhdGNoZXIgXAogICAgIFZpc2l0ZWRMaW5rU3RvcmUg
XAogICAgIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKLSAgICBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IgXAogICAgIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IFwKICAg
ICBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBcCiAgICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAppbmRleCBiZjk2Yzg2MDhmMGFhYzM2MDZlMDMyOWJjOTY1ZDYwOWNmNjg3MWMy
Li4zMWVlMTE4OTAyNTU3NTc1MTc2MTAwNjgyMzliMTYyYTA2ZmYwN2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
QEAgLTQxMiw2ICs0MTIsNyBAQCBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
QXV0aGVudGljYXRvci5jcHAKIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBI
aWREcml2ZXIuY3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJp
dmVyLmNwcAorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0
b3IuY3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5jcHAK
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNh
dGlvblBhbmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmNwcAppbmRleCAwMGQyZDFhMjRjMjFjMjllMjk3NThmYjJmZmJiNWFhY2Y1
N2YzYmJmLi44N2EyZjA2NTgzZGUyMTA2NmQxNWM1MjUzZWYyMjQxMzA2ZjUyMzRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuY3BwCkBAIC0yOSwyMiArMjksMzEgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
CiAjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIgorI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBBUEkgewordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAotUmVmPFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw+IFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHJwSWQpCitSZWY8V2ViQXV0aGVudGljYXRp
b25QYW5lbD4gV2ViQXV0aGVudGljYXRpb25QYW5lbDo6Y3JlYXRlKGNvbnN0IEF1dGhlbnRpY2F0
b3JNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHJwSWQpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViQXV0aGVudGljYXRpb25QYW5lbChycElkKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViQXV0aGVudGljYXRpb25QYW5lbChtYW5hZ2VyLCBycElkKSk7CiB9CiAK
LVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoY29uc3QgU3Ry
aW5nJiBycElkKQotICAgIDogbV9ycElkKHJwSWQpCitXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsKGNvbnN0IEF1dGhlbnRpY2F0b3JNYW5hZ2VyJiBtYW5hZ2Vy
LCBjb25zdCBTdHJpbmcmIHJwSWQpCisgICAgOiBtX21hbmFnZXIobWFrZVdlYWtQdHIobWFuYWdl
cikpCisgICAgLCBtX3JwSWQocnBJZCkKICAgICAsIG1fY2xpZW50KFdURjo6bWFrZVVuaXF1ZVJl
ZjxXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50PigpKQogewogfQogCiBXZWJBdXRoZW50aWNh
dGlvblBhbmVsOjp+V2ViQXV0aGVudGljYXRpb25QYW5lbCgpID0gZGVmYXVsdDsKIAordm9pZCBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsOjpjYW5jZWwoKSBjb25zdAoreworICAgIGlmIChtX21hbmFn
ZXIpCisgICAgICAgIG1fbWFuYWdlci0+Y2FuY2VsUmVxdWVzdCgqdGhpcyk7Cit9CisKIHZvaWQg
V2ViQXV0aGVudGljYXRpb25QYW5lbDo6c2V0Q2xpZW50KFVuaXF1ZVJlZjxXZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xp
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oCmluZGV4IDc1MDQ4ODZjMDRjMDMzYWEyNmQyNWQ4ZjEzNTAzZDVm
OWY5NzU4MmYuLjc4ZTdlZTk1NjhmYmMxMDIzZjBhZjgxZDFmN2EzYTJlYmNmNmUzNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBh
bmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaApAQCAtMzIsMjMgKzMyLDI5IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBBdXRoZW50aWNhdG9yTWFuYWdlcjsKK30KKwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ7CiAKIGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViQXV0aGVudGljYXRpb25QYW5l
bD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQXV0aGVudGljYXRpb25QYW5lbD4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgcnBJZCk7CisgICAgc3RhdGljIFJlZjxXZWJBdXRoZW50aWNhdGlv
blBhbmVsPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlciYsIGNvbnN0
IFN0cmluZyYgcnBJZCk7CiAgICAgfldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKTsKIAogICAgIFdU
Rjo6U3RyaW5nIHJwSWQoKSBjb25zdCB7IHJldHVybiBtX3JwSWQ7IH0KKyAgICB2b2lkIGNhbmNl
bCgpIGNvbnN0OwogCiAgICAgY29uc3QgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudCYgY2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldENsaWVu
dChVbmlxdWVSZWY8V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudD4mJik7CiAKIHByaXZhdGU6
Ci0gICAgV2ViQXV0aGVudGljYXRpb25QYW5lbChjb25zdCBTdHJpbmcmIHJwSWQpOworICAgIFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwoY29uc3QgV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlciYs
IGNvbnN0IFN0cmluZyYgcnBJZCk7CiAKKyAgICBXZWFrUHRyPFdlYktpdDo6QXV0aGVudGljYXRv
ck1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBXVEY6OlN0cmluZyBtX3JwSWQ7CiAgICAgVW5pcXVl
UmVmPFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ+IG1fY2xpZW50OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0KaW5kZXggNjI5MTMyYWI3YTllZGJjZDg1MDQxODJiYmI0MTRhYzdm
NTU1MmFlMi4uMTcyOGU2ZjUzOGU0NTcxODk3YWE0YmUwYWVmZmY4MmQwNmNhNWFiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTY3LDYgKzY3LDkgQEAgLSAodm9pZClzZXREZWxl
Z2F0ZTooaWQ8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPilkZWxlZ2F0ZQogCiAt
ICh2b2lkKWNhbmNlbAogeworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgX3BhbmVsLT5jYW5j
ZWwoKTsKKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCAxYzQxYTNjMjg1ZWYwNzI0NWVlMWNlNTI5YTU2NTY4
MWYyNDgzNTUwLi5kMDMyODgwOTk1NzIwNzM4YzM5YzBmNGIyNzZhNjc0MWZhOGEyNGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0xNjQsNiArMTY0LDMwIEBAIHZv
aWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25S
ZXF1ZXN0RGF0YSYmIGRhdGEsIENhCiAgICAgcnVuUGFuZWwoKTsKIH0KIAordm9pZCBBdXRoZW50
aWNhdG9yTWFuYWdlcjo6Y2FuY2VsUmVxdWVzdChjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciYgcGFnZUlELCBjb25zdCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+JiBmcmFtZUlEKQorewor
ICAgIGlmICghbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBBU1NFUlQobV9wZW5kaW5nUmVxdWVzdERhdGEuZnJhbWVJRCk7CisgICAgaWYgKG1fcGVuZGlu
Z1JlcXVlc3REYXRhLmZyYW1lSUQtPnBhZ2VJRCAhPSBwYWdlSUQpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAoZnJhbWVJRCAmJiBmcmFtZUlEICE9IG1fcGVuZGluZ1JlcXVlc3REYXRhLmZyYW1l
SUQtPmZyYW1lSUQpCisgICAgICAgIHJldHVybjsKKyAgICBpbnZva2VQZW5kaW5nQ29tcGxldGlv
bkhhbmRsZXIoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0aW1l
ZCBvdXQuIl9zIH0pOworICAgIGNsZWFyU3RhdGUoKTsKKyAgICBtX3JlcXVlc3RUaW1lT3V0VGlt
ZXIuc3RvcCgpOworfQorCisvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgcGFydCBvZiBTdGVw
IDIwLiBvZiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNyZWRlbnRpYWwK
Ky8vIGFuZCBwYXJ0IG9mIFN0ZXAgMTguIG9mIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRo
bi8jZ2V0QXNzZXJ0aW9uIGFzIG9mIDQgTWFyY2ggMjAxOToKKy8vICJJZiB0aGUgdXNlciBleGVy
Y2lzZXMgYSB1c2VyIGFnZW50IHVzZXItaW50ZXJmYWNlIG9wdGlvbiB0byBjYW5jZWwgdGhlIHBy
b2Nlc3MsIi4KK3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3Qg
QVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkKK3sKKyAgICBpZiAoIW1fcGVuZGlu
Z0NvbXBsZXRpb25IYW5kbGVyIHx8IG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsLmdldCgpICE9
ICZwYW5lbCkKKyAgICAgICAgcmV0dXJuOworICAgIHJlc2V0U3RhdGUoKTsKK30KKwogdm9pZCBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZUFzeW5jKCkKIHsKICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CkBAIC0xNzcs
OSArMjAxLDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZSgpCiB7CiAg
ICAgaWYgKG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9wZW5kaW5nUmVxdWVzdERhdGEgPSB7IH07Ci0gICAgbV9zZXJ2aWNlcy5jbGVhcigpOwotICAg
IG1fYXV0aGVudGljYXRvcnMuY2xlYXIoKTsKKyAgICByZXNldFN0YXRlKCk7CiB9CiAKIHZvaWQg
QXV0aGVudGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JBZGRlZChSZWY8QXV0aGVudGljYXRv
cj4mJiBhdXRoZW50aWNhdG9yKQpAQCAtMjY0LDcgKzI4Niw3IEBAIHZvaWQgQXV0aGVudGljYXRv
ck1hbmFnZXI6OnJ1blBhbmVsKCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsID0gQVBJOjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsOjpjcmVhdGUoZ2V0UnBJZChtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcHRpb25zKSk7CisgICAg
bV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWwgPSBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6
OmNyZWF0ZSgqdGhpcywgZ2V0UnBJZChtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcHRpb25zKSk7CiAg
ICAgYXV0byYgcGFuZWwgPSAqbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWw7CiAgICAgcGFnZS0+
dWlDbGllbnQoKS5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5lbCwgW3dlYWtQ
YW5lbCA9IG1ha2VXZWFrUHRyKHBhbmVsKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
IHRoaXNdIChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkgewogICAgICAgICAv
LyBUaGUgcGFuZWwgYWRkcmVzcyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgY3VycmVudCBw
ZW5kaW5nIHJlcXVlc3QgaXMgc3RpbGwgdGhlIHNhbWUuCkBAIC0zMDUsNiArMzI3LDE0IEBAIHZv
aWQgQXV0aGVudGljYXRvck1hbmFnZXI6Omludm9rZVBlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihS
ZXNwb25kJiYgcmVzcG9uZCkKICAgICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3BvbmQpKTsKIH0KIAorCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXNldFN0YXRl
KCkKK3sKKyAgICBtX2F1dGhlbnRpY2F0b3JzLmNsZWFyKCk7CisgICAgbV9zZXJ2aWNlcy5jbGVh
cigpOworICAgIG1fcGVuZGluZ1JlcXVlc3REYXRhID0geyB9OworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuaAppbmRleCBkMzc2NmFkMTQ3OTczMTQxNWVkZTQ4MmY5ZTljMmZlMDA4ZDNh
MjUyLi41MDI2MjY3OGEwYTg1YTRkYmEyNzA5OWZlMTU4M2E2MTYzYTllYjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9y
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBBUEkgewor
Y2xhc3MgV2ViQXV0aGVudGljYXRpb25QYW5lbDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIDogcHVibGljIEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlOjpPYnNlcnZlciwgcHVibGljIEF1dGhlbnRpY2F0b3I6Ok9ic2VydmVyIHsKQEAg
LTU1LDYgKzU5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
KCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9u
UmVxdWVzdERhdGEmJiwgQ2FsbGJhY2smJik7CisgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiYpOyAvLyBDYWxsZWQgZnJvbSBXZWJQYWdlUHJveHkvV2ViUHJvY2Vzc1Byb3h5
LgorICAgIHZvaWQgY2FuY2VsUmVxdWVzdChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwmKTsgLy8gQ2FsbGVkIGZyb20gcGFuZWwgY2xpZW50cy4KIAogICAgIHZpcnR1YWwgYm9vbCBp
c01vY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCkBAIC04MiwxMCArODgsMTEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHRpbWVPdXRUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBydW5QYW5lbCgp
OwogICAgIHZvaWQgc3RhcnRSZXF1ZXN0KCk7CisgICAgdm9pZCByZXNldFN0YXRlKCk7CiAKICAg
ICAvLyBSZXF1ZXN0OiBXZSBvbmx5IGFsbG93IG9uZSByZXF1ZXN0IHBlciB0aW1lLiBBIG5ldyBy
ZXF1ZXN0IHdpbGwgY2FuY2VsIGFueSBwZW5kaW5nIG9uZXMuCiAgICAgV2ViQXV0aGVudGljYXRp
b25SZXF1ZXN0RGF0YSBtX3BlbmRpbmdSZXF1ZXN0RGF0YTsKLSAgICBDYWxsYmFjayBtX3BlbmRp
bmdDb21wbGV0aW9uSGFuZGxlcjsgLy8gU2hvdWxkIGJlIGludm9rZWQgZGlyZWN0bHksIHVzZSBp
bnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIuCisgICAgQ2FsbGJhY2sgbV9wZW5kaW5nQ29t
cGxldGlvbkhhbmRsZXI7IC8vIFNob3VsZCBub3QgYmUgaW52b2tlZCBkaXJlY3RseSwgdXNlIGlu
dm9rZVBlbmRpbmdDb21wbGV0aW9uSGFuZGxlci4KICAgICBSdW5Mb29wOjpUaW1lcjxBdXRoZW50
aWNhdG9yTWFuYWdlcj4gbV9yZXF1ZXN0VGltZU91dFRpbWVyOwogCiAgICAgVmVjdG9yPFVuaXF1
ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4+IG1fc2VydmljZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9IaWRDb25uZWN0aW9uLmgKaW5kZXggNGVhYjVkZDc3MzQxMjExMjk5YTcyOTM4OWYwNWU2
ZWY4OTllMThlNy4uZTE4N2EyNGZkNmQyMmEyNDlkZWQ3MDNiYjM2YjlhZTQ0MWEyZTk1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
SGlkQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24uaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gT3ZlcnJpZGVkIGJ5IE1vY2tIaWRDb25uZWN0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplKCk7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgpOworICAgIHZpcnR1YWwg
RGF0YVNlbnQgc2VuZFN5bmMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKTsKICAgICAvLyBD
YWxsZXIgc2hvdWxkIHNlbmQgZGF0YSBhZ2FpbiBhZnRlciBjYWxsYmFjayBpcyBpbnZva2VkIHRv
IGNvbnRyb2wgZmxvdy4KICAgICB2aXJ0dWFsIHZvaWQgc2VuZChWZWN0b3I8dWludDhfdD4mJiBk
YXRhLCBEYXRhU2VudENhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVnaXN0ZXJEYXRhUmVjZWl2ZWRD
YWxsYmFjayhEYXRhUmVjZWl2ZWRDYWxsYmFjayYmKTsKQEAgLTY0LDggKzY1LDggQEAgcHVibGlj
OgogICAgIHZvaWQgcmVjZWl2ZVJlcG9ydChWZWN0b3I8dWludDhfdD4mJik7CiAKIHByb3RlY3Rl
ZDoKLSAgICBib29sIG1faW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV90ZXJtaW5h
dGVkIHsgZmFsc2UgfTsKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5pdGlhbGl6ZWQ7IH0KKyAgICB2b2lkIHNldElzSW5pdGlhbGl6ZWQoYm9vbCBpc0luaXRp
YWxpemVkKSB7IG1faXNJbml0aWFsaXplZCA9IGlzSW5pdGlhbGl6ZWQ7IH0KIAogcHJpdmF0ZToK
ICAgICB2b2lkIGNvbnN1bWVSZXBvcnRzKCk7CkBAIC03OCw2ICs3OSw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gQ291bGQgcXVldWUgZGF0YSByZXF1ZXN0ZWQgYnkgb3RoZXIgYXBwbGljYXRpb25zLgog
ICAgIERlcXVlPFZlY3Rvcjx1aW50OF90Pj4gbV9pbnB1dFJlcG9ydHM7CiAgICAgRGF0YVJlY2Vp
dmVkQ2FsbGJhY2sgbV9pbnB1dENhbGxiYWNrOworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENv
bm5lY3Rpb24ubW0KaW5kZXggZjA3N2FlOTgxMzZiOTQzOTU2Y2RmYTY0NTU0NDc4MzIwZGE3NDgy
NS4uZjJmMTkzYzc1MDEyNGI4Y2U2MzA1YzI3NTBhNjJhMWYzNGZhZDliNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9IaWRDb25uZWN0aW9uLm1tCkBAIC02Myw3ICs2Myw3IEBAIEhpZENvbm5lY3Rpb246Okhp
ZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogCiBIaWRDb25uZWN0aW9uOjp+SGlk
Q29ubmVjdGlvbigpCiB7Ci0gICAgQVNTRVJUKG1fdGVybWluYXRlZCk7CisgICAgQVNTRVJUKCFt
X2lzSW5pdGlhbGl6ZWQpOwogfQogCiB2b2lkIEhpZENvbm5lY3Rpb246OmluaXRpYWxpemUoKQpA
QCAtNzIsNyArNzIsNyBAQCB2b2lkIEhpZENvbm5lY3Rpb246OmluaXRpYWxpemUoKQogICAgIElP
SElERGV2aWNlU2NoZWR1bGVXaXRoUnVuTG9vcChtX2RldmljZS5nZXQoKSwgQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgIG1faW5wdXRCdWZmZXIucmVz
aXplKGtIaWRNYXhQYWNrZXRTaXplKTsKICAgICBJT0hJRERldmljZVJlZ2lzdGVySW5wdXRSZXBv
cnRDYWxsYmFjayhtX2RldmljZS5nZXQoKSwgbV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRC
dWZmZXIuc2l6ZSgpLCAmcmVwb3J0UmVjZWl2ZWQsIHRoaXMpOwotICAgIG1faW5pdGlhbGl6ZWQg
PSB0cnVlOworICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7CiB9CiAKIHZvaWQgSGlkQ29ubmVj
dGlvbjo6dGVybWluYXRlKCkKQEAgLTgwLDEyICs4MCwyMyBAQCB2b2lkIEhpZENvbm5lY3Rpb246
OnRlcm1pbmF0ZSgpCiAgICAgSU9ISUREZXZpY2VSZWdpc3RlcklucHV0UmVwb3J0Q2FsbGJhY2so
bV9kZXZpY2UuZ2V0KCksIG1faW5wdXRCdWZmZXIuZGF0YSgpLCBtX2lucHV0QnVmZmVyLnNpemUo
KSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgSU9ISUREZXZpY2VVbnNjaGVkdWxlRnJvbVJ1bkxv
b3AobV9kZXZpY2UuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1
bHRNb2RlKTsKICAgICBJT0hJRERldmljZUNsb3NlKG1fZGV2aWNlLmdldCgpLCBrSU9ISURPcHRp
b25zVHlwZU5vbmUpOwotICAgIG1fdGVybWluYXRlZCA9IHRydWU7CisgICAgbV9pc0luaXRpYWxp
emVkID0gZmFsc2U7Cit9CisKK2F1dG8gSGlkQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBEYXRhU2VudAoreworICAgIEFTU0VSVChtX2lzSW5pdGlh
bGl6ZWQpOworICAgIGF1dG8gc3RhdHVzID0gSU9ISUREZXZpY2VTZXRSZXBvcnQobV9kZXZpY2Uu
Z2V0KCksIGtJT0hJRFJlcG9ydFR5cGVPdXRwdXQsIGtIaWRSZXBvcnRJZCwgZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3Qgc2VuZCByZXBvcnQgdG8gdGhlIGF1dGhlbnRpY2F0b3I6ICVkIiwgc3RhdHVzKTsKKyAg
ICAgICAgcmV0dXJuIERhdGFTZW50OjpObzsKKyAgICB9CisgICAgcmV0dXJuIERhdGFTZW50OjpZ
ZXM7CiB9CiAKIHZvaWQgSGlkQ29ubmVjdGlvbjo6c2VuZChWZWN0b3I8dWludDhfdD4mJiBkYXRh
LCBEYXRhU2VudENhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgQVNTRVJUKG1faW5pdGlhbGl6
ZWQpOworICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOwogICAgIGF1dG8gdGFzayA9IG1ha2VC
bG9ja1B0cihbZGV2aWNlID0gbV9kZXZpY2UsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtMTA0LDcgKzExNSw3IEBAIHZvaWQgSGlkQ29ubmVjdGlvbjo6
c2VuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYgY2FsbGJhY2sp
CiAKIHZvaWQgSGlkQ29ubmVjdGlvbjo6cmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFjayhEYXRh
UmVjZWl2ZWRDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIEFTU0VSVChtX2luaXRpYWxpemVk
KTsKKyAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkKTsKICAgICBBU1NFUlQoIW1faW5wdXRDYWxs
YmFjayk7CiAgICAgbV9pbnB1dENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgY29u
c3VtZVJlcG9ydHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5k
ZXggNjU4NDY2ZGU3YjEzMWViZTU0ZTY3MWY2NzA0M2M3ZmZlNmM1MzY4Yi4uOWU1ZDhmYTcwNjY4
MGRmNmUxNGY5NjNmMjNiZTllODg1ZTc0NGY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
Q29ubmVjdGlvbi5jcHAKQEAgLTYwLDE3ICs2MCwyOSBAQCBNb2NrSGlkQ29ubmVjdGlvbjo6TW9j
a0hpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYgZGV2aWNlLCBjb25zdCBNb2NrV2ViQXV0aGVu
dAogCiB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjppbml0aWFsaXplKCkKIHsKLSAgICBtX2luaXRp
YWxpemVkID0gdHJ1ZTsKKyAgICBzZXRJc0luaXRpYWxpemVkKHRydWUpOwogfQogCiB2b2lkIE1v
Y2tIaWRDb25uZWN0aW9uOjp0ZXJtaW5hdGUoKQogewotICAgIG1fdGVybWluYXRlZCA9IHRydWU7
CisgICAgc2V0SXNJbml0aWFsaXplZChmYWxzZSk7Cit9CisKK2F1dG8gTW9ja0hpZENvbm5lY3Rp
b246OnNlbmRTeW5jKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gRGF0YVNlbnQKK3sK
KyAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICBpZiAobV9jb25maWd1cmF0aW9uLmhp
ZC0+ZXhwZWN0Q2FuY2VsKSB7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdl
OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoZGF0YSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
bWVzc2FnZSwgbWVzc2FnZSk7CisgICAgICAgIEFTU0VSVChtZXNzYWdlLT5jbWQoKSA9PSBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a0NhbmNlbCk7CisgICAgICAgIExPR19FUlJPUigiUmVxdWVzdCBj
YW5jZWxsZWQuIik7CisgICAgfQorICAgIHJldHVybiBEYXRhU2VudDo6WWVzOwogfQogCiB2b2lk
IE1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7CisgICAg
QVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgYXV0byB0YXNrID0gbWFrZUJsb2NrUHRyKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtU
aGlzLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKQEAgLTIyOCw2ICsyNDAsOCBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpm
ZWVkUmVwb3J0cygpCiAgICAgfQogCiAgICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6SGlkU3RhZ2U6
OlJlcXVlc3QgJiYgbV9zdWJTdGFnZSA9PSBNb2NrOjpIaWRTdWJTdGFnZTo6TXNnKSB7CisgICAg
ICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaGlkLT5leHBlY3RDYW5jZWwpCisgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaGlkLT5rZWVwQWxpdmUpIHsKICAg
ICAgICAgICAgIG1fY29uZmlndXJhdGlvbi5oaWQtPmtlZXBBbGl2ZSA9IGZhbHNlOwogICAgICAg
ICAgICAgRmlkb0hpZEluaXRQYWNrZXQgaW5pdFBhY2tldChtX2N1cnJlbnRDaGFubmVsLCBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a0tlZXBBbGl2ZSwgeyBDdGFwS2VlcEFsaXZlU3RhdHVzUHJvY2Vz
c2luZyB9LCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaAppbmRleCAwZGIw
MGU5ODU0MzFjY2I4ZjZmODM0NmJmMzhiNTkwYjUzOTNiMDAzLi44OGIyODRmNTRhYjBkOGYzZmMz
MTg4OWYwMzljZjk5M2IzNjA3NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlv
bi5oCkBAIC00OCw5ICs0OCwxMSBAQCBwdWJsaWM6CiAgICAgTW9ja0hpZENvbm5lY3Rpb24oSU9I
SUREZXZpY2VSZWYsIGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24mKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSwgRGF0YVNlbnRDYWxsYmFjayYmKSBmaW5hbDsKKyAgICAvLyBIaWRDb25uZWN0aW9uCiAgICAg
dm9pZCBpbml0aWFsaXplKCkgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGUoKSBmaW5hbDsKKyAg
ICBEYXRhU2VudCBzZW5kU3luYyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgc2VuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFja0ludGVybmFsKCkg
ZmluYWw7CiAKICAgICB2b2lkIGFzc2VtYmxlUmVxdWVzdChWZWN0b3I8dWludDhfdD4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKaW5kZXggNGJiNTQ4
NWU1ZWFhOGMwMDVmOWZjMGQzMzk2Yjc1NzE0YTQwYzQyYy4uOTc4NjA1NGUwZjAwOTc0ODdkOWNk
YzY0OGQ0ZjgyMDIzMjdhZTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
UmVxdWVzdERhdGEuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5oIgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uUGFuZWxGbGFncy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgpAQCAtNDUsNiArNDYsNyBAQCBzdHJ1Y3QgV2ViQXV0aGVudGljYXRpb25S
ZXF1ZXN0RGF0YSB7CiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IHBhZ2U7CiAgICAgV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdCBwYW5lbFJlc3VsdCB7IFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlIH07CiAgICAgUmVmUHRyPEFQSTo6V2ViQXV0aGVudGljYXRp
b25QYW5lbD4gcGFuZWw7CisgICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpHbG9iYWxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA0
ZmNkOGNkOGRiYzQ4ODYyNTJmNTk1YmRmZmQ1MWNkZTNkYjc1Nzc5Li42ZGY4Y2E3NGYzY2QwMjI2
NDdiYWEyOGIwZjIyYmQyYjk3ZTZiMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2NhbFNlcnZpY2UuaCIKICNp
bmNsdWRlICJXZWJBdXRoZW50aWNhdGlvblBhbmVsRmxhZ3MuaCIKLSNpbmNsdWRlICJXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTU0LDQwICs1MywzMiBAQCBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6fldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5KCkKICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKHVpbnQ2NF90IG1lc3Nh
Z2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKQordm9pZCBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5k
bGVyJiYgaGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KG1lc3NhZ2VJZCwgeyBoYXNoLCBv
cHRpb25zLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyIH0pOworICAgIGhhbmRsZVJlcXVlc3QoeyBo
YXNoLCBvcHRpb25zLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZp
ZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9IH0sIFdURk1vdmUoaGFu
ZGxlcikpOwogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpnZXRB
c3NlcnRpb24odWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gs
IGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9u
cykKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmdldEFzc2VydGlvbihG
cmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFJl
cXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgaGFuZGxlUmVxdWVzdCht
ZXNzYWdlSWQsIHsgaGFzaCwgb3B0aW9ucywgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkpLCBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciB9KTsKKyAg
ICBoYW5kbGVSZXF1ZXN0KHsgaGFzaCwgb3B0aW9ucywgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJv
eHkpLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwg
R2xvYmFsRnJhbWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1l
SWQgfSB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdCh1aW50NjRfdCBtZXNzYWdlSWQsIFdlYkF1dGhl
bnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYg
ZGF0YSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBhdXRvIGNh
bGxiYWNrID0gW21lc3NhZ2VJZCwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChWYXJp
YW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiYmIHJlc3VsdCkgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbaGFuZGxlciA9IFdURk1vdmUo
aGFuZGxlcildIChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KICAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSkgewotICAgICAgICAgICAgd2Vha1RoaXMt
PnJlcXVlc3RSZXBseShtZXNzYWdlSWQsIGRhdGEsIHsgfSk7CisgICAgICAgICAgICBoYW5kbGVy
KGRhdGEsIHsgfSk7CiAgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YSYgZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+cmVxdWVzdFJlcGx5KG1lc3Nh
Z2VJZCwgeyB9LCBleGNlcHRpb24pOworICAgICAgICAgICAgaGFuZGxlcih7IH0sIGV4Y2VwdGlv
bik7CiAgICAgICAgIH0pOwogICAgIH07CiAgICAgbV93ZWJQYWdlUHJveHkud2Vic2l0ZURhdGFT
dG9yZSgpLmF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkuaGFuZGxlUmVxdWVzdChXVEZNb3ZlKGRhdGEp
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHk6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1
aW50NjRfdCBtZXNzYWdlSWQpCi17Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGVSZXBseShtZXNzYWdlSWQsIExvY2FsU2VydmljZTo6aXNBdmFpbGFi
bGUoKSkpOwotfQotCi12b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpyZXF1
ZXN0UmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9u
KQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBo
YW5kbGVyKQogewotICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6UmVxdWVzdFJlcGx5KG1lc3NhZ2VJZCwgZGF0YSwgZXhjZXB0aW9u
KSk7CisgICAgaGFuZGxlcihMb2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxlKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5oCmluZGV4IGVmNzMzNDE2MjhkMzBiMWI0YzdjOWU2MDljMzE2YzI3ZjVm
OTYxNzAuLmExYjI1N2UxMjAyZTRlYWMwOTcxZjhjNTk4N2YwZDdhNjA5YjQ2MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaApAQCAtMjgs
OSArMjgsOSBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEV4Y2VwdGlvbkRh
dGE7CkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogc3RydWN0IFdlYkF1
dGhlbnRpY2F0aW9uUmVxdWVzdERhdGE7CiAKLWNsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PiB7CitjbGFzcyBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KTsKIHB1YmxpYzoKQEAgLTUzLDE4ICs1
MywxOCBAQCBwdWJsaWM6CiAgICAgfldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KCk7
CiAKIHByaXZhdGU6CisgICAgdXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT47CisgICAgdXNpbmcgUXVlcnlDb21wbGV0
aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OworCiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIFJlY2VpdmVycy4KLSAg
ICB2b2lkIG1ha2VDcmVkZW50aWFsKHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zJik7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24odWludDY0X3QgbWVzc2FnZUlkLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyYpOwotICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRo
ZW50aWNhdG9yQXZhaWxhYmxlKHVpbnQ2NF90IG1lc3NhZ2VJZCk7Ci0KLSAgICAvLyBTZW5kZXJz
LgotICAgIHZvaWQgcmVxdWVzdFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRh
Jik7CisgICAgdm9pZCBtYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2
b2lkIGdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgaXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRs
ZXImJik7CiAKLSAgICB2b2lkIGhhbmRsZVJlcXVlc3QodWludDY0X3QgbWVzc2FnZUlkLCBXZWJB
dXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJB
dXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsK
IAogICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAxMTdjZDg4MDhmMGRlNTc1NjJjMWQ4MWExMTgyYjU3ZDU2NTAwMmI4Li5jYWFmZmE3
YzFiM2JiYjRkNjAzZDQ1ZGNjNWE0NTM1MzgzMDAwMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMjYsOSArMjYsOSBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eSB7CiAKLSAgICBNYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBtZXNzYWdlSWQsIFZlY3Rv
cjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyBvcHRpb25zKTsKLSAgICBHZXRBc3NlcnRpb24odWludDY0X3QgbWVzc2FnZUlk
LCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKTsKLSAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGUodWludDY0X3QgbWVzc2FnZUlkKTsKKyAgICBNYWtlQ3JlZGVu
dGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgVmVjdG9yPHVpbnQ4X3Q+IGhh
c2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9w
dGlvbnMpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEgZGF0YSwg
c3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIEdldEFz
c2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgVmVjdG9yPHVpbnQ4X3Q+
IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMg
b3B0aW9ucykgLT4gKHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSBkYXRh
LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgSXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkgLT4gKGJvb2wgcmVz
dWx0KSBBc3luYwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRv
ci5jcHAKaW5kZXggOGVkYTExYjkxYTljNDlmNjVhODc0MzUwMzRlNGM4ZDJlNWFjNmM4Ny4uYWNl
NGMwYzczZjA0ZmMzMWY3MzE0OTQ3YjY1ZWJmYTUyZDY1NzZkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwQXV0aGVudGljYXRvci5jcHAKQEAgLTQyLDExICs0Miw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIGZpZG87CiAKIEN0YXBBdXRoZW50aWNhdG9yOjpD
dGFwQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4mJiBkcml2ZXIsIEF1
dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmJiBpbmZvKQotICAgIDogbV9kcml2ZXIoV1RGTW92
ZShkcml2ZXIpKQorICAgIDogRmlkb0F1dGhlbnRpY2F0b3IoV1RGTW92ZShkcml2ZXIpKQogICAg
ICwgbV9pbmZvKFdURk1vdmUoaW5mbykpCiB7Ci0gICAgLy8gRklYTUUoMTkxNTIwKTogV2UgbmVl
ZCBhIHdheSB0byBjb252ZXJ0IHN0ZDo6dW5pcXVlX3B0ciB0byBVbmlxdWVSZWYuCi0gICAgQVNT
RVJUKG1fZHJpdmVyKTsKIH0KIAogdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRp
YWwoKQpAQCAtNTUsNyArNTMsNyBAQCB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVu
dGlhbCgpCiAgICAgaWYgKHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24o
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gY2JvckNtZCA9IGVuY29kZU1ha2VDcmVkZW5p
dGFsUmVxdWVzdEFzQ0JPUihyZXF1ZXN0RGF0YSgpLmhhc2gsIFdURjo6Z2V0PFB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyksIG1faW5mby5v
cHRpb25zKCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSgpKTsKLSAgICBtX2RyaXZlci0+
dHJhbnNhY3QoV1RGTW92ZShjYm9yQ21kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
XShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CisgICAgZHJpdmVyKCkudHJhbnNhY3QoV1RGTW92
ZShjYm9yQ21kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShWZWN0b3I8dWludDhf
dD4mJiBkYXRhKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04MSw3ICs3OSw3IEBAIHZv
aWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX2lz
RG93bmdyYWRlZCk7CiAgICAgYXV0byBjYm9yQ21kID0gZW5jb2RlR2V0QXNzZXJ0aW9uUmVxdWVz
dEFzQ0JPUihyZXF1ZXN0RGF0YSgpLmhhc2gsIFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKSwgbV9pbmZvLm9wdGlvbnMoKS51
c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KCkpOwotICAgIG1fZHJpdmVyLT50cmFuc2FjdChX
VEZNb3ZlKGNib3JDbWQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpIHsKKyAgICBkcml2ZXIoKS50cmFuc2FjdChXVEZNb3ZlKGNib3JDbWQp
LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
IHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExMCw4ICsxMDgsOCBAQCBib29sIEN0YXBB
dXRoZW50aWNhdG9yOjp0cnlEb3duZ3JhZGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBtX2lzRG93bmdyYWRlZCA9IHRydWU7Ci0gICAgbV9kcml2ZXItPnNldFByb3RvY29sKFByb3Rv
Y29sVmVyc2lvbjo6a1UyZik7Ci0gICAgb2JzZXJ2ZXIoKS0+ZG93bmdyYWRlKHRoaXMsIFUyZkF1
dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKG1fZHJpdmVyKSkpOworICAgIGRyaXZlcigpLnNl
dFByb3RvY29sKFByb3RvY29sVmVyc2lvbjo6a1UyZik7CisgICAgb2JzZXJ2ZXIoKS0+ZG93bmdy
YWRlKHRoaXMsIFUyZkF1dGhlbnRpY2F0b3I6OmNyZWF0ZShyZWxlYXNlRHJpdmVyKCkpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCmlu
ZGV4IDgwNTQxOTgxNGE2YTIyNzUzMjAzZjgzYmM2NjJmNjdlNzdlNzkyZjEuLmVlNTQzZDg1Zjk0
ZDA4ZmEwYzZiN2EwNDljZGZlZGY4ZWY0MmZjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRo
ZW50aWNhdG9yLmgKQEAgLTI3LDE0ICsyNywxNCBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
IAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3IuaCIKKyNpbmNsdWRlICJGaWRvQXV0aGVudGljYXRv
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQ3RhcERyaXZlcjsKIAotY2xhc3MgQ3RhcEF1
dGhlbnRpY2F0b3IgZmluYWwgOiBwdWJsaWMgQXV0aGVudGljYXRvciB7CitjbGFzcyBDdGFwQXV0
aGVudGljYXRvciBmaW5hbCA6IHB1YmxpYyBGaWRvQXV0aGVudGljYXRvciB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxDdGFwQXV0aGVudGljYXRvcj4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxD
dGFwRHJpdmVyPiYmIGRyaXZlciwgZmlkbzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYm
IGluZm8pCiAgICAgewpAQCAtNTIsNyArNTIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgdHJ5RG93
bmdyYWRlKCk7CiAgICAgYm9vbCBwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5z
aW9uKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gbV9kcml2ZXI7CiAgICAg
Zmlkbzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSBtX2luZm87CiAgICAgYm9vbCBtX2lz
RG93bmdyYWRlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaAppbmRleCAwNzli
ZWEzODgyZDZkNjMwZDg2N2E1YmFiMWU4M2ZjNmJjNzdkOWQ2Li43YTQyMGZlMWNlYzIxOGI5MDY2
ZTYzMDM2ZWZiYmM2M2E0MTdiMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaApAQCAtNDEsMTQg
KzQxLDE1IEBAIGNsYXNzIEN0YXBEcml2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q3RhcERy
aXZlcj4gewogcHVibGljOgogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFZlY3Rvcjx1aW50OF90PiYmKT47CiAKLSAgICBDdGFwRHJpdmVyKCkgPSBkZWZhdWx0Owog
ICAgIHZpcnR1YWwgfkN0YXBEcml2ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHNldFByb3Rv
Y29sKGZpZG86OlByb3RvY29sVmVyc2lvbiBwcm90b2NvbCkgeyBtX3Byb3RvY29sID0gcHJvdG9j
b2w7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRh
LCBSZXNwb25zZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgeyB9
OwogCiBwcm90ZWN0ZWQ6CisgICAgQ3RhcERyaXZlcigpID0gZGVmYXVsdDsKICAgICBmaWRvOjpQ
cm90b2NvbFZlcnNpb24gcHJvdG9jb2woKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sOyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcAppbmRleCA1MzI2NTgxOTI1
OWIzYzQwYzVhZTJhMTRiZTQwMzc3MzY5YmM2ZmQzLi4wNmYyMzE1NTI2YWYxZjIzODRiNTUwYWRl
ZmE5ZjE5ZTEwZWVkNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKQEAgLTY4
LDkgKzY4LDExIEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjp0cmFuc2FjdChmaWRvOjpG
aWRvSGlkTWVzc2FnZSYmIHJlcXVlc3RNZXNzYWdlLCBNZXNzCiAKIHZvaWQgQ3RhcEhpZERyaXZl
cjo6V29ya2VyOjp3cml0ZShIaWRDb25uZWN0aW9uOjpEYXRhU2VudCBzZW50KQogewotICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpXcml0ZSk7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6
OldyaXRlKQorICAgICAgICByZXR1cm47CiAgICAgaWYgKHNlbnQgIT0gSGlkQ29ubmVjdGlvbjo6
RGF0YVNlbnQ6OlllcykgewotICAgICAgICByZXR1cm5NZXNzYWdlKFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm5N
ZXNzYWdlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk1LDcgKzk3LDggQEAgdm9p
ZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OndyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFTZW50IHNl
bnQpCiAKIHZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZWFkKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSkKIHsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZCk7CisgICAg
aWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJlYWQpCisgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1f
cmVzcG9uc2VNZXNzYWdlKSB7CiAgICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gRmlkb0hpZE1l
c3NhZ2U6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShkYXRhKTsKICAgICAgICAgLy8gVGhlIGZp
cnN0IGZldyByZXBvcnRzIGNvdWxkIGJlIGZvciBvdGhlciBhcHBsaWNhdGlvbnMsIGFuZCB0aGVy
ZWZvcmUgaWdub3JlIHRob3NlLgpAQCAtMTA3LDcgKzExMCw4IEBAIHZvaWQgQ3RhcEhpZERyaXZl
cjo6V29ya2VyOjpyZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VNZXNzYWdlLT5hZGRDb250aW51YXRpb25QYWNrZXQo
ZGF0YSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgcGFyc2UgYSBoaWQgY29u
dGludWF0aW9uIHBhY2tldC4iKTsKLSAgICAgICAgICAgIHJldHVybk1lc3NhZ2UoV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuTWVzc2FnZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTE5LDE2ICsxMjMsMzcgQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6
OnJlYWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogICAgICAgICAgICAgbV9yZXNwb25z
ZU1lc3NhZ2UucmVzZXQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICByZXR1cm5NZXNzYWdlKFdURk1vdmUobV9yZXNwb25zZU1lc3NhZ2UpKTsKKyAgICAgICAgcmV0
dXJuTWVzc2FnZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQogCi12b2lkIEN0YXBIaWRE
cml2ZXI6Oldvcmtlcjo6cmV0dXJuTWVzc2FnZShPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2Fn
ZT4mJiBtZXNzYWdlKQordm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OnJldHVybk1lc3NhZ2Uo
KQoreworICAgIC8vIFJlc2V0IHN0YXRlIGJlZm9yZSBjYWxsaW5nIHRoZSByZXNwb25zZSBjYWxs
YmFjayB0byBhdm9pZCBiZWluZyBkZWxldGVkLgorICAgIGF1dG8gY2FsbGJhY2sgPSBXVEZNb3Zl
KG1fY2FsbGJhY2spOworICAgIGF1dG8gbWVzc2FnZSA9IFdURk1vdmUobV9yZXNwb25zZU1lc3Nh
Z2UpOworICAgIHJlc2V0KCk7CisgICAgY2FsbGJhY2soV1RGTW92ZShtZXNzYWdlKSk7Cit9CisK
K3ZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZXNldCgpCiB7Ci0gICAgbV9zdGF0ZSA9IFN0
YXRlOjpJZGxlOwogICAgIG1fY29ubmVjdGlvbi0+dW5yZWdpc3RlckRhdGFSZWNlaXZlZENhbGxi
YWNrKCk7Ci0gICAgbV9jYWxsYmFjayhXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICBtX2NhbGxiYWNr
ID0gbnVsbHB0cjsKKyAgICBtX3Jlc3BvbnNlTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X3JlcXVlc3RNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRs
ZTsKK30KKworLy8gVGhpcyBpbXBsZW1lbnRzIENUQVBISURfQ0FOQ0VMIHdoaWNoIHZpb2xhdGVz
IHRoZSB0cmFuc2FjdGlvbiBzZW1hbnRpY3M6CisvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcv
c3BlY3MvZmlkby12Mi4wLXBzLTIwMTkwMTMwL2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3It
cHJvdG9jb2wtdjIuMC1wcy0yMDE5MDEzMC5odG1sI3VzYi1oaWQtY2FuY2VsCit2b2lkIEN0YXBI
aWREcml2ZXI6Oldvcmtlcjo6Y2FuY2VsKGZpZG86OkZpZG9IaWRNZXNzYWdlJiYgcmVxdWVzdE1l
c3NhZ2UpCit7CisgICAgcmVzZXQoKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGVDYWNo
ZSgpOworICAgIEFTU0VSVChyZXF1ZXN0TWVzc2FnZS5udW1QYWNrZXRzKCkgPT0gMSk7CisgICAg
bV9jb25uZWN0aW9uLT5zZW5kU3luYyhyZXF1ZXN0TWVzc2FnZS5wb3BOZXh0UGFja2V0KCkpOwog
fQogCiBDdGFwSGlkRHJpdmVyOjpDdGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCkBAIC0xNjcsNyArMTkyLDggQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjp0
cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJh
Y2sKIAogdm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChP
cHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQogewotICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpBbGxvY2F0ZUNoYW5uZWwpOworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpB
bGxvY2F0ZUNoYW5uZWwpCisgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1lc3NhZ2UpIHsKICAg
ICAgICAgcmV0dXJuUmVzcG9uc2UoeyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTkzLDcgKzIx
OSw3IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQo
T3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzCiAgICAgbV9jaGFubmVsSWQgfD0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHBheWxvYWRbaW5kZXgrK10pIDw8IDE2OwogICAgIG1fY2hhbm5lbElk
IHw9IHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4KytdKSA8PCA4OwogICAgIG1f
Y2hhbm5lbElkIHw9IHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4XSk7Ci0gICAg
Ly8gRklYTUUoMTkxNTM0KTogQ2hlY2sgdGhlIHJlc2V0IG9mIHRoZSBwYXlsb2FkLgorICAgIC8v
IEZJWE1FKDE5MTUzNCk6IENoZWNrIHRoZSByZXN0IG9mIHRoZSBwYXlsb2FkLgogICAgIGF1dG8g
Y21kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2NoYW5uZWxJZCwgcHJvdG9jb2woKSA9PSBQ
cm90b2NvbFZlcnNpb246OmtDdGFwID8gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yIDogRmlk
b0hpZERldmljZUNvbW1hbmQ6OmtNc2csIG1fcmVxdWVzdERhdGEpOwogICAgIEFTU0VSVChjbWQp
OwogICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCpjbWQpLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIHJlc3BvbnNlKSBtdXRh
YmxlIHsKQEAgLTIwNiw3ICsyMzIsOCBAQCB2b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0
ZXJDaGFubmVsQWxsb2NhdGVkKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIG1lcwogCiB2b2lk
IEN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKE9wdGlvbmFsPGZp
ZG86OkZpZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OlJlYWR5KTsKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UmVhZHkpCisgICAgICAg
IHJldHVybjsKICAgICBBU1NFUlQoIW1lc3NhZ2UgfHwgbWVzc2FnZS0+Y2hhbm5lbElkKCkgPT0g
bV9jaGFubmVsSWQpOwogICAgIHJldHVyblJlc3BvbnNlKG1lc3NhZ2UgPyBtZXNzYWdlLT5nZXRN
ZXNzYWdlUGF5bG9hZCgpIDogVmVjdG9yPHVpbnQ4X3Q+KCkpOwogfQpAQCAtMjE0LDggKzI0MSwy
OCBAQCB2b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKE9w
dGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPgogdm9pZCBDdGFwSGlkRHJpdmVyOjpyZXR1cm5S
ZXNwb25zZShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkKIHsKICAgICAvLyBSZXNldCBzdGF0
ZSBiZWZvcmUgY2FsbGluZyB0aGUgcmVzcG9uc2UgY2FsbGJhY2sgdG8gYXZvaWQgYmVpbmcgZGVs
ZXRlZC4KKyAgICBhdXRvIHJlc3BvbnNlQ2FsbGJhY2sgPSBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxs
YmFjayk7CisgICAgcmVzZXQoKTsKKyAgICByZXNwb25zZUNhbGxiYWNrKFdURk1vdmUocmVzcG9u
c2UpKTsKK30KKwordm9pZCBDdGFwSGlkRHJpdmVyOjpyZXNldCgpCit7CisgICAgbV9yZXNwb25z
ZUNhbGxiYWNrID0gbnVsbHB0cjsKKyAgICBtX2NoYW5uZWxJZCA9IGZpZG86OmtIaWRCcm9hZGNh
c3RDaGFubmVsOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRsZTsKLSAgICBtX3Jlc3BvbnNlQ2Fs
bGJhY2soV1RGTW92ZShyZXNwb25zZSkpOworfQorCit2b2lkIEN0YXBIaWREcml2ZXI6OmNhbmNl
bCgpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUgfHwgcHJvdG9jb2woKSAhPSBQ
cm90b2NvbFZlcnNpb246OmtDdGFwKQorICAgICAgICByZXR1cm47CisgICAgLy8gQ2FuY2VsIGFu
eSBvdXRzdGFuZGluZyByZXF1ZXN0cy4KKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZHkp
IHsKKyAgICAgICAgYXV0byBjYW5jZWxDb21tYW5kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSht
X2NoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYW5jZWwsIHsgfSk7CisgICAgICAg
IG1fd29ya2VyLT5jYW5jZWwoV1RGTW92ZSgqY2FuY2VsQ29tbWFuZCkpOworICAgIH0KKyAgICBy
ZXNldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJp
dmVyLmgKaW5kZXggYzVkNmRjYWQ1ODdkZjE5N2FlMjIwZWFkZTJkMzBiNjRiYmUwYmMyOC4uYmZi
MjEzZDc0NGQyZTE2MDlkM2JhM2I0YmQzNjc0MTFmZDM3MjEzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
SGlkRHJpdmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgdGhlIENUQVAgSElEIHByb3RvY29sOgogLy8gaHR0cHM6Ly9m
aWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10
by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCN1c2IKIC8vIEZT
TTogSWRsZSA9PiBBbGxvY2F0ZUNoYW5uZWwgPT4gUmVhZHkKLWNsYXNzIEN0YXBIaWREcml2ZXIg
OiBwdWJsaWMgQ3RhcERyaXZlciB7CitjbGFzcyBDdGFwSGlkRHJpdmVyIGZpbmFsIDogcHVibGlj
IEN0YXBEcml2ZXIgewogcHVibGljOgogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsK
ICAgICAgICAgSWRsZSwKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEN0
YXBIaWREcml2ZXIoVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+JiYpOwogCiAgICAgdm9pZCB0cmFu
c2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgLy8gV29ya2VyIGlzIHRo
ZSBoZWxwZXIgdGhhdCBtYWludGFpbnMgdGhlIHRyYW5zYWN0aW9uLgpAQCAtNzEsMTEgKzcyLDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIH5Xb3JrZXIoKTsKIAogICAgICAgICB2b2lkIHRyYW5zYWN0
KGZpZG86OkZpZG9IaWRNZXNzYWdlJiYsIE1lc3NhZ2VDYWxsYmFjayYmKTsKKyAgICAgICAgdm9p
ZCBjYW5jZWwoZmlkbzo6Rmlkb0hpZE1lc3NhZ2UmJik7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2b2lkIHdyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFTZW50KTsKICAgICAgICAgdm9pZCByZWFk
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwotICAgICAgICB2b2lkIHJldHVybk1lc3NhZ2UoT3B0
aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOworICAgICAgICB2b2lkIHJldHVybk1lc3Nh
Z2UoKTsKKyAgICAgICAgdm9pZCByZXNldCgpOwogCiAgICAgICAgIFVuaXF1ZVJlZjxIaWRDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SWRs
ZSB9OwpAQCAtODcsNiArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGludWVBZnRlckNo
YW5uZWxBbGxvY2F0ZWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOwogICAgIHZv
aWQgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1l
c3NhZ2U+JiYpOwogICAgIHZvaWQgcmV0dXJuUmVzcG9uc2UoVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
ICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIFVuaXF1ZVJlZjxXb3JrZXI+IG1fd29ya2VyOwogICAg
IFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SWRsZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvQXV0aGVudGljYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRo
ZW50aWNhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjdmYjUzZTY1MmEyYzE3MjMxM2JhMmVmMzBjMjA4
OWQ5NzQzMTllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9GaWRvQXV0aGVudGljYXRvci5jcHAKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWRvQXV0aGVu
dGljYXRvci5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK0ZpZG9BdXRoZW50aWNhdG9yOjpGaWRvQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8
Q3RhcERyaXZlcj4mJiBkcml2ZXIpCisgICAgOiBtX2RyaXZlcihXVEZNb3ZlKGRyaXZlcikpCit7
CisgICAgQVNTRVJUKG1fZHJpdmVyKTsKK30KKworRmlkb0F1dGhlbnRpY2F0b3I6On5GaWRvQXV0
aGVudGljYXRvcigpCit7CisgICAgaWYgKG1fZHJpdmVyKQorICAgICAgICBtX2RyaXZlci0+Y2Fu
Y2VsKCk7Cit9CisKK0N0YXBEcml2ZXImIEZpZG9BdXRoZW50aWNhdG9yOjpkcml2ZXIoKSBjb25z
dAoreworICAgIEFTU0VSVChtX2RyaXZlcik7CisgICAgcmV0dXJuICptX2RyaXZlcjsKK30KKwor
c3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+IEZpZG9BdXRoZW50aWNhdG9yOjpyZWxlYXNlRHJp
dmVyKCkKK3sKKyAgICBBU1NFUlQobV9kcml2ZXIpOworICAgIHJldHVybiBXVEZNb3ZlKG1fZHJp
dmVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9GaWRvQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvQXV0aGVudGljYXRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcx
NTY2ZTQ3NWQ2MTZkZjc1NGFhNGE0Y2ZlY2FiOWI1NjA4NTVkMmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRo
ZW50aWNhdG9yLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3IuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEN0YXBEcml2ZXI7CisKK2NsYXNzIEZpZG9BdXRo
ZW50aWNhdG9yIDogcHVibGljIEF1dGhlbnRpY2F0b3IgeworcHVibGljOgorICAgIH5GaWRvQXV0
aGVudGljYXRvcigpIG92ZXJyaWRlOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgRmlkb0F1
dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYpOworCisgICAgQ3RhcERy
aXZlciYgZHJpdmVyKCkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+IHJl
bGVhc2VEcml2ZXIoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZl
cj4gbV9kcml2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwCmluZGV4IGVhMTRlZTA1
Y2M4N2M1N2QwMzUxMmViMmM4ZWYzNmQ1YzkxZjIyMmMuLjFiNTY1NGI4YzUxNjAyMzUyZWEzN2I3
NDc2NDRhOTQyYTU1MTM0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIHZvaWQgRmlkb1NlcnZpY2U6OmNvbnRpbnVlQWZ0ZXJHZXRJbmZvKFdlYWtQdHI8
Q3RhcERyaXZlcj4mJiB3ZWFrRHJpdmVyLCBWZWN0b3I8CiAgICAgaWYgKCF3ZWFrRHJpdmVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gZHJpdmVy
ID0gbV9kcml2ZXJzLnRha2Uod2Vha0RyaXZlci5nZXQoKSk7CisgICAgYXV0byBkcml2ZXIgPSBt
X2RyaXZlcnMudGFrZSh3ZWFrRHJpdmVyLmdldCgpKTsKICAgICBpZiAoIWRyaXZlciB8fCAhb2Jz
ZXJ2ZXIoKSB8fCByZXNwb25zZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZB
dXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKaW5kZXggYmQ0MjQ1OTRmYmZhNWEyNmRlMDFj
YTQ3YWMyM2U4ZWE4ZDllMDgzOS4uYWI0NjUzNjJkM2I2NjFkOTAwODZkNWY5Y2EzZDIxZWZkNGI4
NzE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC00NiwxMSAr
NDYsOSBAQCBjb25zdCB1bnNpZ25lZCByZXRyeVRpbWVPdXRWYWx1ZU1zID0gMjAwOwogfQogCiBV
MmZBdXRoZW50aWNhdG9yOjpVMmZBdXRoZW50aWNhdG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJp
dmVyPiYmIGRyaXZlcikKLSAgICA6IG1fZHJpdmVyKFdURk1vdmUoZHJpdmVyKSkKKyAgICA6IEZp
ZG9BdXRoZW50aWNhdG9yKFdURk1vdmUoZHJpdmVyKSkKICAgICAsIG1fcmV0cnlUaW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZVMmZBdXRoZW50aWNhdG9yOjpyZXRyeUxhc3RDb21tYW5kKQog
ewotICAgIC8vIEZJWE1FKDE5MTUyMCk6IFdlIG5lZWQgYSB3YXkgdG8gY29udmVydCBzdGQ6OnVu
aXF1ZV9wdHIgdG8gVW5pcXVlUmVmLgotICAgIEFTU0VSVChtX2RyaXZlcik7CiB9CiAKIHZvaWQg
VTJmQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQpAQCAtMTE4LDcgKzExNiw3IEBAIHZv
aWQgVTJmQXV0aGVudGljYXRvcjo6aXNzdWVOZXdDb21tYW5kKFZlY3Rvcjx1aW50OF90PiYmIGNv
bW1hbmQsIENvbW1hbmRUeXBlIHR5CiAKIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6aXNzdWVDb21t
YW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY29tbWFuZCwgQ29tbWFuZFR5cGUgdHlwZSkKIHsK
LSAgICBtX2RyaXZlci0+dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+KGNvbW1hbmQpLCBbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHR5cGVdKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsK
KyAgICBkcml2ZXIoKS50cmFuc2FjdChWZWN0b3I8dWludDhfdD4oY29tbWFuZCksIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdHlwZV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewog
ICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaApp
bmRleCBkOTA1NWNkMDU5MDE0MTVhYWQ1M2QyMTllYTEzZjljZWY0NjdhOWZjLi40NjcyNzQ4Nzc5
ZjM3YWNmMDhiZjRjZWRhNzg5NWI5ZDMyZGVlZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhl
bnRpY2F0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAot
I2luY2x1ZGUgIkF1dGhlbnRpY2F0b3IuaCIKKyNpbmNsdWRlICJGaWRvQXV0aGVudGljYXRvci5o
IgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBhcGR1IHsKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEN0YXBEcml2ZXI7CiAKLWNsYXNz
IFUyZkF1dGhlbnRpY2F0b3IgZmluYWwgOiBwdWJsaWMgQXV0aGVudGljYXRvciB7CitjbGFzcyBV
MmZBdXRoZW50aWNhdG9yIGZpbmFsIDogcHVibGljIEZpZG9BdXRoZW50aWNhdG9yIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFUyZkF1dGhlbnRpY2F0b3I+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9w
dHI8Q3RhcERyaXZlcj4mJiBkcml2ZXIpCiAgICAgewpAQCAtNjksNyArNjksNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgY29udGludWVCb2d1c0NvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoYXBk
dTo6QXBkdVJlc3BvbnNlJiYpOwogICAgIHZvaWQgY29udGludWVTaWduQ29tbWFuZEFmdGVyUmVz
cG9uc2VSZWNlaXZlZChhcGR1OjpBcGR1UmVzcG9uc2UmJik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q3RhcERyaXZlcj4gbV9kcml2ZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8VTJmQXV0aGVudGlj
YXRvcj4gbV9yZXRyeVRpbWVyOwogICAgIFZlY3Rvcjx1aW50OF90PiBtX2xhc3RDb21tYW5kOwog
ICAgIENvbW1hbmRUeXBlIG1fbGFzdENvbW1hbmRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2Y4OWZiOTc2Yjk4YmUwYzg3Y2YzNzFkZDQ0Zjg1Yzc0
MTljZTQ1My4uNWEyNjYxNDlkODZhMWNiMmI5Nzk3MmZjMWRhMmQxNTlmZGNmOTBhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAj
aW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5n
QXJlYU1lc3NhZ2VzLmgiCkBAIC00MTEzLDYgKzQxMTQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJgogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBwcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgZWxzZSBpZiAo
ZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3Rh
cnRQcm92aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKwor
I2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5hdXRoZW50aWNh
dG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQsIGZyYW1lSUQpOworI2VuZGlm
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgVVJMJiYgdXJsKQpAQCAtNzE5Niw2ICs3MjAxLDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNv
bikKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKICAgICByZXNldFNwZWVjaFN5bnRoZXNp
emVyKCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgbV93ZWJzaXRlRGF0
YVN0b3JlLT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQs
IFdURjo6bnVsbG9wdCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3Rh
dGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0aW9u
UmVhc29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5k
ZXggNTAzOGRlY2I2ZDMzYzlhNzhiNDM1NTlmNmI2YzY1MmRkMjY0MjhmZS4uMWE1NzljZWIwZjdi
YTBlNGMwN2JlYWZiYzJmYmUwZDVkNDRiZGEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJRnJh
bWVIYW5kbGUuaCIKICNpbmNsdWRlICJBUElQYWdlR3JvdXBIYW5kbGUuaCIKICNpbmNsdWRlICJB
UElQYWdlSGFuZGxlLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2lu
Y2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCkBAIC04OTAsNiArODkxLDEyIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaWREZXN0cm95RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAg
Ly8gYmFjayB0byB0aGUgVUlQcm9jZXNzLCB0aGVuIHRoZSBmcmFtZURlc3Ryb3llZCBtZXNzYWdl
IHdpbGwgc3RpbGwgYmUgcmVjZWl2ZWQgYmVjYXVzZSBpdAogICAgIC8vIGdldHMgc2VudCBkaXJl
Y3RseSB0byB0aGUgV2ViUHJvY2Vzc1Byb3h5LgogICAgIEFTU0VSVChXZWJGcmFtZVByb3h5TWFw
Ojppc1ZhbGlkS2V5KGZyYW1lSUQpKTsKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIGlmIChh
dXRvKiBmcmFtZSA9IHdlYkZyYW1lKGZyYW1lSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5h
dXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QocGFnZS0+d2ViUGFnZUlEKCksIGZy
YW1lSUQpOworICAgIH0KKyNlbmRpZgogICAgIG1fZnJhbWVNYXAucmVtb3ZlKGZyYW1lSUQpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA4NGY5NmU2MjcyM2ViYTE2MTdhYjhiMTJjNzE2ZjAwMzYwOWI2MTI2Li5lYzc3OGYyZTI5
YTNhYTkyNjJkNjU3ZjBkOWE4MjI0N2RjODUzNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNjEsNyArMTA2MSw2IEBACiAJCTU3
QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIw
IC8qIE1vY2tOZmNTZXJ2aWNlLmggKi87IH07CiAJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAv
KiBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0JCRUE2QzIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3Jp
emF0aW9uTG9hZFBvbGljeS5oICovOyB9OwogCQk1N0M2MjQ0QjIzNDY3OUE0MDAzODNGRTcgLyog
V2ViQXV0aGVudGljYXRpb25QYW5lbEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0M2MjQ0QTIzNDY3OUE0MDAzODNGRTcgLyogV2ViQXV0aGVu
dGljYXRpb25QYW5lbEZsYWdzLmggKi87IH07Ci0JCTU3RENFRDZFMjE0MkVFNUUwMDE2Qjg0NyAv
KiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENkIyMTQyRUFFMjAw
MTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTU3RENFRDZGMjE0MkVFNjMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTdEQ0VENkEyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvck1lc3NhZ2VzLmggKi87IH07CiAJCTU3RENFRDcwMjE0MkVFNjgwMDE2Qjg0NyAvKiBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2QzIxNDJFQUY5
MDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQk1N0RDRUQ3MTIxNDJFRTZDMDAxNkI4NDcgLyogV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENkQyMTQyRUFGQTAwMTZCODQ3IC8qIFdlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKQEAgLTM1MjUsNyArMzUy
NCw2IEBACiAJCTU3NTk3RUMwMjE4MThCRTIwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN0YXBIaWREcml2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYwODI4QjIwMjk4NTQyMDAxMTY2NzggLyog
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYwODI4
QzIwMjk4NTQyMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjhEMjAyOTg3RTYwMDExNjY3OCAvKiBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYw
ODI5NTIwMkJEOEJBMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyOTYyMDJCRDhCQTAwMTE2Njc4IC8qIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTc2MDgyOTkyMDJCREFFMjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU0Niw2
ICszNTQ0LDggQEAKIAkJNTdCODI2NDcyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpZG9TZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vY2tOZmNTZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3QjgyNjRCMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1vY2tOZmNTZXJ2aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1N0I4RTNENTIzNTU4NjRBMDBENUM1RDEgLyogRmlkb0F1dGhlbnRpY2F0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmlkb0F1dGhlbnRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTdCOEUzRDYyMzU1ODY0QTAwRDVDNUQxIC8qIEZpZG9BdXRoZW50aWNhdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpZG9BdXRoZW50aWNhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCQkVBNkMyMkJDMEJGRTAwMjczOTk1IC8qIFNPQXV0aG9y
aXphdGlvbkxvYWRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU09BdXRob3JpemF0aW9uTG9hZFBv
bGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0M2MjQ0QTIzNDY3OUE0MDAz
ODNGRTcgLyogV2ViQXV0aGVudGljYXRpb25QYW5lbEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1N0RDRUQ2QTIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKQEAgLTcwNDcsNiArNzA0Nyw4IEBACiAJCQkJNTc1OTdFQjcyMTgx
MUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCAqLywKIAkJCQk1NzBEQUFDOTIzMDM4NUZE
MDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5jcHAgKi8sCiAJCQkJNTcwREFBQzgyMzAzODVGRDAw
RThGQzA0IC8qIEN0YXBOZmNEcml2ZXIuaCAqLywKKwkJCQk1N0I4RTNENjIzNTU4NjRBMDBENUM1
RDEgLyogRmlkb0F1dGhlbnRpY2F0b3IuY3BwICovLAorCQkJCTU3QjhFM0Q1MjM1NTg2NEEwMEQ1
QzVEMSAvKiBGaWRvQXV0aGVudGljYXRvci5oICovLAogCQkJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3
MkVCMCAvKiBGaWRvU2VydmljZS5jcHAgKi8sCiAJCQkJNTdCODI2NDYyMzA1MEM1MTAwQjcyRUIw
IC8qIEZpZG9TZXJ2aWNlLmggKi8sCiAJCQkJNTdFQjJFMzkyMUUxOTgzRTAwQjg5Q0RGIC8qIFUy
ZkF1dGhlbnRpY2F0b3IuY3BwICovLApAQCAtNzA2MCw3ICs3MDYyLDYgQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCTU3NjA4MjhDMjAyOTg1NDIwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuY3BwICovLAogCQkJCTU3NjA4MjhCMjAyOTg1NDIwMDExNjY3OCAvKiBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLywKLQkJCQk1NzYwODI4RDIwMjk4N0U2MDAxMTY2Nzgg
LyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJ
CXBhdGggPSBXZWJBdXRoZW50aWNhdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0xMTUxMyw3ICsxMTUxNCw2IEBACiAJCQkJMjY4NDA1NTIxOEI4NkVENjAwMjJDMzhCIC8qIFZp
ZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNjAyMjRDMThDMTZCOUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEU3RDNDMThDMTUxNDkwMDVBNzAyQSAvKiBW
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1N0RDRUQ2RTIxNDJFRTVFMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3RENFRDcwMjE0
MkVFNjgwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzBBMTk1NzFDOTAwNjhGMDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUMwQTE5NTMxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IDY2ZmExYTc5YmQxZjY1OTRjZDI2
ZDk0YzM1NzY4ODYzMWE1OGY4OWIuLjhhOTg3M2IwMjA0OTNjNmEwNjkxZjNhNTZjMWJhMDE1M2Vj
YTdkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
Y3BwCkBAIC0yOCw0MiArMjgsNDAgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKLSNpbmNs
dWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJG
cmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcjo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKFdlYlBhZ2UmIHdlYlBhZ2UpCiAg
ICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UuaWRlbnRpZmllcigpLCAqdGhpcyk7CiB9
CiAKLVdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6fldlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcigpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwo
Y29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IFdlYkZyYW1l
Ojpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKKyAgICBpZiAoIXdlYkZyYW1lKQorICAgICAgICByZXR1
cm47CisgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6Ok1ha2VDcmVkZW50aWFsKHdlYkZyYW1lLT5mcmFtZUlE
KCksIGhhc2gsIG9wdGlvbnMpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cyYgb3B0aW9ucywgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
K3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVy
JiYgaGFuZGxlcikKIHsKLSAgICBhdXRvIG1lc3NhZ2VJZCA9IHNldFJlcXVlc3RDb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Ok1ha2VDcmVkZW50aWFsKG1lc3NhZ2VJ
ZCwgaGFzaCwgb3B0aW9ucykpOworICAgIGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21D
b3JlRnJhbWUoZnJhbWUpOworICAgIGlmICghd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eTo6R2V0QXNzZXJ0aW9uKHdlYkZyYW1lLT5mcmFtZUlEKCksIGhhc2gs
IG9wdGlvbnMpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNv
bnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywg
V2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQgV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgYXV0
byBtZXNzYWdlSWQgPSBzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVy
KSk7Ci0gICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5OjpHZXRBc3NlcnRpb24obWVzc2FnZUlkLCBoYXNoLCBvcHRpb25zKSk7Ci19Ci0K
LXZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYm
IGhhbmRsZXIpCi17Ci0gICAgYXV0byBtZXNzYWdlSWQgPSBhZGRRdWVyeUNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoaGFuZGxlcikpOwotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6SXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRo
ZW50aWNhdG9yQXZhaWxhYmxlKG1lc3NhZ2VJZCkpOworICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpJc1Vz
ZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoKSwgV1RGTW92ZShoYW5k
bGVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IDZiYmM2YjY2YWM1Nzg0NjljZTM4NWE5OTdi
YTc2NTA1NDIzNzdmNGYuLjc4N2U5YTk3YjY0MTQ1OWFiNzhkZjk5ZDQ4N2I2YWMxYzdjMTI4MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTI3
LDI4ICsyNywyMiBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Q2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwogCi1jbGFz
cyBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKK2NsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgewogcHVibGljOgogICAgIGV4cGxp
Y2l0IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcihXZWJQYWdlJik7Ci0gICAgfldlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcigpOwogCiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudAotICAgIC8vIFNlbmRlcnMuCi0gICAgdm9pZCBtYWtl
Q3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZv
aWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
JiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQg
Z2V0QXNzZXJ0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMm
LCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBp
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV2ViQ29yZTo6UXVl
cnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAotICAgIC8vIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7Ci0KICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdl
cy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg3MDBjYTNjMTkwMzg0YmVhYTEy
MTBjYjAzYmU4ZWQzODlhYTgxMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEs
MzMgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0j
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSMvCi0KLSNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQotCi1tZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IgewotCi0gICAgUmVxdWVzdFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgc3RydWN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhIGV4Y2VwdGlvbik7Ci0gICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50
aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sIHJlc3VsdCk7Ci19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCmluZGV4IDFkZmUzOWQ4ZmVjN2Y3ZWNlOTJhNzIzODMyNGM1ZWY2NDBmMWYxYTcuLjNmMTkz
ZWQ0MWNjYzM1MjdkMWNhYmQxOTE1NGIzZDU4OTVhZjU1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBXZWJQ
YWdlKiBXZWJGcmFtZTo6cGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVdl
YkZyYW1lKiBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShGcmFtZSYgZnJhbWUpCitXZWJGcmFtZSog
V2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoY29uc3QgRnJhbWUmIGZyYW1lKQogewogICAgIGF1dG8q
IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKSk7CiAgICAgaWYgKCF3ZWJGcmFtZUxvYWRlckNsaWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDJmMGNjOWQyY2Y3NmI4
NjIwMmE5Y2NmZDhiNjY4MGViMGY1YTFiNjMuLmIzMjlhYzVlNWZiMmZhZTQxZDQ3ZjY3ZmNhMTIy
YzgzMGRjNjZmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJQYWdlKiBwYWdlKCkgY29u
c3Q7CiAKLSAgICBzdGF0aWMgV2ViRnJhbWUqIGZyb21Db3JlRnJhbWUoV2ViQ29yZTo6RnJhbWUm
KTsKKyAgICBzdGF0aWMgV2ViRnJhbWUqIGZyb21Db3JlRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJh
bWUmKTsKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9j
b3JlRnJhbWU7IH0KIAogICAgIEZyYW1lSW5mb0RhdGEgaW5mbygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM0OGZlZGU0M2Y3N2Ey
YzFhNzY2NTA2Y2M3YTIwNDdjNjdmMmQ1YzYuLjBmZWJjYzc1YTgxY2QxYzhiYTQzMjEyZGE5NWMz
NGRmN2ZmMTQ5ZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0xMC0xNiAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IEF1dGhlbnRpY2F0
b3JDYW5jZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MTUyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU5MjAyMDQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuZXcgdGVzdHMuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3Nh
Z2VUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIHdlYlZp
ZXc6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1oaWQtY2FuY2VsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWw6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWw6CisK
IDIwMTktMTAtMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTjogZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWludGVy
ZmFjZXMuaHRtbCBpcyBmYWlsaW5nIGluIFdlYktpdDEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMThiNWJmMjA2MmE4NzNlZmViZmRmOTI2ZDA4YjE4ZDlkMWU0ZjJhZS4uYmM2YTdkM2ViODdm
N2Q1ZTI5NjFiMDFlYTRmMWE3NmI4MTEzYTE2NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTMzOCw2ICszMzgsNyBAQAogCQk1NzU5OUUyQjFGMDcxQUEwMDBBM0ZCOEMgLyogSW5kZXhlZERC
U3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5V3JpdGUuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5OUUyMzFGMDcx
OTJDMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmls
aXR5V3JpdGUuaHRtbCAqLzsgfTsKIAkJNTc2NjNERUEyMzRFQTY2RDAwRTg1RTA5IC8qIHdlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjYzREU5MjM0RUE2MEIwMEU4NUUw
OSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCAqLzsgfTsKIAkJ
NTc2NjNERUMyMzRGMUY5MzAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQuaHRtbCAqLzsgfTsKKwkJNTc2NjNERjMyMzU3RTQ4OTAwRTg1RTA5
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzY2M0RG
MjIzNTdFNDVEMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlk
LWNhbmNlbC5odG1sICovOyB9OwogCQk1NzY5QzUwQjFEOUIwMDAyMDAwODQ3RkIgLyogU2VyaWFs
aXplZENyeXB0b0tleVdyYXAubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzY5QzUwQTFEOUIwMDAxMDAwODQ3RkIgLyogU2VyaWFsaXplZENyeXB0b0tl
eVdyYXAubW0gKi87IH07CiAJCTU3NzRBQTY4MjFGQkJGNzgwMEFGMkExQiAvKiBUZXN0U09BdXRo
b3JpemF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc3NEFBNjcyMUZCQkY3ODAwQUYyQTFCIC8qIFRlc3RTT0F1dGhvcml6YXRpb24ubW0gKi87
IH07CiAJCTU3NzhEMDU2MjIxMTBBMjYwMDg5OUUzQiAvKiBMb2FkV2ViQXJjaGl2ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NzhEMDU1MjIxMTBB
MjYwMDg5OUUzQiAvKiBMb2FkV2ViQXJjaGl2ZS5tbSAqLzsgfTsKQEAgLTE0NDEsNiArMTQ0Miw3
IEBACiAJCQkJQ0RDOEU0OTcxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGhvdXQtYXVkaW8u
bXA0IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTJFQkQ5RDBBMjEzNDczMEQwMDJEQTc1OCAv
KiB2aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNENTc3Nzk5MjExQ0UwRTQw
MDFCMzcxRSAvKiB3ZWItYXVkaW8tb25seS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJ
CTU3NjYzREYzMjM1N0U0ODkwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1oaWQtY2FuY2VsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2NjNERUMy
MzRGMUY5MzAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NjYzREVBMjM0RUE2NkQwMEU4NUUwOSAv
KiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQk1N0M2MjQ1MDIzNDZDMjFFMDAzODNGRTcgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE4NjIsNiAr
MTg2NCw3IEBACiAJCTU3NTk5RTI2MUYwNzE5MkMwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1
cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy1zaG0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkluZGV4ZWRE
QlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXNobSI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NjYzREU5MjM0RUE2MEIwMEU4NUUwOSAvKiB3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjYz
REYyMjM1N0U0NUQwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1o
aWQtY2FuY2VsLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTc2OUM1MEExRDlCMDAwMTAwMDg0N0ZCIC8qIFNlcmlhbGl6ZWRDcnlwdG9L
ZXlXcmFwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VyaWFs
aXplZENyeXB0b0tleVdyYXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NzRB
QTY3MjFGQkJGNzgwMEFGMkExQiAvKiBUZXN0U09BdXRob3JpemF0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVGVzdFNPQXV0aG9yaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTc3OEQwNTUyMjExMEEyNjAwODk5RTNCIC8qIExvYWRXZWJBcmNoaXZlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTG9hZFdlYkFyY2hpdmUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMzg0LDYgKzMzODcsNyBAQAogCQkJCUY0NDUxQzc1MUVCOEZEN0MwMDIw
QzVEQSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sICovLAogCQkJCUNENTc3
NzlCMjExQ0U2Q0UwMDFCMzcxRSAvKiB2aWRlby13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRt
bCAqLywKIAkJCQlDRDU3Nzc5ODIxMUNERThGMDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRt
bCAqLywKKwkJCQk1NzY2M0RGMjIzNTdFNDVEMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5odG1sICovLAogCQkJCTU3NjYzREVCMjM0RjFGODAw
MEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCAqLywK
IAkJCQk1NzY2M0RFOTIzNEVBNjBCMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24tbmZjLmh0bWwgKi8sCiAJCQkJNTdDNjI0NEYyMzQ2QzFFQzAwMzgzRkU3IC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCmlu
ZGV4IDBjMWEwNjlmMTNjMzljNDA5ZTVkNWUxYjAzYTdlOTJiZjliMzY2YzIuLjA2NmZhZTc5Zjc4
YjNmNmQ1ZDg1ZGY2NWQ4YzNjNWJhODQ2ZGU4MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCkBAIC01Niwx
NiArNTYsMTUgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRTaXplKQogfQog
CiAvKgotICogVTJmIEluaXQgUGFja2V0cyBhcmUgb2YgdGhlIGZvcm1hdDoKLSAqIEJ5dGUgMDog
ICAgMAotICogQnl0ZSAxLTQ6ICBDaGFubmVsIElECi0gKiBCeXRlIDU6ICAgIENvbW1hbmQgYnl0
ZQotICogQnl0ZSA2LTc6ICBCaWcgRW5kaWFuIHNpemUgb2YgZGF0YQotICogQnl0ZSA4LW46ICBE
YXRhIGJsb2NrCisgKiBDVEFQIEhJRCBJbml0IFBhY2tldHMgYXJlIG9mIHRoZSBmb3JtYXQ6Cisg
KiBCeXRlIDAtMzogIENoYW5uZWwgSUQKKyAqIEJ5dGUgNDogICAgQ29tbWFuZCBieXRlCisgKiBC
eXRlIDUtNjogIEJpZyBFbmRpYW4gc2l6ZSBvZiBkYXRhCisgKiBCeXRlIDctbjogIERhdGEgYmxv
Y2sKICAqCiAgKiBSZW1haW5pbmcgYnVmZmVyIGlzIHBhZGRlZCB3aXRoIDAKICAqLwotVEVTVChG
aWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXREYXRhKQorVEVTVChGaWRvSGlkTWVzc2FnZVRl
c3QsIFRlc3RQYWNrZXREYXRhMSkKIHsKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweEY1MDYw
NzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwpAQCAtODgsNiArODcsMzQg
QEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXREYXRhKQogICAgICAgICBFWFBF
Q1RfRVEoMCwgc2VyaWFsaXplZFtpbmRleF0pIDw8ICJtaXNtYXRjaCBhdCBpbmRleCAiIDw8IGlu
ZGV4OwogfQogCisvKgorICogQ1RBUCBISUQgQ29udGludWF0aW9uIFBhY2tldHMgYXJlIG9mIHRo
ZSBmb3JtYXQ6CisgKiBCeXRlIDAtMzogIENoYW5uZWwgSUQKKyAqIEJ5dGUgNDogICAgU0VRCisg
KiBCeXRlIDUtbjogIERhdGEgYmxvY2sKKyAqCisgKiBSZW1haW5pbmcgYnVmZmVyIGlzIHBhZGRl
ZCB3aXRoIDAKKyAqLworVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXREYXRhMikK
K3sKKyAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweEY1MDYwNzA4OworICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhIHsxMCwgMTF9OworICAgIGF1dG8gaW5pdFBhY2tldCA9IG1ha2VVbmlxdWU8Rmlk
b0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBWZWN0b3I8dWludDhfdD4oZGF0
YSkpOworICAgIHNpemVfdCBpbmRleCA9IDA7CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFs
aXplZCA9IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCk7CisgICAgRVhQRUNUX0VRKChj
aGFubmVsSWQgPj4gMjQpICYgMHhmZiwgc2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAgRVhQRUNU
X0VRKChjaGFubmVsSWQgPj4gMTYpICYgMHhmZiwgc2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAg
RVhQRUNUX0VRKChjaGFubmVsSWQgPj4gOCkgJiAweGZmLCBzZXJpYWxpemVkW2luZGV4KytdKTsK
KyAgICBFWFBFQ1RfRVEoY2hhbm5lbElkICYgMHhmZiwgc2VyaWFsaXplZFtpbmRleCsrXSk7Cisg
ICAgRVhQRUNUX0VRKDAsIHNlcmlhbGl6ZWRbaW5kZXgrK10pOworCisgICAgRVhQRUNUX0VRKGRh
dGFbMF0sIHNlcmlhbGl6ZWRbaW5kZXgrK10pOworICAgIEVYUEVDVF9FUShkYXRhWzFdLCBzZXJp
YWxpemVkW2luZGV4KytdKTsKKyAgICBmb3IgKDsgaW5kZXggPCBzZXJpYWxpemVkLnNpemUoKTsg
aW5kZXgrKykKKyAgICAgICAgRVhQRUNUX0VRKDAsIHNlcmlhbGl6ZWRbaW5kZXhdKSA8PCAibWlz
bWF0Y2ggYXQgaW5kZXggIiA8PCBpbmRleDsKK30KKwogVEVTVChGaWRvSGlkTWVzc2FnZVRlc3Qs
IFRlc3RQYWNrZXRDb25zdHJ1Y3RvcnMpCiB7CiAgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHgw
NTA2MDcwODsKQEAgLTIwOSw2ICsyMzYsMTYgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRl
c3REZXNlcmlhbGl6ZSkKICAgICB9CiB9CiAKK1RFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0
UHJvcGVydGllcykKK3sKKyAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweDA1MDYwNzA4OworICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhOworCisgICAgYXV0byBtZXNzYWdlID0gRmlkb0hpZE1lc3Nh
Z2U6OmNyZWF0ZShjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2FuY2VsLCBkYXRh
KTsKKyAgICBFWFBFQ1RfRVEoY2hhbm5lbElkLCBtZXNzYWdlLT5jaGFubmVsSWQoKSk7CisgICAg
RVhQRUNUX0VRKEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2FuY2VsLCBtZXNzYWdlLT5jbWQoKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggODg0MmQ5
YTVkMTAwNGJiZTc3ODlkZjk4NTA0OTQwNGFmZDgwNDk2Ny4uODNhZGNjZjg5OWVhNTc5MmI0N2Zm
OTMxYjI4MDBlMzM4MDExMmE3OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3RX
S1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKICNp
bXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgpAQCAtMzYsMTAgKzM3LDEyIEBA
CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHN0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKIHN0YXRpYyBib29sIHdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxTdWNjZWRlZCA9IGZhbHNlOworc3RhdGljIFJldGFpblB0cjxfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsPiBnUGFuZWw7CiAKIEBpbnRlcmZhY2UgVGVzdFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
RGVsZWdhdGU+CiBAZW5kCkBAIC02Nyw3ICs3MCw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0Owog
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVn
YXRlIHsKLSAgICBSZXRhaW5QdHI8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbD4gX3BhbmVsOwog
ICAgIFJldGFpblB0cjxUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiBfZGVsZWdh
dGU7CiAgICAgQmxvY2tQdHI8dm9pZChfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4g
X2NhbGxiYWNrOwogfQpAQCAtODUsMTAgKzg3LDEwIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOihfV0tXZWJBdXRoZW50aWNh
CiAKICAgICBfZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIEFTU0VSVF9ORShwYW5lbCwgbmlsKTsKLSAgICBf
cGFuZWwgPSBwYW5lbDsKLSAgICBbX3BhbmVsIHNldERlbGVnYXRlOl9kZWxlZ2F0ZS5nZXQoKV07
CisgICAgZ1BhbmVsID0gcGFuZWw7CisgICAgW2dQYW5lbCBzZXREZWxlZ2F0ZTpfZGVsZWdhdGUu
Z2V0KCldOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKFtfcGFuZWwgcmVseWluZ1BhcnR5SURdLCAi
Iik7CisgICAgRVhQRUNUX1RSVUUoW1tnUGFuZWwgcmVseWluZ1BhcnR5SURdIGlzRXF1YWw6QCIi
XSB8fCBbW2dQYW5lbCByZWx5aW5nUGFydHlJRF0gaXNFcXVhbDpAImxvY2FsaG9zdCJdKTsKIAog
ICAgIGlmIChfaXNSYWN5KSB7CiAgICAgICAgIGlmICghX2NhbGxiYWNrKSB7CkBAIC0xMDYsNiAr
MTA4LDI0IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogbmFtZXNwYWNlIHsKIAorY29u
c3QgY2hhciBwYXJlbnRGcmFtZVtdID0gIjxodG1sPjxpZnJhbWUgaWQ9J3RoZUZyYW1lJyBzcmM9
J2lGcmFtZS5odG1sJz48L2lmcmFtZT48L2h0bWw+IjsKK2NvbnN0IGNoYXIgc3ViRnJhbWVbXSA9
CisiPGh0bWw+IgorIjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0naW5wdXQnPiIKKyI8c2NyaXB0PiIK
KyIgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsiCisiICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBleHBlY3RDYW5jZWw6IHRy
dWUgfSB9KTsiCisiICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5w
dXQuZm9jdXMoKTsgfSk7IgorIiAgICB9IgorIiAgICBjb25zdCBvcHRpb25zID0geyIKKyIgICAg
ICAgIHB1YmxpY0tleTogeyIKKyIgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5
KDE2KSIKKyIgICAgICAgIH0iCisiICAgIH07IgorIiAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpOyIKKyI8L3NjcmlwdD4iCisiPC9odG1sPiI7CisKIHN0YXRpYyBfV0tFeHBl
cmltZW50YWxGZWF0dXJlICp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKQog
ewogICAgIHN0YXRpYyBSZXRhaW5QdHI8X1dLRXhwZXJpbWVudGFsRmVhdHVyZT4gdGhlRmVhdHVy
ZTsKQEAgLTEyMiwyMSArMTQyLDEyIEBAIHN0YXRpYyBfV0tFeHBlcmltZW50YWxGZWF0dXJlICp3
ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKQogICAgIHJldHVybiB0aGVGZWF0
dXJlLmdldCgpOwogfQogCi0vLyBPbmx5IGZvY3VzZWQgZG9jdW1lbnRzIGNhbiB0cmlnZ2VyIFdl
YkF1dGhuLgotc3RhdGljIHZvaWQgZm9jdXMoVGVzdFdLV2ViVmlldyAqd2ViVmlldykKLXsKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgW1t3ZWJWaWV3IGhvc3RXaW5kb3ddIG1ha2VGaXJzdFJlc3Bv
bmRlcjp3ZWJWaWV3XTsKLSNlbGlmIFBMQVRGT1JNKElPUykKLSAgICBbd2ViVmlldyBiZWNvbWVG
aXJzdFJlc3BvbmRlcl07Ci0jZW5kaWYKLX0KLQogc3RhdGljIHZvaWQgcmVzZXQoKQogewogICAg
IHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsRmFpbGVkID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFN1Y2NlZGVk
ID0gZmFsc2U7CisgICAgZ1BhbmVsID0gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc2FwY2U7CkBA
IC0xNDksNyArMTYwLDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBOb1BhbmVsVGlt
ZW91dCkKICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBm
b3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVy
ZSgpXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
Ci0gICAgZm9jdXMod2ViVmlldy5nZXQoKSk7CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBbd2ViVmll
dyB3YWl0Rm9yTWVzc2FnZTpAIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl07CkBAIC0xNjMsNyArMTcz
LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBOb1BhbmVsSGlkU3VjY2VzcykKICAg
ICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmlt
ZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKIAog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgZm9j
dXMod2ViVmlldy5nZXQoKSk7CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKQEAgLTE3NCwxMyArMTgzLDEyIEBAIFRFU1QoV2ViQXV0
aGVudGljYXRpb25QYW5lbCwgUGFuZWxUaW1lb3V0KQogICAgIHJlc2V0KCk7CiAgICAgUmV0YWlu
UHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIAotICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQ
bHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CiAgICAgW1tj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFs
RmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CiAKLSAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
LSAgICBmb2N1cyh3ZWJWaWV3LmdldCgpKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1
bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CkBAIC0xOTgsNyArMjA2LDYgQEAgVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbEhpZFN1Y2Nlc3MpCiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVj
dCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIGZvY3Vz
KHdlYlZpZXcuZ2V0KCkpOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmFuKTsKQEAgLTIyMiw3ICsyMjksNiBAQCBURVNUKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwsIFBhbmVsUmFjeTEpCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBb
ZGVsZWdhdGUgc2V0SXNSYWN5OnRydWVdOwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOwotICAgIGZvY3VzKHdlYlZpZXcuZ2V0KCkpOwogCiAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07
CiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuKTsKQEAgLTI0Myw3ICsy
NDksNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsUmFjeTIpCiAgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKICAgICBbZGVsZWdhdGUgc2V0SXNSYWN5OnRydWVdOwogICAgIFt3
ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIGZvY3VzKHdlYlZpZXcu
Z2V0KCkpOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlv
blBhbmVsUmFuKTsKQEAgLTI2Niw3ICsyNzEsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIFBhbmVsVHdpY2UpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNh
dGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldFVJRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIGZvY3VzKHdlYlZpZXcuZ2V0KCkpOwogCiAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJM
LmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuKTsKQEAg
LTI3OCw2ICsyODIsMTc0IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFuZWxUd2lj
ZSkKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxTdWNjZWRlZCk7CiB9CiAK
K1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUmVsb2FkSGlkQ2FuY2VsKQoreworICAgIHJl
c2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhp
ZC1jYW5jZWwiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllF
U107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9y
RXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUo
KV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxV
SURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSYW4pOworICAgIFt3ZWJWaWV3IHJlbG9hZF07CisgICAgVXRpbDo6cnVuKCZ3
ZWJBdXRoZW50aWNhdGlvblBhbmVsRmFpbGVkKTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBMb2NhdGlvbkNoYW5nZUhpZENhbmNlbCkKK3sKKyAgICByZXNldCgpOworICAgIFJl
dGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IG90aGVyVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3Vy
ZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9z
ZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhw
ZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0
aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBz
ZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6
OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVK
YXZhU2NyaXB0OiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImxvY2F0aW9uID0gJyVAJyIs
IFtvdGhlclVSTCBhYnNvbHV0ZVN0cmluZ11dIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAg
VXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsRmFpbGVkKTsKK30KKworVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBOZXdMb2FkSGlkQ2FuY2VsKQoreworICAgIHJlc2V0KCk7Cisg
ICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOworICAgIFJldGFpblB0cjxOU1VSTD4gb3RoZXJVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZp
Z3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0
aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29u
ZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNl
c10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRp
b25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RX
ZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJW
aWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAg
VXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuKTsKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOm90aGVyVVJMLmdldCgpXV07Cisg
ICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsRmFpbGVkKTsKK30KKworVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBDbG9zZUhpZENhbmNlbCkKK3sKKyAgICByZXNldCgpOwor
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2Vs
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9j
ZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAg
IFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1l
bnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0
KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBh
bmVsUmFuKTsKKyAgICBbd2ViVmlldyBfY2xvc2VdOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVu
dGljYXRpb25QYW5lbEZhaWxlZCk7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
U3ViRnJhbWVDaGFuZ2VMb2NhdGlvbkhpZENhbmNlbCkKK3sKKyAgICBUQ1BTZXJ2ZXIgc2VydmVy
KFtwYXJlbnRGcmFtZSA9IFN0cmluZyhwYXJlbnRGcmFtZSksIHN1YkZyYW1lID0gU3RyaW5nKHN1
YkZyYW1lKV0gKGludCBzb2NrZXQpIHsKKyAgICAgICAgTlNTdHJpbmcgKmZpcnN0UmVzcG9uc2Ug
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAgICAgICAgICAgIEAiSFRUUC8xLjEgMjAw
IE9LXHJcbiIKKyAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogJWRcclxuXHJcbiIKKyAgICAg
ICAgICAgICIlQCIsCisgICAgICAgICAgICBwYXJlbnRGcmFtZS5sZW5ndGgoKSwKKyAgICAgICAg
ICAgIChpZClwYXJlbnRGcmFtZQorICAgICAgICBdOworICAgICAgICBOU1N0cmluZyAqc2Vjb25k
UmVzcG9uc2UgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAgICAgICAgICAgIEAiSFRU
UC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogJWRcclxuXHJc
biIKKyAgICAgICAgICAgICIlQCIsCisgICAgICAgICAgICBzdWJGcmFtZS5sZW5ndGgoKSwKKyAg
ICAgICAgICAgIChpZClzdWJGcmFtZQorICAgICAgICBdOworCisgICAgICAgIFRDUFNlcnZlcjo6
cmVhZChzb2NrZXQpOworICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNvY2tldCwgZmlyc3RSZXNw
b25zZS5VVEY4U3RyaW5nLCBmaXJzdFJlc3BvbnNlLmxlbmd0aCk7CisgICAgICAgIFRDUFNlcnZl
cjo6cmVhZChzb2NrZXQpOworICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNvY2tldCwgc2Vjb25k
UmVzcG9uc2UuVVRGOFN0cmluZywgc2Vjb25kUmVzcG9uc2UubGVuZ3RoKTsKKyAgICB9KTsKKwor
ICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9j
b25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0
aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6
d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJv
UmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzooaWQpbWFrZVN0cmluZygiaHR0cDovL2xvY2FsaG9zdDoiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2VydmVyLnBvcnQoKSkpXV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0
aGVudGljYXRpb25QYW5lbFJhbik7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAi
dGhlRnJhbWUuc3JjID0gJ3NpbXBsZS5odG1sJyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAg
ICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQpOworfQorCitURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIFN1YkZyYW1lRGVzdHJ1Y3Rpb25IaWRDYW5jZWwpCit7Cisg
ICAgVENQU2VydmVyIHNlcnZlcihbcGFyZW50RnJhbWUgPSBTdHJpbmcocGFyZW50RnJhbWUpLCBz
dWJGcmFtZSA9IFN0cmluZyhzdWJGcmFtZSldIChpbnQgc29ja2V0KSB7CisgICAgICAgIE5TU3Ry
aW5nICpmaXJzdFJlc3BvbnNlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CisgICAgICAg
ICAgICBAIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6
ICVkXHJcblxyXG4iCisgICAgICAgICAgICAiJUAiLAorICAgICAgICAgICAgcGFyZW50RnJhbWUu
bGVuZ3RoKCksCisgICAgICAgICAgICAoaWQpcGFyZW50RnJhbWUKKyAgICAgICAgXTsKKyAgICAg
ICAgTlNTdHJpbmcgKnNlY29uZFJlc3BvbnNlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
CisgICAgICAgICAgICBAIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAiQ29udGVu
dC1MZW5ndGg6ICVkXHJcblxyXG4iCisgICAgICAgICAgICAiJUAiLAorICAgICAgICAgICAgc3Vi
RnJhbWUubGVuZ3RoKCksCisgICAgICAgICAgICAoaWQpc3ViRnJhbWUKKyAgICAgICAgXTsKKwor
ICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgVENQU2VydmVyOjp3cml0
ZShzb2NrZXQsIGZpcnN0UmVzcG9uc2UuVVRGOFN0cmluZywgZmlyc3RSZXNwb25zZS5sZW5ndGgp
OworICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgVENQU2VydmVyOjp3
cml0ZShzb2NrZXQsIHNlY29uZFJlc3BvbnNlLlVURjhTdHJpbmcsIHNlY29uZFJlc3BvbnNlLmxl
bmd0aCk7CisgICAgfSk7CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAi
V2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVT
XTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JF
eHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgp
XTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJ
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KGlkKW1ha2VTdHJpbmcoImh0dHA6Ly9s
b2NhbGhvc3Q6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNlcnZlci5wb3J0KCkpKV1dXTsKKyAg
ICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOworICAgIFt3ZWJWaWV3IGV2
YWx1YXRlSmF2YVNjcmlwdDpAInRoZUZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhlRnJh
bWUpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGlj
YXRpb25QYW5lbEZhaWxlZCk7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFu
ZWxIaWRDYW5jZWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25m
aWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldp
dGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNv
bmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0
aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0
V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2Vi
VmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAg
IFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CisgICAgW2dQYW5lbCBjYW5j
ZWxdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiT3BlcmF0aW9uIHRpbWVkIG91dC4i
XTsKKyAgICBFWFBFQ1RfRkFMU0Uod2ViQXV0aGVudGljYXRpb25QYW5lbEZhaWxlZCk7CisgICAg
RVhQRUNUX0ZBTFNFKHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTdWNjZWRlZCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRo
ZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
aGlkLWNhbmNlbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmMTI0ODExZDQ5YjVkODZmMjMxM2RkMWJiYmQz
MzAwZDExZmYzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwu
aHRtbApAQCAtMCwwICsxLDIyIEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxz
Y3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgZXhwZWN0Q2FuY2Vs
OiB0cnVlIH0gfSk7CisgICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBp
bnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcHRpb25zID0geworICAgICAg
ICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYp
LAorICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAgIH0KKyAgICB9OworCisgICAgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAg
ICAgICAvLyBjb25zb2xlLmxvZygiU3VjY2VlZGVkISIpOworICAgICAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiU3VjY2VlZGVkISIpOwor
ICAgIH0sIGVycm9yID0+IHsKKyAgICAgICAgLy8gY29uc29sZS5sb2coZXJyb3IubWVzc2FnZSk7
CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RN
ZXNzYWdlKGVycm9yLm1lc3NhZ2UpOworICAgIH0pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1n
ZXQtYXNzZXJ0aW9uLWhpZC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbAppbmRleCBiMWVm
NWEzNmQyOGE4YWQxNDcxMGQ4ZDdmN2YyNWRlOWExYzY5NzA5Li42NTUxMGQxNjljZmJmMzhhZmE4
OWRjNGFmZGZkODk5NWEwNWYxNDU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1s
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwKQEAgLTEsMyArMSw0IEBACis8aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9ImlucHV0Ij4KIDxzY3JpcHQ+CiAgICAgY29uc3QgdGVzdEFzc2VydGlvbk1l
c3NhZ2VCYXNlNjQgPQogICAgICAgICAiQUtNQm9tSnBaRmhBS0FpdHp1aitUc2x6ZWxmMy92WndJ
R3REUU5nb0tlRmQ1b0VpZVl6aHl6QTY1c2FmMHRLMiIgKwpAQCAtNSw4ICs2LDEwIEBACiAgICAg
ICAgICJaNTFWc3R1UWt1SEkyZVhoMEN0MWdQQzBnU3gzQ1dMaDVJOWEyQUVBQUFCUUExaEhNRVVD
SVFDU0ZUdXVCV2dCIiArCiAgICAgICAgICI0L0YwVkI3RGxVVk0wOUlIUG14ZTFNekhVd1JvQ1Ja
YkNBSWdHS292NnhvQXgyTUVmNi82cU5zOE91dHpoUDJDIiArCiAgICAgICAgICJRb0oxTDdGZTY0
Rzl1QmM9IjsKLSAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0
XSB9IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQu
Zm9jdXMoKTsgfSk7CisgICAgfQogCiAgICAgY29uc3Qgb3B0aW9ucyA9IHsKICAgICAgICAgcHVi
bGljS2V5OiB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1uZmMuaHRtbAppbmRleCA3MDZhNmI3ZmZiZWRkYTE0MzUyMDBkNWRmYTJlYjJhN2UyMDEx
ZDIwLi45NDViNmI2NTk0MmI1NmVkMWIyZGRjZTk2YzM1NjJhZTQxZWIzMGZkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlv
bi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwKQEAg
LTEsMyArMSw0IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KIDxzY3JpcHQ+CiAg
ICAgY29uc3QgdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0ID0gIlJrbEVUMTh5WHpDUUFBPT0iOwog
ICAgIGNvbnN0IHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0ID0KQEAgLTksOCArMTAsMTAg
QEAKICAgICAgICAgIlo1MVZzdHVRa3VISTJlWGgwQ3QxZ1BDMGdTeDNDV0xoNUk5YTJBRUFBQUJR
QTFoSE1FVUNJUUNTRlR1dUJXZ0IiICsKICAgICAgICAgIjQvRjBWQjdEbFVWTTA5SUhQbXhlMU16
SFV3Um9DUlpiQ0FJZ0dLb3Y2eG9BeDJNRWY2LzZxTnM4T3V0emhQMkMiICsKICAgICAgICAgIlFv
SjFMN0ZlNjRHOXVCZVFBQT09IjsKLSAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsg
ZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2
NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RBc3NlcnRpb25NZXNzYWdlQXBk
dUJhc2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBwYXls
b2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNl
QXBkdUJhc2U2NCwgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOworICAgICAg
ICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7Cisg
ICAgfQogCiAgICAgY29uc3Qgb3B0aW9ucyA9IHsKICAgICAgICAgcHVibGljS2V5OiB7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwKaW5kZXggYmY0
OWE1ZmRjZjE4ZDQ3MGQ1YjMyYjc4NmMxZDBkYzVlMDZjYjkyZS4uMmRlMmU5MjdjMGE1NDE1NDk2
N2RmNWM0OWE1ZmRhMGRmMDA1MThjZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5odG1sCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24uaHRtbApAQCAtMSw0ICsxLDggQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0iaW5wdXQiPgogPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOwor
CiAgICAgY29uc3Qgb3B0aW9ucyA9IHsKICAgICAgICAgcHVibGljS2V5OiB7CiAgICAgICAgICAg
ICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1mYWlsdXJlLmh0dHBzLmh0bWwKaW5kZXggNWU4ZjViODEyYmU1NzYzYzMx
YmM1ZDJkZmM4OTRjMDk1MGY1Nzg5My4uMWQ2ZWQ5MDU0YjgzYzdkMTQ1M2IxNzVjOGQzODlkMjhj
MTU5NmNmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
Lmh0dHBzLmh0bWwKQEAgLTg3LDggKzg3LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsK
IAotICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlRoaXMgcmVxdWVz
dCBoYXMgYmVlbiB2b2lkZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKLSAgICAgICAgcHJvbWlzZVJl
amVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3Qu
Iik7CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2Vk
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVGhpcyByZXF1
ZXN0IGhhcyBiZWVuIGNhbmNlbGxlZCBieSBhIG5ldyByZXF1ZXN0LiIpOworICAgICAgICBwcm9t
aXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcg
cmVxdWVzdC4iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0d28gY29uc2VjdXRpdmUgcmVxdWVzdHMiKTsKIApA
QCAtMTA3LDE0ICsxMDcsMTQgQEAKICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBb
eyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCiAgICAgICAgICAgICB9CiAgICAgICAg
IH07Ci0gICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2Vk
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGNyZWF0aW9uT3B0aW9ucyksICJU
aGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CisgICAgICAg
IGNvbnN0IHJlc3VsdCA9IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGNyZWF0aW9uT3B0aW9ucyksICJUaGlzIHJlcXVlc3Qg
aGFzIGJlZW4gY2FuY2VsbGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CiAKICAgICAgICAgY29uc3Qg
cmVxdWVzdE9wdGlvbnMgPSB7CiAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKICAgICAgICAgICAg
ICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKQogICAgICAgICAgICAg
fQogICAgICAgICB9OwotICAgICAgICBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChyZXF1ZXN0T3B0aW9ucyksICJUaGlzIHJlcXVl
c3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CisgICAgICAgIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KHJl
cXVlc3RPcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcg
cmVxdWVzdC4iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0d28gY29uc2VjdXRpdmUgcmVxdWVzdHMgKDIpIik7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQu
aHR0cHMuaHRtbAppbmRleCA1NDQ2ZjU1NzBmMjlkNTM0NmFmNzg3Y2Y1NjRjOTNlNTY3MGFmNzBj
Li5mNjRlNGZjMzliMDA1MzE2MWMyYjk1Yzc3NzQ3YzQ3ZTE5OGYwYWI5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBA
IC0xNjMsNyArMTYzLDEyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAg
cHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3
IHJlcXVlc3QuIik7CisgICAgICAgIC8vIFN0YWxsIHRoZSBmaXJzdCByZXF1ZXN0IHRvIHdhaXQg
Zm9yIGNhbmNlbGxhdGlvbi4KKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgZXhwZWN0Q2FuY2Vs
OiB0cnVlIH0gfSk7CisgICAgICAgIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVGhpcyByZXF1ZXN0IGhh
cyBiZWVuIGNhbmNlbGxlZCBieSBhIG5ldyByZXF1ZXN0LiIpOworICAgICAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VC
YXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja0N0YXBNYWtl
Q3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IGNmMThmZjc3ZWYzM2Zh
MzI0MzIwZDNjNWIzYWM2NGRhOWVhNDI4MzIuLjM2YjQxZjc2ZmU2YTEyMGEzMWUzZTViOTViZDBh
Yzk3MWM1MWYxMjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5o
dHRwcy5odG1sCkBAIC04Nyw4ICs4Nyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFz
IGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7Ci0gICAgICAgIHByb21pc2VSZWplY3Rz
KHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
LCAiVGhpcyByZXF1ZXN0IGhhcyBiZWVuIHZvaWRlZCBieSBhIG5ldyByZXF1ZXN0LiIpOworICAg
ICAgICBjb25zdCByZXN1bHQgPSBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVl
biBjYW5jZWxsZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKKyAgICAgICAgcHJvbWlzZVJlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyks
ICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gY2FuY2VsbGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggdHdvIGNvbnNlY3V0aXZlIHJlcXVlc3RzIik7CiAKQEAgLTk4LDcgKzk4LDcgQEAK
ICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKQog
ICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChy
ZXF1ZXN0T3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJl
cXVlc3QuIik7CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KHJlcXVlc3RPcHRpb25zKSwg
IlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKIAog
ICAgICAgICBjb25zdCBjcmVhdGlvbk9wdGlvbnMgPSB7CiAgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKQEAgLTExNCw3ICsxMTQsNyBAQAogICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6
IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKICAgICAgICAgICAgIH0KICAgICAg
ICAgfTsKLSAgICAgICAgcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUoY3JlYXRpb25PcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBo
YXMgYmVlbiB2b2lkZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKKyAgICAgICAgcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoY3Jl
YXRpb25PcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcg
cmVxdWVzdC4iKTsKIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHR3byBjb25zZWN1dGl2ZSByZXF1ZXN0cyAoMikiKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRt
bAppbmRleCAwY2YwM2U3ZGQ2ZTkxOTBiN2Y1NmY3YjkwZWM5MzljMGUyYWRlZGIxLi4wODdjOTM0
YThlMjY1Njg4NDkwZmEyODM5Njg2Y2RmNTBjYzk5MTBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlk
Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC05MCw3ICs5MCw3IEBA
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgcHJvbWlzZVJlamVjdHModCwg
Ik5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJU
aGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CisgICAgICAg
IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuZ2V0KG9wdGlvbnMpLCAiVGhpcyByZXF1ZXN0IGhhcyBiZWVuIGNhbmNlbGxlZCBieSBhIG5l
dyByZXF1ZXN0LiIpOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChv
cHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrQ3Rh
cEdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381244</attachid>
            <date>2019-10-17 15:59:00 -0700</date>
            <delta_ts>2019-10-18 11:45:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191523-20191017155859.patch</filename>
            <type>text/plain</type>
            <size>129775</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVjMzU5NTFkNTUwYjlk
MjllYjg3NzkyMGRlZjU4ZDI4ZTRlNWQ4Ny4uMmZkNzc2NzQ0YzA2N2E1MTZiY2E2OTdmZmJkOTg2
ZTBkOTI3ODFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEwLTE3ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgQXV0aGVudGljYXRvckNhbmNlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTkyMDIw
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0cyBpbiBleGlzdGluZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2FnZTo6
Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlk
UGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpnZXRTZXJpYWxp
emVkRGF0YSBjb25zdCk6CisgICAgICAgIChmaWRvOjpGaWRvSGlkQ29udGludWF0aW9uUGFja2V0
OjpnZXRTZXJpYWxpemVkRGF0YSBjb25zdCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbjo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogdGVzdGlu
Zy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbDoKKyAgICAgICAgQWRkcyBh
IG5ldyBvcHRpb24gdG8gdGVzdCBBdXRoZW50aWNhdG9yQ2FuY2VsLgorCiAyMDE5LTEwLTE1ICBa
YWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bVEZDXSBBZGQg
c3VwcG9ydCBmb3IgY29sZ3JvdXAvY29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEyY2MwMzUzNjk4MGMwY2ZiNDIz
ZTNhNDAwYjU2NzE1NjI3YTAyMTMuLjBmMWEwNDZmMjljYmUyY2YzNjIzZDZkY2YzZTZmODFiOGJl
OTcyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDE5LTEwLTE3ICBKaWV3ZW4gVGFu
ICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQg
QXV0aGVudGljYXRvckNhbmNlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxNTIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTkyMDIwND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGltcGxlbWVudCB0d28gd2F5cyB0byBjYW5jZWwgYSBwZW5kaW5nIFdlYkF1dGhuIGNlcmVtb255
OgorICAgICAgICAxKSBWaWEgbmF2aWdhdGlvbiBhY3Rpdml0aWVzLiBBY3Rpdml0aWVzIGluY2x1
ZGUgaSkgbWFpbiBmcmFtZSBuYXZpZ2F0aW9uLCBpaSkgbWFpbiBmcmFtZSByZWxvYWQsCisgICAg
ICAgIGlpaSkgbWFpbiBmcmFtZSBkZXN0cnVjdGlvbiwgaXYpIHN1YiBmcmFtZSBuYXZpZ2F0aW9u
LCBhbmQgdikgc3ViIGZyYW1lIGRlc3RydWN0aW9uLiBBbGwgdGhlIGFib3ZlCisgICAgICAgIGFj
dGl2aXRpZXMgd2lsbCBjYW5jZWwgYW55IHBlbmRpbmcgV2ViQXV0aG4gY2VyZW1vbnkgdGhhdCBp
cyBhc3NvY2lhdGVkIHdpdGggdGhlIGZyYW1lLiBUbyBwcm92ZQorICAgICAgICB0aGUgYXNzb2Np
YXRpb24sIGEgR2xvYmFsRnJhbWVJZGVudGlmaWVyIGlzIGJyaWRnZWQgaW50byBXZWJBdXRoZW50
aWNhdGlvblJlcXVlc3REYXRhLiBOYXZpZ2F0aW9uCisgICAgICAgIGNhbmNlbCBpcyBkb25lIGlu
IFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZCwgYW5k
IGRlc3RydWN0aW9uIGNhbmNlbCBpcyBkb25lCisgICAgICAgIGluIFdlYlByb2Nlc3NQcm94eTo6
ZGlkRGVzdHJveUZyYW1lIGFuZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUuCisgICAgICAgIDIp
IFZpYSBVSS4gVGhpcyBwYXRoIGlzIHNpbXBseSBicmlkZ2VkIC1bX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbCBjYW5jZWxdIGludG8gQXV0aGVudGljYXRvck1hbmFnZXIuCisgICAgICAgIE5vdGVk
LCB0aGlzIHBhdGNoIGZvbGxvd3MgdGhlIHNwZWMgdG8gd2FpdCB1bnRpbCB0aW1lIG91dCB0byBu
b3RpZnkgUlBzLgorICAgICAgICBSZWZlcmVuY2VzOiBpKSBTdGVwIDIwIG9mIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCwgaWkpIFN0ZXAgMTggb2YKKyAg
ICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNnZXRBc3NlcnRpb24KKworICAg
ICAgICBBcyBmb3Igd2hhdCB0aGUgY2FuY2VsIGFjdHVhbGx5IGRvZXMsIGl0OgorICAgICAgICAx
KSBzdG9wcyBhbnkgSElEL05GQyBzY2FubmluZzsKKyAgICAgICAgMikgc2VuZHMgQ1RBUEhJRF9D
QU5DRUwgdG8gYW55IEhJRCBhdXRoZW50aWNhdG9ycyB0aGF0IGhhdmUgYmVlbiBhZGRlZC4gUmVm
ZXJlbmNlOgorICAgICAgICBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4w
LXBzLTIwMTkwMTMwL2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1w
cy0yMDE5MDEzMC5odG1sI3VzYi1oaWQtY2FuY2VsCisgICAgICAgIFNlbmRpbmcgQ1RBUEhJRF9D
QU5DRUwsIGhvd2V2ZXIsIGlzIG5vdCB0cml2aWFsLiBBbiBhYnN0cmFjdCBjbGFzcyBGaWRvQXV0
aGVudGljYXRvciBpcyBjcmFmdGVkIHRvCisgICAgICAgIGRvIHRoaXMgbGFib3IgZm9yIGJvdGgg
Q3RhcEF1dGhlbnRpY2F0b3IgYW5kIFUyZkF1dGhlbnRpY2F0b3IgZHVyaW5nIHRoZSB0aW1lIG9m
IGRlc3RydWN0aW9ucy4KKyAgICAgICAgTm90ZWQ6IFRoZSBDdGFwSGlkRHJpdmVyIGlzIHRoZSBv
bmx5IEN0YXBEcml2ZXIgaW1wbGVtZW50cyB0aGUgY2FuY2VsIG1ldGhvZC4gU2luY2UgdGhlIG1l
c3NhZ2UKKyAgICAgICAgaXMgc2VudCBkdXJpbmcgc3RhdGUgcmVzZXQsIGxpZmVjeWNsZSBvZiB0
aGUgSGlkQ29uZW5jdGlvbiBhbmQgSGlkU2VydmljZSB3aGljaCBtYW5hZ2UgdGhlIHVuZGVybHlp
bmcKKyAgICAgICAgSU9ISUREZXZpY2VSZWYgaXMgdmVyeSBoYXJkIHRvIGhvbGQuIFRoaXMgaXMg
cmVxdWlyZWQgZm9yIHRoZSByZWd1bGFyIGFzeW5jIHNlbmRlci4gVGhlcmVmb3JlLAorICAgICAg
ICBIaWRDb25uZWN0aW9uOjpzZW5kU3luYyBpcyBjcmFmdGVkIHRvIHNlbmQgdGhlIG1lc3NhZ2Ug
c3luY2hyb25vdXNseSB0byBnZXQgcmlkIG9mIHRoZSB0ZWRpb3VzbmVzcworICAgICAgICBvZiBt
YW5hZ2luZyB0aG9zZSBsaWZlY3ljbGVzLgorCisgICAgICAgIFAuUy4gVmVjdG9yOjpncm93IGRv
ZXNuJ3QgaW5pdGlhbGl6ZSBQT0QgdHlwZXMuIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBhbHNvIGFw
cGVuZHMgaXQgd2l0aCBtZW1zZXQKKyAgICAgICAgZm9yIEZpZG9IaWRQYWNrZXQuCisKKyAgICAg
ICAgUC5TLlMuIFRoaXMgcGF0Y2ggYWxzbyBzaW1wbGlmaWVzIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudCBieTogaSkgbW92aW5nIGNvZGUgZnJvbSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQKKyAgICAgICAgdG8gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LCBh
bmQgaWkpIHVzaW5nIHNlbmRXaXRoQXN5bmNSZXBseS4gVGhlIGxhdHRlciBhbGxvd3MgdXMgdG8K
KyAgICAgICAgZ2V0IHJpZCBvZiB0aGUgY29tcGxleCBtZWNoYW5pc20gb2YgZW5zdXJpbmcgdGhl
IHJpZ2h0IHJlcGx5IGlzIHJldHVybmVkLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlv
blBhbmVsOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25Q
YW5lbDo6Y2FuY2VsIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgY2FuY2VsXSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFn
ZXI6OmNhbmNlbFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdl
cjo6Y2xlYXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpy
dW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXNldFN0
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRv
ck1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
SGlkQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpIaWRDb25uZWN0aW9uOjppc0luaXRp
YWxpemVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SGlkQ29ubmVjdGlvbjo6c2V0SXNJbml0
aWFsaXplZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hp
ZENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246On5IaWRDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SGlkQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OkhpZENvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6SGlkQ29ubmVj
dGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OnJlZ2lzdGVyRGF0
YVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENv
bm5lY3Rpb246OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlv
bjo6dGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnNlbmRT
eW5jKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnNlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVz
dERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnJlcXVlc3RSZXBseSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNh
dG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRpY2F0b3I6OkN0YXBBdXRoZW50
aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50
aWFsKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbik6
CisgICAgICAgIChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjp0cnlEb3duZ3JhZGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9y
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcERyaXZl
ci5oOgorICAgICAgICAoV2ViS2l0OjpDdGFwRHJpdmVyOjpjYW5jZWwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OndyaXRlKToKKyAgICAgICAgKFdlYktp
dDo6Q3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZWFkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhp
ZERyaXZlcjo6V29ya2VyOjpyZXR1cm5NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhp
ZERyaXZlcjo6V29ya2VyOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6
Oldvcmtlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6Y29udGlu
dWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVy
Ojpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBI
aWREcml2ZXI6OnJldHVyblJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZl
cjo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpjYW5jZWwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvQXV0aGVudGlj
YXRvci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvblBhbmVsLmNwcC4KKyAgICAgICAgKFdlYktpdDo6Rmlkb0F1dGhlbnRpY2F0
b3I6OkZpZG9BdXRoZW50aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6Rmlkb0F1dGhlbnRpY2F0
b3I6On5GaWRvQXV0aGVudGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OkZpZG9BdXRoZW50aWNh
dG9yOjpkcml2ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpGaWRvQXV0aGVudGljYXRvcjo6
cmVsZWFzZURyaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vRmlkb0F1dGhlbnRpY2F0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Rmlkb1NlcnZpY2U6OmNvbnRpbnVlQWZ0ZXJHZXRJbmZvKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VTJmQXV0aGVudGljYXRvcjo6VTJmQXV0aGVudGljYXRvcik6CisgICAgICAgIChX
ZWJLaXQ6OlUyZkF1dGhlbnRpY2F0b3I6Omlzc3VlQ29tbWFuZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZERl
c3Ryb3lGcmFtZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3I6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxh
dGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lOjpmcm9tQ29yZUZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuaDoKKwogMjAxOS0xMC0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTExMzguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Ny
ZWRlbnRpYWxzQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlh
bG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwCmluZGV4IDJmMDM4OTU0OTZjNDA3
YjY2YmFkZjU3NWRkMzJiNWZjNTg3YjM2YmUuLmQzMDlkOGJhNGQ1M2M3YzI5NzY5MmE4MTdmYTNl
YWNhYjAxOTM3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlh
bG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6OmdldChDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBDcmVkZW50aWFsUHJvCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cigpLmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCksIG9wdGlvbnMucHVibGljS2V5LnZhbHVlKCksIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5j
ZXN0b3JzKCksIFdURk1vdmUob3B0aW9ucy5zaWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAg
ICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpLmRpc2NvdmVy
RnJvbUV4dGVybmFsU291cmNlKCptX2RvY3VtZW50LCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgp
LCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9wdGlvbnMuc2ln
bmFsKSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6
OnN0b3JlKGNvbnN0IEJhc2ljQ3JlZGVudGlhbCYsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlz
ZSkKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0
ZShDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9ucywgQ3JlZGVudAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IoKS5jcmVhdGUobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgb3B0aW9ucy5w
dWJsaWNLZXkudmFsdWUoKSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RG
TW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fZG9jdW1lbnQt
PnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuY3JlYXRlKCptX2RvY3VtZW50LCBv
cHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9y
cygpLCBXVEZNb3ZlKG9wdGlvbnMuc2lnbmFsKSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZv
aWQgQ3JlZGVudGlhbHNDb250YWluZXI6OnByZXZlbnRTaWxlbnRBY2Nlc3MoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRl
eCA0M2EzZGY0YWM1MGQ0YTA0YTA4YWI5ODgwZDU2NWFlMDc5NGVjYmNjLi44ZGNkMjBkMDNmMWQz
YWM1NTgxNjY5ZDdjNWQ4ZjA1OTkyMzkzN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsLmgiCkBAIC0xMzUs
MTAgKzEzNiwxMyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6c2V0Q2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0bwogICAgIG1fY2xpZW50ID0gV1RG
TW92ZShjbGllbnQpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3Rv
cnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2Um
JiBwcm9taXNlKSBjb25zdAordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZShj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxB
Ym9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBj
b25zdAogewogICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRl
cm5hbDsKIAorICAgIGNvbnN0IGF1dG8mIGNhbGxlck9yaWdpbiA9IGRvY3VtZW50LnNlY3VyaXR5
T3JpZ2luKCk7CisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOworICAgIEFTU0VS
VChmcmFtZSk7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcu
CiAgICAgLy8gU3RlcCAxLCAzLCAxNiBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgogICAgIC8v
IFN0ZXAgMi4KQEAgLTE4NSw3ICsxODksNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6Y3JlYXRlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2NsaWVu
dERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnRE
YXRhSnNvbiA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgYWJvcnRTaWduYWwgPSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKGNvbnN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoYWJvcnRTaWduYWwgJiYgYWJv
cnRTaWduYWwtPmFib3J0ZWQoKSkgewogICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0
aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwuIl9zIH0pOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjAwLDEzICsyMDQsMTYgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmNyZWF0ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25z
dAogICAgICAgICBwcm9taXNlLnJlamVjdChleGNlcHRpb24udG9FeGNlcHRpb24oKSk7CiAgICAg
fTsKICAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGlu
IHRoZSBtZXNzZW5nZXIuCi0gICAgbV9jbGllbnQtPm1ha2VDcmVkZW50aWFsKGNsaWVudERhdGFK
c29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIG1fY2xp
ZW50LT5tYWtlQ3JlZGVudGlhbCgqZnJhbWUsIGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywg
V1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6
ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNhbGxlck9y
aWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBi
b29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRT
aWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3ZvaWQgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0
aW9ucywgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYm
IGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0CiB7CiAgICAg
dXNpbmcgbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckludGVybmFsOwogCisgICAg
YXV0byYgY2FsbGVyT3JpZ2luID0gZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRv
KiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisgICAgQVNTRVJUKGZyYW1lKTsKICAgICAvLyBU
aGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNj
cmVhdGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTdGVwIDEsIDMs
IDEzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIuCiAgICAgLy8gU3RlcCAyLgpAQCAtMjUzLDcg
KzI2MCw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRl
cm5hbFNvdXJjZShjb25zdCBTZWN1cml0eU9yaWdpbiYKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3Zl
KGNsaWVudERhdGFKc29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFs
ID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBt
dXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShj
bGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25hbCA9
IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bERhdGEmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgp
KSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAi
QWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0y
NjgsNyArMjc1LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJv
bUV4dGVybmFsU291cmNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJgogICAgICAgICBwcm9taXNlLnJl
amVjdChleGNlcHRpb24udG9FeGNlcHRpb24oKSk7CiAgICAgfTsKICAgICAvLyBBc3luYyBvcGVy
YXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAg
bV9jbGllbnQtPmdldEFzc2VydGlvbihjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX2NsaWVudC0+Z2V0QXNzZXJ0aW9uKCpmcmFt
ZSwgY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
IHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJv
bWlzZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IDljNjVhZTZhNjc5YmE0OTc5NTky
ZTIyOTk5Yjg5M2VhYTM2NjIxOWMuLmJkYWE1NTUwMDYzYWQ5OTAxMDg0YWU5OWM4Njc0YzViZGJi
NDc5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBBYm9ydFNpZ25hbDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudDsKIGNsYXNzIEJhc2ljQ3JlZGVudGlhbDsKLWNsYXNzIFNlY3VyaXR5T3JpZ2lu
OworY2xhc3MgRG9jdW1lbnQ7CiAKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKQEAgLTUz
LDggKzUzLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ+JiYpOwogCiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCBzdGF0aWMgbWV0aG9kcyBvZiBQdWJs
aWNLZXlDcmVkZW50aWFsLgotICAgIHZvaWQgY3JlYXRlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwg
Y29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIGJvb2wgc2FtZU9yaWdp
bldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2Um
JikgY29uc3Q7Ci0gICAgdm9pZCBkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBTZWN1
cml0eU9yaWdpbiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIGJv
b2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVu
dGlhbFByb21pc2UmJikgY29uc3Q7CisgICAgdm9pZCBjcmVhdGUoY29uc3QgRG9jdW1lbnQmLCBj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgYm9vbCBzYW1lT3JpZ2lu
V2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYm
KSBjb25zdDsKKyAgICB2b2lkIGRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgYm9vbCBzYW1l
T3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJv
bWlzZSYmKSBjb25zdDsKICAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJikgY29uc3Q7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDYxMTA0ZjcwZjQzODI5ZTE5NTA1MmU5ZDRhMTYwZjliYzFkODAy
YzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCIK
LQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yQ2xpZW50OjpyZXF1ZXN0UmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBXZWJD
b3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSYgZXhjZXB0aW9uKQotewotICAgIGlmIChtZXNzYWdlSWQgIT0gbV9hY2N1bXVsYXRl
ZFJlcXVlc3RNZXNzYWdlSWQgLSAxKQotICAgICAgICByZXR1cm47Ci0gICAgbV9wZW5kaW5nQ29t
cGxldGlvbkhhbmRsZXIoZGF0YSwgZXhjZXB0aW9uKTsKLX0KLQotdm9pZCBBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQ6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2
YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCByZXN1bHQpCi17Ci0gICAgYXV0
byBoYW5kbGVyID0gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMudGFrZShtZXNzYWdl
SWQpOwotICAgIGhhbmRsZXIocmVzdWx0KTsKLX0KLQotdWludDY0X3QgQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50OjpzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICBpZiAobV9wZW5kaW5nQ29tcGxldGlvbkhh
bmRsZXIpCi0gICAgICAgIG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyBOb3RBbGxv
d2VkRXJyb3IsICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3Qu
Il9zIH0pOwotCi0gICAgbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRs
ZXIpOwotICAgIHJldHVybiBtX2FjY3VtdWxhdGVkUmVxdWVzdE1lc3NhZ2VJZCsrOwotfQotCi11
aW50NjRfdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OmFkZFF1ZXJ5Q29tcGxldGlv
bkhhbmRsZXIoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgdWludDY0
X3QgbWVzc2FnZUlkID0gbV9hY2N1bXVsYXRlZFF1ZXJ5TWVzc2FnZUlkKys7Ci0gICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3BlbmRpbmdRdWVyeUNvbXBsZXRpb25IYW5kbGVycy5hZGQobWVzc2FnZUlk
LCBXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwotICAgIHJldHVybiBtZXNzYWdlSWQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQuaAppbmRleCAwMzMwY2RhMzgyNzdlNjFmZjE2M2QzNTA2OTE2N2RlMGYy
NWZmZDc4Li43NWJiZGM5YWExYTAxY2Q5ZWMwNDk2N2NlODFjYzE3NTJmMjMwYWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRnJhbWU7CiAKIHN0cnVj
dCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOwogc3RydWN0IFB1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhOwpAQCAtNTAsMjYgKzUxLDkgQEAgcHVibGljOgogICAgIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudCgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLSAgICAvLyBTZW5kZXJzLgotICAg
IHZpcnR1YWwgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gs
IGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRpb24oY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21w
bGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0KLSAgICAvLyBSZWNlaXZlcnMuCi0gICAgdm9pZCByZXF1
ZXN0UmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKTsKLSAgICB2b2lkIGlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90
IG1lc3NhZ2VJZCwgYm9vbCk7Ci0KLXByb3RlY3RlZDoKLSAgICAvLyBPbmx5IG9uZSByZXF1ZXN0
IGlzIGFsbG93ZWQgYXQgb25lIHRpbWUuIEEgbmV3IHJlcXVlc3Qgd2lsbCBjYW5jZWwgYW55IHBl
bmRpbmcgcmVxdWVzdC4KLSAgICAvLyBBIG1lc3NhZ2UgaWQgdGhhdCBpcyB0aWVkIHRvIHRoZSBy
ZXF1ZXN0IHdpbCBiZSBnZW5lcmF0ZWQgZWFjaCB0aW1lIHRvIHByZXZlbnQgbWlzbWF0Y2hpbmcg
cmVzcG9uc2VzLgotICAgIHVpbnQ2NF90IHNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdWludDY0X3QgYWRkUXVlcnlDb21wbGV0aW9u
SGFuZGxlcihRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpOwotCi1wcml2YXRlOgotICAgIHVpbnQ2
NF90IG1fYWNjdW11bGF0ZWRSZXF1ZXN0TWVzc2FnZUlkIHsgMSB9OwotICAgIFJlcXVlc3RDb21w
bGV0aW9uSGFuZGxlciBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcjsKLSAgICB1aW50NjRfdCBt
X2FjY3VtdWxhdGVkUXVlcnlNZXNzYWdlSWQgeyAxIH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
UXVlcnlDb21wbGV0aW9uSGFuZGxlcj4gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnM7
CisgICAgdmlydHVhbCB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0IEZyYW1lJiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGdldEFz
c2VydGlvbihjb25zdCBGcmFtZSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYm
KSB7IH07CisgICAgdmlydHVhbCB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oCmluZGV4IDRhY2MzZmY2
MmI5NTI0OWY0ODdiMjJjZTg0YWM0MTc5ZjRjMzE4NmYuLjc4MTE0ZmFlYjdiN2QzOWZjYjY2OWVi
YjI4YTA4ZTgxZTdmNWVhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuaApAQCAtNTMsOCAr
NTMsNyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2RlTWFrZUNyZWRlbml0
YWxSZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aQogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVp
bnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWls
YWJpbGl0eSk7CiAKIC8vIFJlcHJlc2VudHMgQ1RBUCByZXF1ZXN0cyB3aXRoIGVtcHR5IHBhcmFt
ZXRlcnMsIGluY2x1ZGluZwotLy8gQXV0aGVudGljYXRvckdldEluZm8sIEF1dGhlbnRpY2F0b3JD
YW5jZWwsIEF1dGhlbnRpY2F0b3JSZXNldCBhbmQKLS8vIEF1dGhlbnRpY2F0b3JHZXROZXh0QXNz
ZXJ0aW9uIGNvbW1hbmRzLgorLy8gQXV0aGVudGljYXRvckdldEluZm8sIEF1dGhlbnRpY2F0b3JS
ZXNldCBhbmQgQXV0aGVudGljYXRvckdldE5leHRBc3NlcnRpb24gY29tbWFuZHMuCiBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChD
dGFwUmVxdWVzdENvbW1hbmQpOwogCiB9IC8vIG5hbWVzcGFjZSBmaWRvCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcApp
bmRleCAxYjkxMmQ5OGQ5ZjA0ZjMwNzRhMWI4ZTFhNjI2MDFhNDJmYWYzNTdkLi5iMTJkYWVmZWUx
NGU1MTJiNGZmNGE3NGExMjYxMDQxZDczNTlkNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKQEAgLTE0Niw2
ICsxNDYsNyBAQCBzaXplX3QgRmlkb0hpZE1lc3NhZ2U6Om51bVBhY2tldHMoKSBjb25zdAogCiBG
aWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2UodWludDMyX3QgY2hhbm5lbElkLCBGaWRvSGlk
RGV2aWNlQ29tbWFuZCB0eXBlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiAgICAgOiBt
X2NoYW5uZWxJZChjaGFubmVsSWQpCisgICAgLCBtX2NtZCh0eXBlKQogewogICAgIHVpbnQ4X3Qg
c2VxdWVuY2UgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKaW5kZXggMjZiODBhYThhNWYxMzk2M2M3NjhlN2U5
MjNiYmFhYjJiODdiNWVlZS4uNTIzMjIwYTE2ZmJmZDM0MzllNTEwZTUyNzFiMTliZTY0Njc5OTZj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9I
aWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9G
aWRvSGlkUGFja2V0LmNwcApAQCAtOTksNyArOTksOSBAQCBWZWN0b3I8dWludDhfdD4gRmlkb0hp
ZEluaXRQYWNrZXQ6OmdldFNlcmlhbGl6ZWREYXRhKCkgY29uc3QKICAgICBzZXJpYWxpemVkLmFw
cGVuZCgobV9wYXlsb2FkTGVuZ3RoID4+IDgpICYgMHhmZik7CiAgICAgc2VyaWFsaXplZC5hcHBl
bmQobV9wYXlsb2FkTGVuZ3RoICYgMHhmZik7CiAgICAgc2VyaWFsaXplZC5hcHBlbmQobV9kYXRh
LmJlZ2luKCksIG1fZGF0YS5zaXplKCkpOworICAgIGF1dG8gb2Zmc2V0ID0gc2VyaWFsaXplZC5z
aXplKCk7CiAgICAgc2VyaWFsaXplZC5ncm93KGtIaWRQYWNrZXRTaXplKTsKKyAgICBtZW1zZXQo
c2VyaWFsaXplZC5kYXRhKCkgKyBvZmZzZXQsIDAsIGtIaWRQYWNrZXRTaXplIC0gb2Zmc2V0KTsK
IAogICAgIHJldHVybiBzZXJpYWxpemVkOwogfQpAQCAtMTQ3LDcgKzE0OSw5IEBAIFZlY3Rvcjx1
aW50OF90PiBGaWRvSGlkQ29udGludWF0aW9uUGFja2V0OjpnZXRTZXJpYWxpemVkRGF0YSgpIGNv
bnN0CiAgICAgc2VyaWFsaXplZC5hcHBlbmQobV9jaGFubmVsSWQgJiAweGZmKTsKICAgICBzZXJp
YWxpemVkLmFwcGVuZChtX3NlcXVlbmNlKTsKICAgICBzZXJpYWxpemVkLmFwcGVuZChtX2RhdGEu
YmVnaW4oKSwgbV9kYXRhLnNpemUoKSk7CisgICAgYXV0byBvZmZzZXQgPSBzZXJpYWxpemVkLnNp
emUoKTsKICAgICBzZXJpYWxpemVkLmdyb3coa0hpZFBhY2tldFNpemUpOworICAgIG1lbXNldChz
ZXJpYWxpemVkLmRhdGEoKSArIG9mZnNldCwgMCwga0hpZFBhY2tldFNpemUgLSBvZmZzZXQpOwog
CiAgICAgcmV0dXJuIHNlcmlhbGl6ZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBkYTYyNzljYzUx
NTM2Mjc4NzQ5OGUzMmQ5YmFjYjAyY2M5MDllMWQuLmE4ODg4NmY1Yjk0NjI0ZGIyNDQyMDE0Y2Fh
YzEyZWE2ODBmNjJhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNTksNyArMjU5LDYgQEAgTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
clByb2Nlc3Nvci5jcHAKIAogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuY3BwCi1Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5j
cHAKIE1vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5jcHAKIE1vZHVsZXMvd2Vi
YXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vYXBkdS9B
cGR1Q29tbWFuZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBjYTJhNGVhNjlhZTNiNmMxZjk4NGUwZjYzYWIxMjc4Y2M3ZmJi
MzAzLi5jYmQ1MzQyZTA5ZWRjZDk1ZTczNjYwZmNhMjhmZDY5OGExODg4MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04Njk2
LDcgKzg2OTYsNiBAQAogCQk1NzYwODI0RjIwMTE4RDhEMDAxMTY2NzggLyogSlNCYXNpY0NyZWRl
bnRpYWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNpY0NyZWRlbnRpYWxDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYwODI1NjIwMTFCRTAyMDAx
MTY2NzggLyogSlNBdXRoZW50aWNhdG9yUmVzcG9uc2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNBdXRoZW50aWNhdG9yUmVzcG9uc2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI5MzIwMkJBOTUz
MDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3NjgxNDI4MUU2Rjk4QUQwMEU3Nzc1NCAvKiBFY2RoS2V5RGVy
aXZlUGFyYW1zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBFY2RoS2V5RGVyaXZlUGFyYW1zLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTc2ODE0MjkxRTZGOTlDMTAwRTc3NzU0IC8qIENyeXB0b0FsZ29y
aXRobUVjZGhLZXlEZXJpdmVQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzY4MTQzNDFFNkZFM0U4MDBFNzc3NTQgLyogQ3J5cHRvQWxnb3JpdGht
RUNESE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9B
bGdvcml0aG1FQ0RITWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5Nzg1
LDcgKzE5Nzg0LDYgQEAKIAkJCQk1NzMwM0MxRDIwMDlBOTg2MDAzNTU5NjUgLyogQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaWRsICovLAogCQkJCTU3MzAzQzQ0MjAxMDVCM0QwMDM1
NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovLAogCQkJCTU3MzAzQzQzMjAx
MDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLywKLQkJCQk1NzYw
ODI5MzIwMkJBOTUzMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNw
cCAqLywKIAkJCQk1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yQ2xpZW50LmggKi8sCiAJCQkJNTczMDNCQ0YyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhl
bnRpY2F0b3JSZXNwb25zZS5oICovLAogCQkJCTU3MzAzQkQxMjAwODdBODMwMDM1NTk2NSAvKiBB
dXRoZW50aWNhdG9yUmVzcG9uc2UuaWRsICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCA3
NDUwZjI1Njc2YWMxMjdjNjM0OWNmZWM2ZTlhMGZjNTYzNGRlN2U3Li5lYjM4MWNiYTMxNWIyNTUw
MTZiNTdlOTlmZDI3NWQ2OWE4NmZiNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApAQCAtODMs
NiArODMsNyBAQCBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CiAg
ICAgICAgIGJvb2wgZmFzdERhdGFBcnJpdmFsIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBjb250
aW51ZUFmdGVyRXJyb3JEYXRhIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBjYW5Eb3duZ3JhZGUg
eyBmYWxzZSB9OworICAgICAgICBib29sIGV4cGVjdENhbmNlbCB7IGZhbHNlIH07CiAKICAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SGlkQ29uZmln
dXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKQEAgLTE1OSw3ICsxNjAsNyBAQCBPcHRpb25hbDxN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1v
Y2tXZWJBdXRoZW50aQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBwYXlsb2FkQmFzZTY0IDw8IHN0YWdl
IDw8IHN1YlN0YWdlIDw8IGVycm9yIDw8IGlzVTJmIDw8IGtlZXBBbGl2ZSA8PCBmYXN0RGF0YUFy
cml2YWwgPDwgY29udGludWVBZnRlckVycm9yRGF0YSA8PCBjYW5Eb3duZ3JhZGU7CisgICAgZW5j
b2RlciA8PCBwYXlsb2FkQmFzZTY0IDw8IHN0YWdlIDw8IHN1YlN0YWdlIDw8IGVycm9yIDw8IGlz
VTJmIDw8IGtlZXBBbGl2ZSA8PCBmYXN0RGF0YUFycml2YWwgPDwgY29udGludWVBZnRlckVycm9y
RGF0YSA8PCBjYW5Eb3duZ3JhZGUgPDwgZXhwZWN0Q2FuY2VsOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgpAQCAtMTg0LDYgKzE4NSw4IEBAIE9wdGlvbmFsPE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuY2FuRG93bmdyYWRlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5leHBlY3RDYW5jZWwpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aWRsCmluZGV4IGJkZWI4NjFjYzllNmM0YzYyN2EwNzMyZDdhZTZhNzQ1Njc5YTZmZGQuLjE2NDcw
ZjkyNzI5ZGJhYTJhOTE1MmEwNTZiN2Y4YzVmNzQ1Y2MzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmlkbApAQCAtOTEsNiArOTEsNyBAQAogICAgIGJvb2xlYW4gZmFzdERhdGFBcnJpdmFsID0g
ZmFsc2U7CiAgICAgYm9vbGVhbiBjb250aW51ZUFmdGVyRXJyb3JEYXRhID0gZmFsc2U7CiAgICAg
Ym9vbGVhbiBjYW5Eb3duZ3JhZGUgPSBmYWxzZTsKKyAgICBib29sZWFuIGV4cGVjdENhbmNlbCA9
IGZhbHNlOwogfTsKIAogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGJhZTdjMzE5
ZTQ3NjQ0NWE5Y2UzNmU2MmQ3NmVmZWRkZjY2YWIxMjguLmMzOWMyOTc1NTY3NmUyYTY1MDhmYTdm
ZTQwZDk2ODEyNTRhZjc2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE0Niw3
ICsxNDYsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBWaWV3VXBkYXRlRGlzcGF0Y2hl
ciBcCiAgICAgVmlzaXRlZExpbmtTdG9yZSBcCiAgICAgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xs
ZXIgXAotICAgIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvciBcCiAgICAgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkgXAogICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uIFwKICAgICBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGJmOTZjODYwOGYwYWFj
MzYwNmUwMzI5YmM5NjVkNjA5Y2Y2ODcxYzIuLjMxZWUxMTg5MDI1NTc1NzUxNzYxMDA2ODIzOWIx
NjJhMDZmZjA3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNDEyLDYgKzQxMiw3IEBAIFVJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuY3BwCitVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9GaWRvQXV0aGVudGljYXRvci5jcHAKIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vVTJmQXV0aGVudGljYXRvci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCmluZGV4IDAwZDJkMWEy
NGMyMWMyOWUyOTc1OGZiMmZmYmI1YWFjZjU3ZjNiYmYuLjg3YTJmMDY1ODNkZTIxMDY2ZDE1YzUy
NTNlZjIyNDEzMDZmNTIzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAKQEAgLTI5LDIyICsyOSwzMSBA
QAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJBUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKIAogbmFt
ZXNwYWNlIEFQSSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1SZWY8V2ViQXV0aGVudGlj
YXRpb25QYW5lbD4gV2ViQXV0aGVudGljYXRpb25QYW5lbDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
cnBJZCkKK1JlZjxXZWJBdXRoZW50aWNhdGlvblBhbmVsPiBXZWJBdXRoZW50aWNhdGlvblBhbmVs
OjpjcmVhdGUoY29uc3QgQXV0aGVudGljYXRvck1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFN0cmlu
ZyYgcnBJZCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJBdXRoZW50aWNhdGlvblBh
bmVsKHJwSWQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJBdXRoZW50aWNhdGlvblBh
bmVsKG1hbmFnZXIsIHJwSWQpKTsKIH0KIAotV2ViQXV0aGVudGljYXRpb25QYW5lbDo6V2ViQXV0
aGVudGljYXRpb25QYW5lbChjb25zdCBTdHJpbmcmIHJwSWQpCi0gICAgOiBtX3JwSWQocnBJZCkK
K1dlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoY29uc3QgQXV0
aGVudGljYXRvck1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcnBJZCkKKyAgICA6IG1f
bWFuYWdlcihtYWtlV2Vha1B0cihtYW5hZ2VyKSkKKyAgICAsIG1fcnBJZChycElkKQogICAgICwg
bV9jbGllbnQoV1RGOjptYWtlVW5pcXVlUmVmPFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ+
KCkpCiB7CiB9CiAKIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6On5XZWJBdXRoZW50aWNhdGlvblBh
bmVsKCkgPSBkZWZhdWx0OwogCit2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OmNhbmNlbCgp
IGNvbnN0Cit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5jYW5jZWxS
ZXF1ZXN0KCp0aGlzKTsKK30KKwogdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpzZXRDbGll
bnQoVW5pcXVlUmVmPFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ+JiYgY2xpZW50KQogewog
ICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggNzUwNDg4
NmMwNGMwMzNhYTI2ZDI1ZDhmMTM1MDNkNWY5Zjk3NTgyZi4uNzhlN2VlOTU2OGZiYzEwMjNmMGFm
ODFkMWY3YTNhMmViY2Y2ZTM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC0zMiwyMyArMzIsMjkgQEAK
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOworfQor
CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDsK
IAogY2xhc3MgV2ViQXV0aGVudGljYXRpb25QYW5lbCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBs
PE9iamVjdDo6VHlwZTo6V2ViQXV0aGVudGljYXRpb25QYW5lbD4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxXZWJBdXRoZW50aWNhdGlvblBhbmVsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxX
ZWJBdXRoZW50aWNhdGlvblBhbmVsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBycElkKTsKKyAgICBz
dGF0aWMgUmVmPFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw+IGNyZWF0ZShjb25zdCBXZWJLaXQ6OkF1
dGhlbnRpY2F0b3JNYW5hZ2VyJiwgY29uc3QgU3RyaW5nJiBycElkKTsKICAgICB+V2ViQXV0aGVu
dGljYXRpb25QYW5lbCgpOwogCiAgICAgV1RGOjpTdHJpbmcgcnBJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcnBJZDsgfQorICAgIHZvaWQgY2FuY2VsKCkgY29uc3Q7CiAKICAgICBjb25zdCBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5n
ZXQoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50KFVuaXF1ZVJlZjxXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50PiYmKTsKIAogcHJpdmF0ZToKLSAgICBXZWJBdXRoZW50aWNhdGlvblBhbmVsKGNv
bnN0IFN0cmluZyYgcnBJZCk7CisgICAgV2ViQXV0aGVudGljYXRpb25QYW5lbChjb25zdCBXZWJL
aXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyJiwgY29uc3QgU3RyaW5nJiBycElkKTsKIAorICAgIFdl
YWtQdHI8V2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcj4gbV9tYW5hZ2VyOwogICAgIFdURjo6
U3RyaW5nIG1fcnBJZDsKICAgICBVbmlxdWVSZWY8V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dD4gbV9jbGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCA2MjkxMzJh
YjdhOWVkYmNkODUwNDE4MmJiYjQxNGFjN2Y1NTUyYWUyLi4xNzI4ZTZmNTM4ZTQ1NzE4OTdhYTRi
ZTBhZWZmZjgyZDA2Y2E1YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNjcs
NiArNjcsOSBAQCAtICh2b2lkKXNldERlbGVnYXRlOihpZDxfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsRGVsZWdhdGU+KWRlbGVnYXRlCiAKIC0gKHZvaWQpY2FuY2VsCiB7CisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKyAgICBfcGFuZWwtPmNhbmNlbCgpOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IDFjNDFh
M2MyODVlZjA3MjQ1ZWUxY2U1MjlhNTY1NjgxZjI0ODM1NTAuLmQwMzI4ODA5OTU3MjA3MzhjMzlj
MGY0YjI3NmE2NzQxZmE4YTI0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5j
cHAKQEAgLTE2NCw2ICsxNjQsMzAgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aGFuZGxl
UmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYgZGF0YSwgQ2EKICAgICBydW5Q
YW5lbCgpOwogfQogCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KGNv
bnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJiBwYWdlSUQsIGNvbnN0IE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4mIGZyYW1lSUQpCit7CisgICAgaWYgKCFtX3BlbmRpbmdDb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX3BlbmRpbmdSZXF1ZXN0RGF0YS5m
cmFtZUlEKTsKKyAgICBpZiAobV9wZW5kaW5nUmVxdWVzdERhdGEuZnJhbWVJRC0+cGFnZUlEICE9
IHBhZ2VJRCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChmcmFtZUlEICYmIGZyYW1lSUQgIT0g
bV9wZW5kaW5nUmVxdWVzdERhdGEuZnJhbWVJRC0+ZnJhbWVJRCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGludm9rZVBlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb25EYXRhIHsgTm90QWxs
b3dlZEVycm9yLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iX3MgfSk7CisgICAgY2xlYXJTdGF0ZSgp
OworICAgIG1fcmVxdWVzdFRpbWVPdXRUaW1lci5zdG9wKCk7Cit9CisKKy8vIFRoZSBmb2xsb3dp
bmcgaW1wbGVtZW50cyBwYXJ0IG9mIFN0ZXAgMjAuIG9mIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93
ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbAorLy8gYW5kIHBhcnQgb2YgU3RlcCAxOC4gb2YgaHR0
cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNnZXRBc3NlcnRpb24gYXMgb2YgNCBNYXJjaCAy
MDE5OgorLy8gIklmIHRoZSB1c2VyIGV4ZXJjaXNlcyBhIHVzZXIgYWdlbnQgdXNlci1pbnRlcmZh
Y2Ugb3B0aW9uIHRvIGNhbmNlbCB0aGUgcHJvY2VzcywiLgordm9pZCBBdXRoZW50aWNhdG9yTWFu
YWdlcjo6Y2FuY2VsUmVxdWVzdChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBh
bmVsKQoreworICAgIGlmICghbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIgfHwgbV9wZW5kaW5n
UmVxdWVzdERhdGEucGFuZWwuZ2V0KCkgIT0gJnBhbmVsKQorICAgICAgICByZXR1cm47CisgICAg
cmVzZXRTdGF0ZSgpOworfQorCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjbGVhclN0YXRl
QXN5bmMoKQogewogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldIHsKQEAgLTE3Nyw5ICsyMDEsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpjbGVhclN0YXRlKCkKIHsKICAgICBpZiAobV9wZW5kaW5nQ29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3BlbmRpbmdSZXF1ZXN0RGF0YSA9IHsgfTsKLSAg
ICBtX3NlcnZpY2VzLmNsZWFyKCk7Ci0gICAgbV9hdXRoZW50aWNhdG9ycy5jbGVhcigpOworICAg
IHJlc2V0U3RhdGUoKTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVudGlj
YXRvckFkZGVkKFJlZjxBdXRoZW50aWNhdG9yPiYmIGF1dGhlbnRpY2F0b3IpCkBAIC0yNjQsNyAr
Mjg2LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUGFuZWwoKQogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWwg
PSBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OmNyZWF0ZShnZXRScElkKG1fcGVuZGluZ1Jl
cXVlc3REYXRhLm9wdGlvbnMpKTsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbCA9IEFQ
STo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6Y3JlYXRlKCp0aGlzLCBnZXRScElkKG1fcGVuZGlu
Z1JlcXVlc3REYXRhLm9wdGlvbnMpKTsKICAgICBhdXRvJiBwYW5lbCA9ICptX3BlbmRpbmdSZXF1
ZXN0RGF0YS5wYW5lbDsKICAgICBwYWdlLT51aUNsaWVudCgpLnJ1bldlYkF1dGhlbnRpY2F0aW9u
UGFuZWwoKnBhZ2UsIHBhbmVsLCBbd2Vha1BhbmVsID0gbWFrZVdlYWtQdHIocGFuZWwpLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10gKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQgcmVzdWx0KSB7CiAgICAgICAgIC8vIFRoZSBwYW5lbCBhZGRyZXNzIGlzIHVzZWQgdG8g
ZGV0ZXJtaW5lIGlmIHRoZSBjdXJyZW50IHBlbmRpbmcgcmVxdWVzdCBpcyBzdGlsbCB0aGUgc2Ft
ZS4KQEAgLTMwNSw2ICszMjcsMTQgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW52b2tl
UGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKFJlc3BvbmQmJiByZXNwb25kKQogICAgIG1fcGVuZGlu
Z0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzcG9uZCkpOwogfQogCisKK3ZvaWQgQXV0aGVu
dGljYXRvck1hbmFnZXI6OnJlc2V0U3RhdGUoKQoreworICAgIG1fYXV0aGVudGljYXRvcnMuY2xl
YXIoKTsKKyAgICBtX3NlcnZpY2VzLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nUmVxdWVzdERhdGEg
PSB7IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGQzNzY2YWQxNDc5
NzMxNDE1ZWRlNDgyZjllOWMyZmUwMDhkM2EyNTIuLjUwMjYyNjc4YTBhODVhNGRiYTI3MDk5ZmUx
NTgzYTYxNjNhOWViMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtMzgs
NiArMzgsMTAgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBXZWJBdXRoZW50aWNhdGlvblBhbmVsOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0aGVudGljYXRvck1hbmFnZXIgOiBw
dWJsaWMgQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVyLCBwdWJsaWMgQXV0
aGVudGljYXRvcjo6T2JzZXJ2ZXIgewpAQCAtNTUsNiArNTksOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+QXV0aGVudGljYXRvck1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGhhbmRs
ZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmLCBDYWxsYmFjayYmKTsKKyAg
ICB2b2lkIGNhbmNlbFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXImLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+Jik7IC8vIENhbGxlZCBmcm9tIFdl
YlBhZ2VQcm94eS9XZWJQcm9jZXNzUHJveHkuCisgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KGNvbnN0
IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYpOyAvLyBDYWxsZWQgZnJvbSBwYW5lbCBjbGll
bnRzLgogCiAgICAgdmlydHVhbCBib29sIGlzTW9jaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKQEAgLTgyLDEwICs4OCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgdGltZU91dFRpbWVyRmly
ZWQoKTsKICAgICB2b2lkIHJ1blBhbmVsKCk7CiAgICAgdm9pZCBzdGFydFJlcXVlc3QoKTsKKyAg
ICB2b2lkIHJlc2V0U3RhdGUoKTsKIAogICAgIC8vIFJlcXVlc3Q6IFdlIG9ubHkgYWxsb3cgb25l
IHJlcXVlc3QgcGVyIHRpbWUuIEEgbmV3IHJlcXVlc3Qgd2lsbCBjYW5jZWwgYW55IHBlbmRpbmcg
b25lcy4KICAgICBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhIG1fcGVuZGluZ1JlcXVlc3RE
YXRhOwotICAgIENhbGxiYWNrIG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyOyAvLyBTaG91bGQg
YmUgaW52b2tlZCBkaXJlY3RseSwgdXNlIGludm9rZVBlbmRpbmdDb21wbGV0aW9uSGFuZGxlci4K
KyAgICBDYWxsYmFjayBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcjsgLy8gU2hvdWxkIG5vdCBi
ZSBpbnZva2VkIGRpcmVjdGx5LCB1c2UgaW52b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyLgog
ICAgIFJ1bkxvb3A6OlRpbWVyPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPiBtX3JlcXVlc3RUaW1lT3V0
VGltZXI7CiAKICAgICBWZWN0b3I8VW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlPj4gbV9zZXJ2aWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24uaAppbmRleCA0ZWFi
NWRkNzczNDEyMTEyOTlhNzI5Mzg5ZjA1ZTZlZjg5OWUxOGU3Li5lMTg3YTI0ZmQ2ZDIyYTI0OWRl
ZDcwM2JiMzZiOWFlNDQxYTJlOTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5oCkBA
IC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICAvLyBPdmVycmlkZWQgYnkgTW9ja0hpZENvbm5l
Y3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsKICAgICB2aXJ0dWFsIHZvaWQg
dGVybWluYXRlKCk7CisgICAgdmlydHVhbCBEYXRhU2VudCBzZW5kU3luYyhjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEpOwogICAgIC8vIENhbGxlciBzaG91bGQgc2VuZCBkYXRhIGFnYWluIGFm
dGVyIGNhbGxiYWNrIGlzIGludm9rZWQgdG8gY29udHJvbCBmbG93LgogICAgIHZpcnR1YWwgdm9p
ZCBzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJik7CiAgICAg
dm9pZCByZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNrKERhdGFSZWNlaXZlZENhbGxiYWNrJiYp
OwpAQCAtNjQsOCArNjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNlaXZlUmVwb3J0KFZlY3Rv
cjx1aW50OF90PiYmKTsKIAogcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pbml0aWFsaXplZCB7IGZh
bHNlIH07Ci0gICAgYm9vbCBtX3Rlcm1pbmF0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgaXNJbml0
aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXplZDsgfQorICAgIHZvaWQgc2V0
SXNJbml0aWFsaXplZChib29sIGlzSW5pdGlhbGl6ZWQpIHsgbV9pc0luaXRpYWxpemVkID0gaXNJ
bml0aWFsaXplZDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY29uc3VtZVJlcG9ydHMoKTsKQEAg
LTc4LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBDb3VsZCBxdWV1ZSBkYXRhIHJlcXVlc3Rl
ZCBieSBvdGhlciBhcHBsaWNhdGlvbnMuCiAgICAgRGVxdWU8VmVjdG9yPHVpbnQ4X3Q+PiBtX2lu
cHV0UmVwb3J0czsKICAgICBEYXRhUmVjZWl2ZWRDYWxsYmFjayBtX2lucHV0Q2FsbGJhY2s7Cisg
ICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5tbQppbmRleCBmMDc3YWU5ODEzNmI5
NDM5NTZjZGZhNjQ1NTQ0NzgzMjBkYTc0ODI1Li5mMmYxOTNjNzUwMTI0YjhjZTYzMDVjMjc1MGE2
MmExZjM0ZmFkOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24ubW0KQEAgLTYzLDcg
KzYzLDcgQEAgSGlkQ29ubmVjdGlvbjo6SGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZp
Y2UpCiAKIEhpZENvbm5lY3Rpb246On5IaWRDb25uZWN0aW9uKCkKIHsKLSAgICBBU1NFUlQobV90
ZXJtaW5hdGVkKTsKKyAgICBBU1NFUlQoIW1faXNJbml0aWFsaXplZCk7CiB9CiAKIHZvaWQgSGlk
Q29ubmVjdGlvbjo6aW5pdGlhbGl6ZSgpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgSGlkQ29ubmVj
dGlvbjo6aW5pdGlhbGl6ZSgpCiAgICAgSU9ISUREZXZpY2VTY2hlZHVsZVdpdGhSdW5Mb29wKG1f
ZGV2aWNlLmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CiAgICAgbV9pbnB1dEJ1ZmZlci5yZXNpemUoa0hpZE1heFBhY2tldFNpemUpOwogICAgIElP
SElERGV2aWNlUmVnaXN0ZXJJbnB1dFJlcG9ydENhbGxiYWNrKG1fZGV2aWNlLmdldCgpLCBtX2lu
cHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZlci5zaXplKCksICZyZXBvcnRSZWNlaXZlZCwg
dGhpcyk7Ci0gICAgbV9pbml0aWFsaXplZCA9IHRydWU7CisgICAgbV9pc0luaXRpYWxpemVkID0g
dHJ1ZTsKIH0KIAogdm9pZCBIaWRDb25uZWN0aW9uOjp0ZXJtaW5hdGUoKQpAQCAtODAsMTIgKzgw
LDIzIEBAIHZvaWQgSGlkQ29ubmVjdGlvbjo6dGVybWluYXRlKCkKICAgICBJT0hJRERldmljZVJl
Z2lzdGVySW5wdXRSZXBvcnRDYWxsYmFjayhtX2RldmljZS5nZXQoKSwgbV9pbnB1dEJ1ZmZlci5k
YXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBudWxscHRyKTsKICAgICBJT0hJ
RERldmljZVVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2RldmljZS5nZXQoKSwgQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgIElPSElERGV2aWNlQ2xvc2Uo
bV9kZXZpY2UuZ2V0KCksIGtJT0hJRE9wdGlvbnNUeXBlTm9uZSk7Ci0gICAgbV90ZXJtaW5hdGVk
ID0gdHJ1ZTsKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKK30KKworYXV0byBIaWRDb25u
ZWN0aW9uOjpzZW5kU3luYyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IERhdGFTZW50
Cit7CisgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CisgICAgYXV0byBzdGF0dXMgPSBJT0hJ
RERldmljZVNldFJlcG9ydChtX2RldmljZS5nZXQoKSwga0lPSElEUmVwb3J0VHlwZU91dHB1dCwg
a0hpZFJlcG9ydElkLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGlmIChzdGF0dXMp
IHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBzZW5kIHJlcG9ydCB0byB0aGUgYXV0aGVu
dGljYXRvcjogJWQiLCBzdGF0dXMpOworICAgICAgICByZXR1cm4gRGF0YVNlbnQ6Ok5vOworICAg
IH0KKyAgICByZXR1cm4gRGF0YVNlbnQ6OlllczsKIH0KIAogdm9pZCBIaWRDb25uZWN0aW9uOjpz
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKLSAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7CisgICAgQVNTRVJUKG1faXNJbml0aWFsaXpl
ZCk7CiAgICAgYXV0byB0YXNrID0gbWFrZUJsb2NrUHRyKFtkZXZpY2UgPSBtX2RldmljZSwgZGF0
YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xMDQsNyArMTE1
LDcgQEAgdm9pZCBIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERh
dGFTZW50Q2FsbGJhY2smJiBjYWxsYmFjaykKIAogdm9pZCBIaWRDb25uZWN0aW9uOjpyZWdpc3Rl
ckRhdGFSZWNlaXZlZENhbGxiYWNrKERhdGFSZWNlaXZlZENhbGxiYWNrJiYgY2FsbGJhY2spCiB7
Ci0gICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQp
OwogICAgIEFTU0VSVCghbV9pbnB1dENhbGxiYWNrKTsKICAgICBtX2lucHV0Q2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsKICAgICBjb25zdW1lUmVwb3J0cygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tIaWRDb25uZWN0aW9uLmNwcAppbmRleCA2NTg0NjZkZTdiMTMxZWJlNTRlNjcxZjY3MDQz
YzdmZmU2YzUzNjhiLi45ZTVkOGZhNzA2NjgwZGY2ZTE0Zjk2M2YyM2JlOWU4ODVlNzQ0ZjU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tIaWRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcApAQCAtNjAsMTcgKzYwLDI5
IEBAIE1vY2tIaWRDb25uZWN0aW9uOjpNb2NrSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBk
ZXZpY2UsIGNvbnN0IE1vY2tXZWJBdXRoZW50CiAKIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246Omlu
aXRpYWxpemUoKQogewotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIHNldElzSW5pdGlh
bGl6ZWQodHJ1ZSk7CiB9CiAKIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCiB7
Ci0gICAgbV90ZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICBzZXRJc0luaXRpYWxpemVkKGZhbHNlKTsK
K30KKworYXV0byBNb2NrSGlkQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSAtPiBEYXRhU2VudAoreworICAgIEFTU0VSVChpc0luaXRpYWxpemVkKCkpOwor
ICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaGlkLT5leHBlY3RDYW5jZWwpIHsKKyAgICAgICAgYXV0
byBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShkYXRh
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtZXNzYWdlLCBtZXNzYWdlKTsKKyAgICAgICAgQVNT
RVJUKG1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2FuY2VsKTsKKyAg
ICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IGNhbmNlbGxlZC4iKTsKKyAgICB9CisgICAgcmV0dXJu
IERhdGFTZW50OjpZZXM7CiB9CiAKIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnNlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgRGF0YVNlbnRDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIEFT
U0VSVChtX2luaXRpYWxpemVkKTsKKyAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKICAgICBh
dXRvIHRhc2sgPSBtYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBk
YXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewpAQCAtMjI4LDYgKzI0MCw4IEBA
IHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKICAgICB9CiAKICAgICBpZiAo
bV9zdGFnZSA9PSBNb2NrOjpIaWRTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09IE1vY2s6
OkhpZFN1YlN0YWdlOjpNc2cpIHsKKyAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5oaWQtPmV4
cGVjdENhbmNlbCkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKG1fY29uZmlndXJh
dGlvbi5oaWQtPmtlZXBBbGl2ZSkgewogICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLmhpZC0+
a2VlcEFsaXZlID0gZmFsc2U7CiAgICAgICAgICAgICBGaWRvSGlkSW5pdFBhY2tldCBpbml0UGFj
a2V0KG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprS2VlcEFsaXZlLCB7
IEN0YXBLZWVwQWxpdmVTdGF0dXNQcm9jZXNzaW5nIH0sIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
SGlkQ29ubmVjdGlvbi5oCmluZGV4IDBkYjAwZTk4NTQzMWNjYjhmNmY4MzQ2YmYzOGI1OTBiNTM5
M2IwMDMuLjg4YjI4NGY1NGFiMGQ4ZjNmYzMxODg5ZjAzOWNmOTkzYjM2MDc0YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hp
ZENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKQEAgLTQ4LDkgKzQ4LDExIEBAIHB1YmxpYzoK
ICAgICBNb2NrSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiwgY29uc3QgV2ViQ29yZTo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQg
c2VuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIC8vIEhpZENvbm5lY3Rpb24KICAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKICAgICB2
b2lkIHRlcm1pbmF0ZSgpIGZpbmFsOworICAgIERhdGFTZW50IHNlbmRTeW5jKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkgZmluYWw7CisgICAgdm9pZCBzZW5kKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckRhdGFS
ZWNlaXZlZENhbGxiYWNrSW50ZXJuYWwoKSBmaW5hbDsKIAogICAgIHZvaWQgYXNzZW1ibGVSZXF1
ZXN0KFZlY3Rvcjx1aW50OF90PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
UmVxdWVzdERhdGEuaAppbmRleCA0YmI1NDg1ZTVlYWE4YzAwNWY5ZmMwZDMzOTZiNzU3MTRhNDBj
NDJjLi45Nzg2MDU0ZTBmMDA5NzQ4N2Q5Y2RjNjQ4ZDRmODIwMjMyN2FlM2M0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dGlvblJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgiCiAjaW5jbHVkZSAiV2Vi
QXV0aGVudGljYXRpb25QYW5lbEZsYWdzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HbG9iYWxGcmFt
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC00NSw2ICs0Niw3IEBA
IHN0cnVjdCBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhIHsKICAgICBXZWFrUHRyPFdlYlBh
Z2VQcm94eT4gcGFnZTsKICAgICBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHBhbmVsUmVz
dWx0IHsgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUgfTsKICAgICBS
ZWZQdHI8QVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsPiBwYW5lbDsKKyAgICBXVEY6Ok9wdGlv
bmFsPFdlYkNvcmU6Okdsb2JhbEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDRmY2Q4Y2Q4ZGJjNDg4NjI1MmY1OTViZGZmZDUxY2Rl
M2RiNzU3NzkuLjZkZjhjYTc0ZjNjZDAyMjY0N2JhYTI4YjBmMjJiZDJiOTdlNmIyZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkxvY2FsU2VydmljZS5oIgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uUGFuZWxG
bGFncy5oIgotI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpA
QCAtNTQsNDAgKzUzLDMyIEBAIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojp+V2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoKQogICAgIG1fd2ViUGFnZVByb3h5LnByb2Nl
c3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBh
Z2VJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFr
ZUNyZWRlbnRpYWwodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhh
c2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9w
dGlvbnMpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVu
dGlhbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNo
LCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRp
b25zLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJl
cXVlc3QobWVzc2FnZUlkLCB7IGhhc2gsIG9wdGlvbnMsIG1ha2VXZWFrUHRyKG1fd2ViUGFnZVBy
b3h5KSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIg
fSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IGhhc2gsIG9wdGlvbnMsIG1ha2VXZWFrUHRyKG1fd2Vi
UGFnZVByb3h5KSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51
bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgp
LCBmcmFtZUlkIH0gfSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6OmdldEFzc2VydGlvbih1aW50NjRfdCBtZXNzYWdlSWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlkLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxl
cikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KG1lc3NhZ2VJZCwgeyBoYXNoLCBvcHRpb25zLCBtYWtl
V2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVu
YXZhaWxhYmxlLCBudWxscHRyIH0pOworICAgIGhhbmRsZVJlcXVlc3QoeyBoYXNoLCBvcHRpb25z
LCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBh
Z2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9IH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQog
Ci12b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5kbGVSZXF1ZXN0KHVp
bnQ2NF90IG1lc3NhZ2VJZCwgV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEpCit2
b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5kbGVSZXF1ZXN0KFdlYkF1
dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIm
JiBoYW5kbGVyKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBbbWVzc2FnZUlkLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgYXV0byBjYWxs
YmFjayA9IFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgaWYg
KCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQogICAgICAgICBXVEY6OnN3aXRjaE9u
KHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRh
KSB7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+cmVxdWVzdFJlcGx5KG1lc3NhZ2VJZCwgZGF0YSwg
eyB9KTsKKyAgICAgICAgICAgIGhhbmRsZXIoZGF0YSwgeyB9KTsKICAgICAgICAgfSwgWyZdKGNv
bnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHdl
YWtUaGlzLT5yZXF1ZXN0UmVwbHkobWVzc2FnZUlkLCB7IH0sIGV4Y2VwdGlvbik7CisgICAgICAg
ICAgICBoYW5kbGVyKHsgfSwgZXhjZXB0aW9uKTsKICAgICAgICAgfSk7CiAgICAgfTsKICAgICBt
X3dlYlBhZ2VQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCkuYXV0aGVudGljYXRvck1hbmFnZXIoKS5o
YW5kbGVSZXF1ZXN0KFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9p
ZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKHVpbnQ2NF90IG1lc3NhZ2VJZCkKLXsKLSAgICBtX3dl
YlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Oklz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJ
ZCwgTG9jYWxTZXJ2aWNlOjppc0F2YWlsYWJsZSgpKSk7Ci19Ci0KLXZvaWQgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6OnJlcXVlc3RSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNv
bnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhLCBjb25zdCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUo
UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHku
c2VuZChNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpSZXF1ZXN0UmVwbHko
bWVzc2FnZUlkLCBkYXRhLCBleGNlcHRpb24pKTsKKyAgICBoYW5kbGVyKExvY2FsU2VydmljZTo6
aXNBdmFpbGFibGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKaW5kZXggZWY3MzM0MTYy
OGQzMGIxYjRjN2M5ZTYwOWMzMTZjMjdmNWY5NjE3MC4uYTFiMjU3ZTEyMDJlNGVhYzA5NzFmOGM1
OTg3ZjBkN2E2MDliNDYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5oCkBAIC0yOCw5ICsyOCw5IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgV2Vi
UGFnZVByb3h5OwogCiBzdHJ1Y3QgV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YTsKIAotY2xh
c3MgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHk+IHsKK2NsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IDogcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkpOwogcHVibGljOgpAQCAtNTMsMTggKzUzLDE4IEBAIHB1YmxpYzoKICAgICB+V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkoKTsKIAogcHJpdmF0ZToKKyAgICB1c2luZyBSZXF1ZXN0
Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYp
PjsKKyAgICB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT47CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwogCiAgICAgLy8gUmVjZWl2ZXJzLgotICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwodWludDY0X3Qg
bWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmKTsKLSAgICB2b2lkIGdldEFzc2VydGlv
bih1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJik7Ci0gICAgdm9pZCBp
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUodWludDY0X3QgbWVz
c2FnZUlkKTsKLQotICAgIC8vIFNlbmRlcnMuCi0gICAgdm9pZCByZXF1ZXN0UmVwbHkodWludDY0
X3QgbWVzc2FnZUlkLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYsIGNv
bnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIG1ha2VDcmVkZW50aWFsKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgUmVxdWVzdENv
bXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXImJik7CisgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFp
bGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKTsKIAotICAgIHZvaWQgaGFuZGxlUmVxdWVz
dCh1aW50NjRfdCBtZXNzYWdlSWQsIFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJik7Cisg
ICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiwgUmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQ
cm94eTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDExN2NkODgwOGYwZGU1NzU2MmMxZDgx
YTExODJiNTdkNTY1MDAyYjguLmNhYWZmYTdjMWIzYmJiNGQ2MDNkNDVkY2M1YTQ1MzUzODMwMDAx
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNiw5ICsyNiw5IEBACiAKIG1lc3NhZ2VzIC0+
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IHsKIAotICAgIE1ha2VDcmVkZW50aWFs
KHVpbnQ2NF90IG1lc3NhZ2VJZCwgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMpOwotICAgIEdldEFz
c2VydGlvbih1aW50NjRfdCBtZXNzYWdlSWQsIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMpOwotICAg
IElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1aW50NjRfdCBt
ZXNzYWdlSWQpOworICAgIE1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucykgLT4gKHN0cnVjdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBl
eGNlcHRpb24pIEFzeW5jCisgICAgR2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRh
IGV4Y2VwdGlvbikgQXN5bmMKKyAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JBdmFpbGFibGUoKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
QXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAppbmRleCA4ZWRhMTFiOTFhOWM0OWY2NWE4
NzQzNTAzNGU0YzhkMmU1YWM2Yzg3Li5hY2U0YzBjNzNmMDRmYzMxZjczMTQ5NDdiNjVlYmZhNTJk
NjU3NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcApAQCAtNDIs
MTEgKzQyLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgZmlk
bzsKIAogQ3RhcEF1dGhlbnRpY2F0b3I6OkN0YXBBdXRoZW50aWNhdG9yKHN0ZDo6dW5pcXVlX3B0
cjxDdGFwRHJpdmVyPiYmIGRyaXZlciwgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYmIGlu
Zm8pCi0gICAgOiBtX2RyaXZlcihXVEZNb3ZlKGRyaXZlcikpCisgICAgOiBGaWRvQXV0aGVudGlj
YXRvcihXVEZNb3ZlKGRyaXZlcikpCiAgICAgLCBtX2luZm8oV1RGTW92ZShpbmZvKSkKIHsKLSAg
ICAvLyBGSVhNRSgxOTE1MjApOiBXZSBuZWVkIGEgd2F5IHRvIGNvbnZlcnQgc3RkOjp1bmlxdWVf
cHRyIHRvIFVuaXF1ZVJlZi4KLSAgICBBU1NFUlQobV9kcml2ZXIpOwogfQogCiB2b2lkIEN0YXBB
dXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCkBAIC01NSw3ICs1Myw3IEBAIHZvaWQgQ3Rh
cEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICBpZiAocHJvY2Vzc0dvb2dsZUxl
Z2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbigpKQogICAgICAgICByZXR1cm47CiAgICAgYXV0byBj
Ym9yQ21kID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKHJlcXVlc3REYXRhKCku
aGFzaCwgV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVz
dERhdGEoKS5vcHRpb25zKSwgbV9pbmZvLm9wdGlvbnMoKS51c2VyVmVyaWZpY2F0aW9uQXZhaWxh
YmlsaXR5KCkpOwotICAgIG1fZHJpdmVyLT50cmFuc2FjdChXVEZNb3ZlKGNib3JDbWQpLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKKyAg
ICBkcml2ZXIoKS50cmFuc2FjdChXVEZNb3ZlKGNib3JDbWQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKICAgICAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTgxLDcgKzc5LDcgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0
aW9uKCkKIHsKICAgICBBU1NFUlQoIW1faXNEb3duZ3JhZGVkKTsKICAgICBhdXRvIGNib3JDbWQg
PSBlbmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKHJlcXVlc3REYXRhKCkuaGFzaCwgV1RG
OjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9w
dGlvbnMpLCBtX2luZm8ub3B0aW9ucygpLnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7
Ci0gICAgbV9kcml2ZXItPnRyYW5zYWN0KFdURk1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeworICAgIGRyaXZlcigp
LnRyYW5zYWN0KFdURk1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTEwLDggKzEwOCw4IEBAIGJvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6OnRyeURvd25ncmFkZSgpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1faXNEb3duZ3JhZGVkID0gdHJ1ZTsKLSAgICBt
X2RyaXZlci0+c2V0UHJvdG9jb2woUHJvdG9jb2xWZXJzaW9uOjprVTJmKTsKLSAgICBvYnNlcnZl
cigpLT5kb3duZ3JhZGUodGhpcywgVTJmQXV0aGVudGljYXRvcjo6Y3JlYXRlKFdURk1vdmUobV9k
cml2ZXIpKSk7CisgICAgZHJpdmVyKCkuc2V0UHJvdG9jb2woUHJvdG9jb2xWZXJzaW9uOjprVTJm
KTsKKyAgICBvYnNlcnZlcigpLT5kb3duZ3JhZGUodGhpcywgVTJmQXV0aGVudGljYXRvcjo6Y3Jl
YXRlKHJlbGVhc2VEcml2ZXIoKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRo
ZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKaW5kZXggODA1NDE5ODE0YTZhMjI3NTMyMDNmODNiYzY2
MmY2N2U3N2U3OTJmMS4uZWU1NDNkODVmOTRkMDhmYTBjNmI3YTA0OWNkZmVkZjhlZjQyZmM1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaApAQCAtMjcsMTQgKzI3LDE0IEBA
CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvci5oIgor
I2luY2x1ZGUgIkZpZG9BdXRoZW50aWNhdG9yLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50
aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBD
dGFwRHJpdmVyOwogCi1jbGFzcyBDdGFwQXV0aGVudGljYXRvciBmaW5hbCA6IHB1YmxpYyBBdXRo
ZW50aWNhdG9yIHsKK2NsYXNzIEN0YXBBdXRoZW50aWNhdG9yIGZpbmFsIDogcHVibGljIEZpZG9B
dXRoZW50aWNhdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEN0YXBBdXRoZW50aWNhdG9y
PiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVyLCBmaWRvOjpBdXRo
ZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiYgaW5mbykKICAgICB7CkBAIC01Miw3ICs1Miw2IEBA
IHByaXZhdGU6CiAgICAgYm9vbCB0cnlEb3duZ3JhZGUoKTsKICAgICBib29sIHByb2Nlc3NHb29n
bGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxD
dGFwRHJpdmVyPiBtX2RyaXZlcjsKICAgICBmaWRvOjpBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3Bv
bnNlIG1faW5mbzsKICAgICBib29sIG1faXNEb3duZ3JhZGVkIHsgZmFsc2UgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBEcml2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcERyaXZlci5oCmluZGV4IDA3OWJlYTM4ODJkNmQ2MzBkODY3YTViYWIxZTgzZmM2YmM3
N2Q5ZDYuLjdhNDIwZmUxY2VjMjE4YjkwNjZlNjMwMzZlZmJiYzYzYTQxN2IxMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcERy
aXZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcERyaXZlci5oCkBAIC00MSwxNCArNDEsMTUgQEAgY2xhc3MgQ3RhcERyaXZlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxDdGFwRHJpdmVyPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVz
cG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPjsKIAotICAg
IEN0YXBEcml2ZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q3RhcERyaXZlcigpID0gZGVm
YXVsdDsKIAogICAgIHZvaWQgc2V0UHJvdG9jb2woZmlkbzo6UHJvdG9jb2xWZXJzaW9uIHByb3Rv
Y29sKSB7IG1fcHJvdG9jb2wgPSBwcm90b2NvbDsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRyYW5z
YWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFJlc3BvbnNlQ2FsbGJhY2smJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWwoKSB7IH07CiAKIHByb3RlY3RlZDoKKyAgICBDdGFwRHJpdmVy
KCkgPSBkZWZhdWx0OwogICAgIGZpZG86OlByb3RvY29sVmVyc2lvbiBwcm90b2NvbCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvdG9jb2w7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRE
cml2ZXIuY3BwCmluZGV4IDUzMjY1ODE5MjU5YjNjNDBjNWFlMmExNGJlNDAzNzczNjliYzZmZDMu
LjA2ZjIzMTU1MjZhZjFmMjM4NGI1NTBhZGVmYTlmMTllMTBlZWQ1YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwSGlkRHJpdmVyLmNwcApAQCAtNjgsOSArNjgsMTEgQEAgdm9pZCBDdGFwSGlkRHJpdmVy
OjpXb3JrZXI6OnRyYW5zYWN0KGZpZG86OkZpZG9IaWRNZXNzYWdlJiYgcmVxdWVzdE1lc3NhZ2Us
IE1lc3MKIAogdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OndyaXRlKEhpZENvbm5lY3Rpb246
OkRhdGFTZW50IHNlbnQpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OldyaXRlKTsK
KyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V3JpdGUpCisgICAgICAgIHJldHVybjsKICAgICBp
ZiAoc2VudCAhPSBIaWRDb25uZWN0aW9uOjpEYXRhU2VudDo6WWVzKSB7Ci0gICAgICAgIHJldHVy
bk1lc3NhZ2UoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9yZXNwb25zZU1lc3NhZ2UgPSBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybk1lc3NhZ2UoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtOTUsNyArOTcsOCBAQCB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6d3JpdGUo
SGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQgc2VudCkKIAogdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3Jr
ZXI6OnJlYWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpSZWFkKTsKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UmVhZCkKKyAg
ICAgICAgcmV0dXJuOwogICAgIGlmICghbV9yZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAgbV9y
ZXNwb25zZU1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRh
KGRhdGEpOwogICAgICAgICAvLyBUaGUgZmlyc3QgZmV3IHJlcG9ydHMgY291bGQgYmUgZm9yIG90
aGVyIGFwcGxpY2F0aW9ucywgYW5kIHRoZXJlZm9yZSBpZ25vcmUgdGhvc2UuCkBAIC0xMDcsNyAr
MTEwLDggQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OnJlYWQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9yZXNwb25zZU1lc3Nh
Z2UtPmFkZENvbnRpbnVhdGlvblBhY2tldChkYXRhKSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZG4ndCBwYXJzZSBhIGhpZCBjb250aW51YXRpb24gcGFja2V0LiIpOwotICAgICAgICAg
ICAgcmV0dXJuTWVzc2FnZShXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgbV9yZXNwb25zZU1l
c3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm5NZXNzYWdlKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTksMTYgKzEyMywzNyBAQCB2
b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6cmVhZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlTWVzc2FnZS5yZXNldCgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybk1lc3NhZ2UoV1RGTW92ZShtX3Jlc3Bv
bnNlTWVzc2FnZSkpOworICAgICAgICByZXR1cm5NZXNzYWdlKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiB9CiAKLXZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZXR1cm5NZXNzYWdlKE9w
dGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2UpCit2b2lkIEN0YXBIaWREcml2
ZXI6Oldvcmtlcjo6cmV0dXJuTWVzc2FnZSgpCit7CisgICAgLy8gUmVzZXQgc3RhdGUgYmVmb3Jl
IGNhbGxpbmcgdGhlIHJlc3BvbnNlIGNhbGxiYWNrIHRvIGF2b2lkIGJlaW5nIGRlbGV0ZWQuCisg
ICAgYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayk7CisgICAgYXV0byBtZXNzYWdl
ID0gV1RGTW92ZShtX3Jlc3BvbnNlTWVzc2FnZSk7CisgICAgcmVzZXQoKTsKKyAgICBjYWxsYmFj
ayhXVEZNb3ZlKG1lc3NhZ2UpKTsKK30KKwordm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OnJl
c2V0KCkKIHsKLSAgICBtX3N0YXRlID0gU3RhdGU6OklkbGU7CiAgICAgbV9jb25uZWN0aW9uLT51
bnJlZ2lzdGVyRGF0YVJlY2VpdmVkQ2FsbGJhY2soKTsKLSAgICBtX2NhbGxiYWNrKFdURk1vdmUo
bWVzc2FnZSkpOworICAgIG1fY2FsbGJhY2sgPSBudWxscHRyOworICAgIG1fcmVzcG9uc2VNZXNz
YWdlID0gV1RGOjpudWxsb3B0OworICAgIG1fcmVxdWVzdE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7
CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOworfQorCisvLyBUaGlzIGltcGxlbWVudHMgQ1RB
UEhJRF9DQU5DRUwgd2hpY2ggdmlvbGF0ZXMgdGhlIHRyYW5zYWN0aW9uIHNlbWFudGljczoKKy8v
IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlk
by1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwj
dXNiLWhpZC1jYW5jZWwKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpjYW5jZWwoZmlkbzo6
Rmlkb0hpZE1lc3NhZ2UmJiByZXF1ZXN0TWVzc2FnZSkKK3sKKyAgICByZXNldCgpOworICAgIG1f
Y29ubmVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlKCk7CisgICAgQVNTRVJUKHJlcXVlc3RNZXNzYWdl
Lm51bVBhY2tldHMoKSA9PSAxKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jKHJlcXVlc3RN
ZXNzYWdlLnBvcE5leHRQYWNrZXQoKSk7CiB9CiAKIEN0YXBIaWREcml2ZXI6OkN0YXBIaWREcml2
ZXIoVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKQEAgLTE2Nyw3ICsxOTIs
OCBAQCB2b2lkIEN0YXBIaWREcml2ZXI6OnRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEs
IFJlc3BvbnNlQ2FsbGJhY2smJiBjYWxsYmFjawogCiB2b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRp
bnVlQWZ0ZXJDaGFubmVsQWxsb2NhdGVkKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIG1lc3Nh
Z2UpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG9jYXRlQ2hhbm5lbCk7Cisg
ICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkFsbG9jYXRlQ2hhbm5lbCkKKyAgICAgICAgcmV0dXJu
OwogICAgIGlmICghbWVzc2FnZSkgewogICAgICAgICByZXR1cm5SZXNwb25zZSh7IH0pOwogICAg
ICAgICByZXR1cm47CkBAIC0xOTMsNyArMjE5LDcgQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjpjb250
aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiBtZXMK
ICAgICBtX2NoYW5uZWxJZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleCsr
XSkgPDwgMTY7CiAgICAgbV9jaGFubmVsSWQgfD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBheWxv
YWRbaW5kZXgrK10pIDw8IDg7CiAgICAgbV9jaGFubmVsSWQgfD0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHBheWxvYWRbaW5kZXhdKTsKLSAgICAvLyBGSVhNRSgxOTE1MzQpOiBDaGVjayB0aGUgcmVz
ZXQgb2YgdGhlIHBheWxvYWQuCisgICAgLy8gRklYTUUoMTkxNTM0KTogQ2hlY2sgdGhlIHJlc3Qg
b2YgdGhlIHBheWxvYWQuCiAgICAgYXV0byBjbWQgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1f
Y2hhbm5lbElkLCBwcm90b2NvbCgpID09IFByb3RvY29sVmVyc2lvbjo6a0N0YXAgPyBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a0Nib3IgOiBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZywgbV9yZXF1
ZXN0RGF0YSk7CiAgICAgQVNTRVJUKGNtZCk7CiAgICAgbV93b3JrZXItPnRyYW5zYWN0KFdURk1v
dmUoKmNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hp
ZE1lc3NhZ2U+JiYgcmVzcG9uc2UpIG11dGFibGUgewpAQCAtMjA2LDcgKzIzMiw4IEBAIHZvaWQg
Q3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0aW9uYWw8Rmlk
b0hpZE1lc3NhZ2U+JiYgbWVzCiAKIHZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlclJl
c3BvbnNlUmVjZWl2ZWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzc2FnZSkK
IHsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZHkpOworICAgIGlmIChtX3N0YXRl
ICE9IFN0YXRlOjpSZWFkeSkKKyAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghbWVzc2FnZSB8
fCBtZXNzYWdlLT5jaGFubmVsSWQoKSA9PSBtX2NoYW5uZWxJZCk7CiAgICAgcmV0dXJuUmVzcG9u
c2UobWVzc2FnZSA/IG1lc3NhZ2UtPmdldE1lc3NhZ2VQYXlsb2FkKCkgOiBWZWN0b3I8dWludDhf
dD4oKSk7CiB9CkBAIC0yMTQsOCArMjQxLDI4IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGlu
dWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+CiB2
b2lkIEN0YXBIaWREcml2ZXI6OnJldHVyblJlc3BvbnNlKFZlY3Rvcjx1aW50OF90PiYmIHJlc3Bv
bnNlKQogewogICAgIC8vIFJlc2V0IHN0YXRlIGJlZm9yZSBjYWxsaW5nIHRoZSByZXNwb25zZSBj
YWxsYmFjayB0byBhdm9pZCBiZWluZyBkZWxldGVkLgorICAgIGF1dG8gcmVzcG9uc2VDYWxsYmFj
ayA9IFdURk1vdmUobV9yZXNwb25zZUNhbGxiYWNrKTsKKyAgICByZXNldCgpOworICAgIHJlc3Bv
bnNlQ2FsbGJhY2soV1RGTW92ZShyZXNwb25zZSkpOworfQorCit2b2lkIEN0YXBIaWREcml2ZXI6
OnJlc2V0KCkKK3sKKyAgICBtX3Jlc3BvbnNlQ2FsbGJhY2sgPSBudWxscHRyOworICAgIG1fY2hh
bm5lbElkID0gZmlkbzo6a0hpZEJyb2FkY2FzdENoYW5uZWw7CiAgICAgbV9zdGF0ZSA9IFN0YXRl
OjpJZGxlOwotICAgIG1fcmVzcG9uc2VDYWxsYmFjayhXVEZNb3ZlKHJlc3BvbnNlKSk7Cit9CisK
K3ZvaWQgQ3RhcEhpZERyaXZlcjo6Y2FuY2VsKCkKK3sKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6SWRsZSB8fCBwcm90b2NvbCgpICE9IFByb3RvY29sVmVyc2lvbjo6a0N0YXApCisgICAgICAg
IHJldHVybjsKKyAgICAvLyBDYW5jZWwgYW55IG91dHN0YW5kaW5nIHJlcXVlc3RzLgorICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpSZWFkeSkgeworICAgICAgICBhdXRvIGNhbmNlbENvbW1hbmQg
PSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFu
ZDo6a0NhbmNlbCwgeyB9KTsKKyAgICAgICAgbV93b3JrZXItPmNhbmNlbChXVEZNb3ZlKCpjYW5j
ZWxDb21tYW5kKSk7CisgICAgfQorICAgIHJlc2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9DdGFwSGlkRHJpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaAppbmRleCBjNWQ2ZGNhZDU4N2RmMTk3YWUy
MjBlYWRlMmQzMGI2NGJiZTBiYzI4Li5iZmIyMTNkNzQ0ZDJlMTYwOWQzYmEzYjRiZDM2NzQxMWZk
MzcyMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaApAQCAtMzcsNyArMzcsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyB0aGUgQ1RBUCBI
SUQgcHJvdG9jb2w6CiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4w
LXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1w
cy0yMDE3MDkyNy5odG1sI3VzYgogLy8gRlNNOiBJZGxlID0+IEFsbG9jYXRlQ2hhbm5lbCA9PiBS
ZWFkeQotY2xhc3MgQ3RhcEhpZERyaXZlciA6IHB1YmxpYyBDdGFwRHJpdmVyIHsKK2NsYXNzIEN0
YXBIaWREcml2ZXIgZmluYWwgOiBwdWJsaWMgQ3RhcERyaXZlciB7CiBwdWJsaWM6CiAgICAgZW51
bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgewogICAgICAgICBJZGxlLApAQCAtNTAsNiArNTAsNyBA
QCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ3RhcEhpZERyaXZlcihVbmlxdWVSZWY8SGlkQ29ubmVj
dGlvbj4mJik7CiAKICAgICB2b2lkIHRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFJl
c3BvbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAogcHJp
dmF0ZToKICAgICAvLyBXb3JrZXIgaXMgdGhlIGhlbHBlciB0aGF0IG1haW50YWlucyB0aGUgdHJh
bnNhY3Rpb24uCkBAIC03MSwxMSArNzIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfldvcmtlcigp
OwogCiAgICAgICAgIHZvaWQgdHJhbnNhY3QoZmlkbzo6Rmlkb0hpZE1lc3NhZ2UmJiwgTWVzc2Fn
ZUNhbGxiYWNrJiYpOworICAgICAgICB2b2lkIGNhbmNlbChmaWRvOjpGaWRvSGlkTWVzc2FnZSYm
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgd3JpdGUoSGlkQ29ubmVjdGlvbjo6RGF0
YVNlbnQpOwogICAgICAgICB2b2lkIHJlYWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci0gICAg
ICAgIHZvaWQgcmV0dXJuTWVzc2FnZShPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJik7
CisgICAgICAgIHZvaWQgcmV0dXJuTWVzc2FnZSgpOworICAgICAgICB2b2lkIHJlc2V0KCk7CiAK
ICAgICAgICAgVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICAgICAg
U3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJZGxlIH07CkBAIC04Nyw2ICs5MCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxmaWRvOjpG
aWRvSGlkTWVzc2FnZT4mJik7CiAgICAgdm9pZCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZl
ZChPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJik7CiAgICAgdm9pZCByZXR1cm5SZXNw
b25zZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgdm9pZCByZXNldCgpOwogCiAgICAgVW5pcXVl
UmVmPFdvcmtlcj4gbV93b3JrZXI7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJZGxlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0ZpZG9BdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmN2Zi
NTNlNjUyYTJjMTcyMzEzYmEyZWYzMGMyMDg5ZDk3NDMxOWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50
aWNhdG9yLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkZpZG9BdXRoZW50aWNhdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FV
VEhOKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRmlkb0F1dGhlbnRpY2F0b3I6OkZpZG9BdXRo
ZW50aWNhdG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiYmIGRyaXZlcikKKyAgICA6IG1f
ZHJpdmVyKFdURk1vdmUoZHJpdmVyKSkKK3sKKyAgICBBU1NFUlQobV9kcml2ZXIpOworfQorCitG
aWRvQXV0aGVudGljYXRvcjo6fkZpZG9BdXRoZW50aWNhdG9yKCkKK3sKKyAgICBpZiAobV9kcml2
ZXIpCisgICAgICAgIG1fZHJpdmVyLT5jYW5jZWwoKTsKK30KKworQ3RhcERyaXZlciYgRmlkb0F1
dGhlbnRpY2F0b3I6OmRyaXZlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZHJpdmVyKTsKKyAg
ICByZXR1cm4gKm1fZHJpdmVyOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gRmlk
b0F1dGhlbnRpY2F0b3I6OnJlbGVhc2VEcml2ZXIoKQoreworICAgIEFTU0VSVChtX2RyaXZlcik7
CisgICAgcmV0dXJuIFdURk1vdmUobV9kcml2ZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRo
ZW50aWNhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzE1NjZlNDc1ZDYxNmRmNzU0YWE0YTRjZmVjYWI5YjU2
MDg1NWQyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuaApAQCAtMCwwICsxLDUyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5j
bHVkZSAiQXV0aGVudGljYXRvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ3Rh
cERyaXZlcjsKKworY2xhc3MgRmlkb0F1dGhlbnRpY2F0b3IgOiBwdWJsaWMgQXV0aGVudGljYXRv
ciB7CitwdWJsaWM6CisgICAgfkZpZG9BdXRoZW50aWNhdG9yKCkgb3ZlcnJpZGU7CisKK3Byb3Rl
Y3RlZDoKKyAgICBleHBsaWNpdCBGaWRvQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3Rh
cERyaXZlcj4mJik7CisKKyAgICBDdGFwRHJpdmVyJiBkcml2ZXIoKSBjb25zdDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gcmVsZWFzZURyaXZlcigpOworCitwcml2YXRlOgorICAg
IHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiBtX2RyaXZlcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRv
U2VydmljZS5jcHAKaW5kZXggZWExNGVlMDVjYzg3YzU3ZDAzNTEyZWIyYzhlZjM2ZDVjOTFmMjIy
Yy4uMWI1NjU0YjhjNTE2MDIzNTJlYTM3Yjc0NzY0NGE5NDJhNTUxMzQ0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2Vydmlj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9GaWRvU2VydmljZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBGaWRvU2VydmljZTo6Y29u
dGludWVBZnRlckdldEluZm8oV2Vha1B0cjxDdGFwRHJpdmVyPiYmIHdlYWtEcml2ZXIsIFZlY3Rv
cjwKICAgICBpZiAoIXdlYWtEcml2ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxDdGFwRHJpdmVyPiBkcml2ZXIgPSBtX2RyaXZlcnMudGFrZSh3ZWFrRHJpdmVyLmdl
dCgpKTsKKyAgICBhdXRvIGRyaXZlciA9IG1fZHJpdmVycy50YWtlKHdlYWtEcml2ZXIuZ2V0KCkp
OwogICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZlcigpIHx8IHJlc3BvbnNlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcApp
bmRleCBiZDQyNDU5NGZiZmE1YTI2ZGUwMWNhNDdhYzIzZThlYThkOWUwODM5Li5hYjQ2NTM2MmQz
YjY2MWQ5MDA4NmQ1ZjljYTNkMjFlZmQ0Yjg3MTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0
aGVudGljYXRvci5jcHAKQEAgLTQ2LDExICs0Niw5IEBAIGNvbnN0IHVuc2lnbmVkIHJldHJ5VGlt
ZU91dFZhbHVlTXMgPSAyMDA7CiB9CiAKIFUyZkF1dGhlbnRpY2F0b3I6OlUyZkF1dGhlbnRpY2F0
b3Ioc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVyKQotICAgIDogbV9kcml2ZXIo
V1RGTW92ZShkcml2ZXIpKQorICAgIDogRmlkb0F1dGhlbnRpY2F0b3IoV1RGTW92ZShkcml2ZXIp
KQogICAgICwgbV9yZXRyeVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlUyZkF1dGhlbnRp
Y2F0b3I6OnJldHJ5TGFzdENvbW1hbmQpCiB7Ci0gICAgLy8gRklYTUUoMTkxNTIwKTogV2UgbmVl
ZCBhIHdheSB0byBjb252ZXJ0IHN0ZDo6dW5pcXVlX3B0ciB0byBVbmlxdWVSZWYuCi0gICAgQVNT
RVJUKG1fZHJpdmVyKTsKIH0KIAogdm9pZCBVMmZBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlh
bCgpCkBAIC0xMTgsNyArMTE2LDcgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjppc3N1ZU5ld0Nv
bW1hbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgY29tbWFuZCwgQ29tbWFuZFR5cGUgdHkKIAogdm9pZCBV
MmZBdXRoZW50aWNhdG9yOjppc3N1ZUNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb21t
YW5kLCBDb21tYW5kVHlwZSB0eXBlKQogewotICAgIG1fZHJpdmVyLT50cmFuc2FjdChWZWN0b3I8
dWludDhfdD4oY29tbWFuZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdHlwZV0o
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeworICAgIGRyaXZlcigpLnRyYW5zYWN0KFZlY3Rvcjx1
aW50OF90Pihjb21tYW5kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0eXBlXShW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1
dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vVTJmQXV0aGVudGljYXRvci5oCmluZGV4IGQ5MDU1Y2QwNTkwMTQxNWFhZDUzZDIxOWVh
MTNmOWNlZjQ2N2E5ZmMuLjQ2NzI3NDg3NzlmMzdhY2YwOGJmNGNlZGE3ODk1YjlkMzJkZWVkM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vVTJmQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5oCkBAIC0yNyw3ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvci5oIgorI2lu
Y2x1ZGUgIkZpZG9BdXRoZW50aWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAog
bmFtZXNwYWNlIGFwZHUgewpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgQ3RhcERyaXZlcjsKIAotY2xhc3MgVTJmQXV0aGVudGljYXRvciBmaW5hbCA6IHB1Ymxp
YyBBdXRoZW50aWNhdG9yIHsKK2NsYXNzIFUyZkF1dGhlbnRpY2F0b3IgZmluYWwgOiBwdWJsaWMg
Rmlkb0F1dGhlbnRpY2F0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VTJmQXV0aGVudGlj
YXRvcj4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiYmIGRyaXZlcikKICAgICB7
CkBAIC02OSw3ICs2OSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250aW51ZUJvZ3VzQ29tbWFu
ZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChhcGR1OjpBcGR1UmVzcG9uc2UmJik7CiAgICAgdm9pZCBj
b250aW51ZVNpZ25Db21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGFwZHU6OkFwZHVSZXNwb25z
ZSYmKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiBtX2RyaXZlcjsKICAgICBS
dW5Mb29wOjpUaW1lcjxVMmZBdXRoZW50aWNhdG9yPiBtX3JldHJ5VGltZXI7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IG1fbGFzdENvbW1hbmQ7CiAgICAgQ29tbWFuZFR5cGUgbV9sYXN0Q29tbWFuZFR5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3Zjg5ZmI5
NzZiOThiZTBjODdjZjM3MWRkNDRmODVjNzQxOWNlNDUzLi41YTI2NjE0OWQ4NmExY2IyYjk3OTcy
ZmMxZGEyZDE1OWZkY2Y5MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIK
ICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvck1h
bmFnZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKQEAgLTQxMTMsNiArNDEx
NCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5k
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24u
Z2V0KCksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKICAgICBlbHNlIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbigqdGhpcywg
bmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOworCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBtX3dl
YnNpdGVEYXRhU3RvcmUtPmF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkuY2FuY2VsUmVxdWVzdChtX3dl
YlBhZ2VJRCwgZnJhbWVJRCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEV4
cGxpY2l0T3BlbkZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBVUkwmJiB1cmwpCkBA
IC03MTk2LDYgKzcyMDEsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRT
dGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lT
KQogICAgIHJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmF1dGhlbnRpY2F0b3JNYW5hZ2VyKCku
Y2FuY2VsUmVxdWVzdChtX3dlYlBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKKyNlbmRpZgogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24gdGVybWluYXRpb25SZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1MDM4ZGVjYjZkMzNjOWE3OGI0MzU1OWY2YjZj
NjUyZGQyNjQyOGZlLi4xYTU3OWNlYjBmN2JhMGU0YzA3YmVhZmJjMmZiZTBkNWQ0NGJkYTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJBUElGcmFtZUhhbmRsZS5oIgogI2luY2x1ZGUgIkFQSVBhZ2VH
cm91cEhhbmRsZS5oIgogI2luY2x1ZGUgIkFQSVBhZ2VIYW5kbGUuaCIKKyNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKQEAgLTg5
MCw2ICs4OTEsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkKICAgICAvLyBiYWNrIHRvIHRoZSBVSVByb2Nlc3MsIHRoZW4g
dGhlIGZyYW1lRGVzdHJveWVkIG1lc3NhZ2Ugd2lsbCBzdGlsbCBiZSByZWNlaXZlZCBiZWNhdXNl
IGl0CiAgICAgLy8gZ2V0cyBzZW50IGRpcmVjdGx5IHRvIHRoZSBXZWJQcm9jZXNzUHJveHkuCiAg
ICAgQVNTRVJUKFdlYkZyYW1lUHJveHlNYXA6OmlzVmFsaWRLZXkoZnJhbWVJRCkpOworI2lmIEVO
QUJMRShXRUJfQVVUSE4pCisgICAgaWYgKGF1dG8qIGZyYW1lID0gd2ViRnJhbWUoZnJhbWVJRCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAg
cGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkuY2FuY2VsUmVx
dWVzdChwYWdlLT53ZWJQYWdlSUQoKSwgZnJhbWVJRCk7CisgICAgfQorI2VuZGlmCiAgICAgbV9m
cmFtZU1hcC5yZW1vdmUoZnJhbWVJRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg0Zjk2ZTYyNzIzZWJhMTYxN2FiOGIxMmM3
MTZmMDAzNjA5YjYxMjYuLmVjNzc4ZjJlMjlhM2FhOTI2MmQ2NTdmMGQ5YTgyMjQ3ZGM4NTM1NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTA2MSw3ICsxMDYxLDYgQEAKIAkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tO
ZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1N0I4MjY0QTIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCAqLzsgfTsKIAkJ
NTdCQkVBNkQyMkJDMEJGRTAwMjczOTk1IC8qIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QkJFQTZDMjJC
QzBCRkUwMDI3Mzk5NSAvKiBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5LmggKi87IH07CiAJCTU3
QzYyNDRCMjM0Njc5QTQwMDM4M0ZFNyAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsRmxhZ3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QzYyNDRBMjM0
Njc5QTQwMDM4M0ZFNyAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsRmxhZ3MuaCAqLzsgfTsKLQkJ
NTdEQ0VENkUyMTQyRUU1RTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0RDRUQ2QjIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTdEQ0VENkYyMTQyRUU2MzAwMTZC
ODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2QTIxNDJFQUUyMDAxNkI4
NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTdE
Q0VENzAyMTQyRUU2ODAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3RENFRDZDMjE0MkVBRjkwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTU3RENFRDcxMjE0MkVF
NkMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2RDIx
NDJFQUZBMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdl
cy5oICovOyB9OwpAQCAtMzUyNSw3ICszNTI0LDYgQEAKIAkJNTc1OTdFQzAyMTgxOEJFMjAwMzdG
OTI0IC8qIEN0YXBIaWREcml2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ3RhcEhpZERyaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3
NjA4MjhCMjAyOTg1NDIwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3NjA4MjhDMjAyOTg1NDIwMDExNjY3OCAvKiBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOEQy
MDI5ODdFNjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NjA4Mjk1MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYw
ODI5NjIwMkJEOEJBMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYwODI5OTIwMkJEQUUyMDAxMTY2
NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zNTQ2LDYgKzM1NDQsOCBAQAogCQk1N0I4MjY0NzIzMDUwQzUx
MDBCNzJFQjAgLyogRmlkb1NlcnZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlkb1NlcnZp
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I4MjY0QTIzMDYwM0MxMDBC
NzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja05mY1NlcnZpY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCODI2NEIyMzA2MDNDMTAwQjcyRUIw
IC8qIE1vY2tOZmNTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja05mY1NlcnZp
Y2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjhFM0Q1MjM1NTg2NEEwMEQ1
QzVEMSAvKiBGaWRvQXV0aGVudGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWRvQXV0aGVudGlj
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4RTNENjIzNTU4NjRBMDBE
NUM1RDEgLyogRmlkb0F1dGhlbnRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlkb0F1
dGhlbnRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0JCRUE2QzIy
QkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0aW9uTG9hZFBvbGljeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3QzYyNDRBMjM0Njc5QTQwMDM4M0ZFNyAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVs
RmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25QYW5lbEZsYWdzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNzA0Nyw2ICs3
MDQ3LDggQEAKIAkJCQk1NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5o
ICovLAogCQkJCTU3MERBQUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmNwcCAq
LywKIAkJCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oICovLAor
CQkJCTU3QjhFM0Q2MjM1NTg2NEEwMEQ1QzVEMSAvKiBGaWRvQXV0aGVudGljYXRvci5jcHAgKi8s
CisJCQkJNTdCOEUzRDUyMzU1ODY0QTAwRDVDNUQxIC8qIEZpZG9BdXRoZW50aWNhdG9yLmggKi8s
CiAJCQkJNTdCODI2NDcyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmNwcCAqLywKIAkJ
CQk1N0I4MjY0NjIzMDUwQzUxMDBCNzJFQjAgLyogRmlkb1NlcnZpY2UuaCAqLywKIAkJCQk1N0VC
MkUzOTIxRTE5ODNFMDBCODlDREYgLyogVTJmQXV0aGVudGljYXRvci5jcHAgKi8sCkBAIC03MDYw
LDcgKzcwNjIsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTc2MDgyOEMyMDI5ODU0MjAwMTE2
Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi8sCiAJCQkJNTc2MDgyOEIy
MDI5ODU0MjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovLAotCQkJ
CTU3NjA4MjhEMjAyOTg3RTYwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
bWVzc2FnZXMuaW4gKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTExNTEzLDcgKzExNTE0LDYgQEAKIAkJCQkyNjg0
MDU1MjE4Qjg2RUQ2MDAyMkMzOEIgLyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MDIyNEMxOEMxNkI5RjAwQzNFOEM5IC8qIFZp
c2l0ZWRMaW5rU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4
RTdEM0MxOEMxNTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU3RENFRDZFMjE0MkVFNUUwMDE2Qjg0
NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTdEQ0VENzAyMTQyRUU2ODAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFDMEExOTU3MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzBBMTk1MzFDOEZGREZCMDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAK
aW5kZXggNjZmYTFhNzliZDFmNjU5NGNkMjZkOTRjMzU3Njg4NjMxYTU4Zjg5Yi4uOGE5ODczYjAy
MDQ5M2M2YTA2OTFmM2E1NmMxYmEwMTUzZWNhN2QyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTI4LDQyICsyOCw0MCBAQAogCiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgot
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRl
bnRpYWxEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IoV2ViUGFnZSYgd2ViUGFnZSkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQogewotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFn
ZS5pZGVudGlmaWVyKCksICp0aGlzKTsKIH0KIAotV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworICAg
IGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOworICAgIGlm
ICghd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6TWFrZUNy
ZWRlbnRpYWwod2ViRnJhbWUtPmZyYW1lSUQoKSwgaGFzaCwgb3B0aW9ucyksIFdURk1vdmUoaGFu
ZGxlcikpOwogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRl
bnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBXZWJDb3JlOjpSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25z
LCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGF1dG8gbWVzc2Fn
ZUlkID0gc2V0UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpOwotICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eTo6TWFrZUNyZWRlbnRpYWwobWVzc2FnZUlkLCBoYXNoLCBvcHRpb25zKSk7CisgICAgYXV0byog
d2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFtZSk7CisgICAgaWYgKCF3ZWJG
cmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpHZXRBc3NlcnRpb24o
d2ViRnJhbWUtPmZyYW1lSUQoKSwgaGFzaCwgb3B0aW9ucyksIFdURk1vdmUoaGFuZGxlcikpOwog
fQogCi12b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZl
cmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5k
bGVyJiYgaGFuZGxlcikKIHsKLSAgICBhdXRvIG1lc3NhZ2VJZCA9IHNldFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2VydGlvbihtZXNzYWdl
SWQsIGhhc2gsIG9wdGlvbnMpKTsKLX0KLQotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXZWJDb3Jl
OjpRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICBhdXRvIG1lc3NhZ2VJ
ZCA9IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgbV93
ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpJ
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUobWVzc2FnZUlkKSk7
CisgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6OklzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRv
ckF2YWlsYWJsZSgpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXgg
NmJiYzZiNjZhYzU3ODQ2OWNlMzg1YTk5N2JhNzY1MDU0MjM3N2Y0Zi4uNzg3ZTlhOTdiNjQxNDU5
YWI3OGRmOTlkNDg3YjZhYzFjN2MxMjgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtMjcsMjggKzI3LDIyIEBACiAKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNs
aWVudCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
KFdlYlBhZ2UmKTsKLSAgICB+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCk7CiAKIHByaXZh
dGU6CiAgICAgLy8gV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ci0gICAg
Ly8gU2VuZGVycy4KLSAgICB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBX
ZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBnZXRB
c3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBXZWJDb3Jl
OjpGcmFtZSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CisgICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgV2ViQ29yZTo6RnJh
bWUmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkNvcmU6OlJlcXVlc3RDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwog
Ci0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLQogICAgIFdlYlBh
Z2UmIG1fd2ViUGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxODcwMGNhM2MxOTAzODRiZWFhMTIxMGNiMDNiZThlZDM4OWFhODEzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2Fn
ZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0jIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotIy8KLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLW1lc3NhZ2Vz
IC0+IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvciB7Ci0KLSAgICBSZXF1ZXN0UmVwbHkodWlu
dDY0X3QgbWVzc2FnZUlkLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEg
ZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKTsKLSAgICBJc1Vz
ZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBt
ZXNzYWdlSWQsIGJvb2wgcmVzdWx0KTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMWRmZTM5ZDhmZWM3ZjdlY2U5MmE3
MjM4MzI0YzVlZjY0MGYxZjFhNy4uM2YxOTNlZDQxY2NjMzUyN2QxY2FiZDE5MTU0YjNkNTg5NWFm
NTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApAQCAtMTc2LDcgKzE3Niw3IEBAIFdlYlBhZ2UqIFdlYkZyYW1lOjpwYWdlKCkgY29uc3QKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotV2ViRnJhbWUqIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1l
KEZyYW1lJiBmcmFtZSkKK1dlYkZyYW1lKiBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShjb25zdCBG
cmFtZSYgZnJhbWUpCiB7CiAgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZy
YW1lTG9hZGVyQ2xpZW50KGZyYW1lLmxvYWRlcigpLmNsaWVudCgpKTsKICAgICBpZiAoIXdlYkZy
YW1lTG9hZGVyQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmgKaW5kZXggMmYwY2M5ZDJjZjc2Yjg2MjAyYTljY2ZkOGI2NjgwZWIwZjVhMWI2My4uYjMy
OWFjNWU1ZmIyZmFlNDFkNDdmNjdmY2ExMjJjODMwZGM2NmZiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoK
IAogICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25zdDsKIAotICAgIHN0YXRpYyBXZWJGcmFtZSogZnJv
bUNvcmVGcmFtZShXZWJDb3JlOjpGcmFtZSYpOworICAgIHN0YXRpYyBXZWJGcmFtZSogZnJvbUNv
cmVGcmFtZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3Jl
RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVGcmFtZTsgfQogCiAgICAgRnJhbWVJbmZvRGF0
YSBpbmZvKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMzQ4ZmVkZTQzZjc3YTJjMWE3NjY1MDZjYzdhMjA0N2M2N2YyZDVjNi4uNTll
MmM0OTg1MjdkZWI3Y2YzMTc3ZTA1MzgxYTJjODM4OTJmMGVkZSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTEw
LTE3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1
dGhuXSBJbXBsZW1lbnQgQXV0aGVudGljYXRvckNhbmNlbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NTkyMDIwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2Fn
ZVRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
OgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgd2ViVmll
dzpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLWhpZC1jYW5jZWwuaHRtbDogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNh
dGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWw6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi5odG1sOgorCiAyMDE5LTEwLTE1ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IGVkaXRpbmcvYXN5
bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1pbnRlcmZhY2VzLmh0bWwgaXMgZmFpbGluZyBpbiBXZWJL
aXQxCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE4YjViZjIwNjJhODczZWZlYmZkZjkyNmQw
OGIxOGQ5ZDFlNGYyYWUuLmJjNmE3ZDNlYjg3ZjdkNWUyOTYxYjAxZWE0ZjFhNzZiODExM2ExNjUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzgsNiArMzM4LDcgQEAKIAkJNTc1OTlFMkIx
RjA3MUFBMDAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0
aWJpbGl0eVdyaXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1OTlFMjMxRjA3MTkyQzAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVj
dHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWwgKi87IH07CiAJCTU3NjYz
REVBMjM0RUE2NkQwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1u
ZmMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzY2M0RFOTIzNEVBNjBCMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24tbmZjLmh0bWwgKi87IH07CiAJCTU3NjYzREVDMjM0RjFGOTMwMEU4NUUwOSAvKiB3
ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzY2M0RFQjIzNEYxRjgwMDBF
ODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgKi87IH07
CisJCTU3NjYzREYzMjM1N0U0ODkwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1oaWQtY2FuY2VsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2NjNERjIyMzU3RTQ1RDAwRTg1RTA5IC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbCAqLzsgfTsKIAkJNTc2OUM1
MEIxRDlCMDAwMjAwMDg0N0ZCIC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2OUM1MEExRDlCMDAwMTAw
MDg0N0ZCIC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tICovOyB9OwogCQk1Nzc0QUE2ODIx
RkJCRjc4MDBBRjJBMUIgLyogVGVzdFNPQXV0aG9yaXphdGlvbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NzRBQTY3MjFGQkJGNzgwMEFGMkExQiAv
KiBUZXN0U09BdXRob3JpemF0aW9uLm1tICovOyB9OwogCQk1Nzc4RDA1NjIyMTEwQTI2MDA4OTlF
M0IgLyogTG9hZFdlYkFyY2hpdmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Nzc4RDA1NTIyMTEwQTI2MDA4OTlFM0IgLyogTG9hZFdlYkFyY2hpdmUu
bW0gKi87IH07CkBAIC0xNDQxLDYgKzE0NDIsNyBAQAogCQkJCUNEQzhFNDk3MUJDNkYxMDgwMDU5
NEZFQyAvKiB2aWRlby13aXRob3V0LWF1ZGlvLm1wNCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQkyRUJEOUQwQTIxMzQ3MzBEMDAyREE3NTggLyogdmlkZW8uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlDRDU3Nzc5OTIxMUNFMEU0MDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk1NzY2M0RGMzIzNTdFNDg5MDBFODVFMDkgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTU3NjYzREVDMjM0RjFGOTMwMEU4NUUwOSAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQk1NzY2M0RFQTIzNEVBNjZEMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24tbmZjLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTdDNjI0NTAyMzQ2QzIx
RTAwMzgzRkU3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCkBAIC0xODYyLDYgKzE4NjQsNyBAQAogCQk1NzU5OUUyNjFGMDcxOTJD
MDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5
LnNxbGl0ZTMtc2htICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gZmlsZTsgcGF0aCA9ICJJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBh
dGliaWxpdHkuc3FsaXRlMy1zaG0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzY2
M0RFOTIzNEVBNjBCMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
bmZjLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZj
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzY2M0RFQjIzNEYxRjgwMDBF
ODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1NzY2M0RGMjIzNTdFNDVEMDBFODVFMDkgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5j
ZWwuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NjlDNTBBMUQ5QjAwMDEw
MDA4NDdGQiAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1Nzc0QUE2NzIxRkJCRjc4MDBBRjJBMUIgLyogVGVzdFNP
QXV0aG9yaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RTT0F1dGhvcml6YXRp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NzhEMDU1MjIxMTBBMjYwMDg5
OUUzQiAvKiBMb2FkV2ViQXJjaGl2ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvYWRXZWJB
cmNoaXZlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzM4NCw2ICszMzg3LDcg
QEAKIAkJCQlGNDQ1MUM3NTFFQjhGRDdDMDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50
ZWRpdGFibGUuaHRtbCAqLywKIAkJCQlDRDU3Nzc5QjIxMUNFNkNFMDAxQjM3MUUgLyogdmlkZW8t
d2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgKi8sCiAJCQkJQ0Q1Nzc3OTgyMTFDREU4RjAw
MUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgKi8sCisJCQkJNTc2NjNERjIyMzU3RTQ1RDAw
RTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRt
bCAqLywKIAkJCQk1NzY2M0RFQjIzNEYxRjgwMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LWdldC1hc3NlcnRpb24taGlkLmh0bWwgKi8sCiAJCQkJNTc2NjNERTkyMzRFQTYwQjAwRTg1RTA5
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sICovLAogCQkJCTU3
QzYyNDRGMjM0NkMxRUMwMDM4M0ZFNyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcAppbmRleCAwYzFhMDY5ZjEzYzM5YzQwOWU1ZDVlMWIw
M2E3ZTkyYmY5YjM2NmMyLi4wNjZmYWU3OWY3OGIzZjZkNWQ4NWRmNjVkOGMzYzViYTg0NmRlODEy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1l
c3NhZ2VUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlk
b0hpZE1lc3NhZ2VUZXN0LmNwcApAQCAtNTYsMTYgKzU2LDE1IEBAIFRFU1QoRmlkb0hpZE1lc3Nh
Z2VUZXN0LCBUZXN0UGFja2V0U2l6ZSkKIH0KIAogLyoKLSAqIFUyZiBJbml0IFBhY2tldHMgYXJl
IG9mIHRoZSBmb3JtYXQ6Ci0gKiBCeXRlIDA6ICAgIDAKLSAqIEJ5dGUgMS00OiAgQ2hhbm5lbCBJ
RAotICogQnl0ZSA1OiAgICBDb21tYW5kIGJ5dGUKLSAqIEJ5dGUgNi03OiAgQmlnIEVuZGlhbiBz
aXplIG9mIGRhdGEKLSAqIEJ5dGUgOC1uOiAgRGF0YSBibG9jaworICogQ1RBUCBISUQgSW5pdCBQ
YWNrZXRzIGFyZSBvZiB0aGUgZm9ybWF0OgorICogQnl0ZSAwLTM6ICBDaGFubmVsIElECisgKiBC
eXRlIDQ6ICAgIENvbW1hbmQgYnl0ZQorICogQnl0ZSA1LTY6ICBCaWcgRW5kaWFuIHNpemUgb2Yg
ZGF0YQorICogQnl0ZSA3LW46ICBEYXRhIGJsb2NrCiAgKgogICogUmVtYWluaW5nIGJ1ZmZlciBp
cyBwYWRkZWQgd2l0aCAwCiAgKi8KLVRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0
RGF0YSkKK1RFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YTEpCiB7CiAgICAg
dWludDMyX3QgY2hhbm5lbElkID0gMHhGNTA2MDcwODsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YSB7MTAsIDExfTsKQEAgLTg4LDYgKzg3LDM0IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBU
ZXN0UGFja2V0RGF0YSkKICAgICAgICAgRVhQRUNUX0VRKDAsIHNlcmlhbGl6ZWRbaW5kZXhdKSA8
PCAibWlzbWF0Y2ggYXQgaW5kZXggIiA8PCBpbmRleDsKIH0KIAorLyoKKyAqIENUQVAgSElEIENv
bnRpbnVhdGlvbiBQYWNrZXRzIGFyZSBvZiB0aGUgZm9ybWF0OgorICogQnl0ZSAwLTM6ICBDaGFu
bmVsIElECisgKiBCeXRlIDQ6ICAgIFNFUQorICogQnl0ZSA1LW46ICBEYXRhIGJsb2NrCisgKgor
ICogUmVtYWluaW5nIGJ1ZmZlciBpcyBwYWRkZWQgd2l0aCAwCisgKi8KK1RFU1QoRmlkb0hpZE1l
c3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YTIpCit7CisgICAgdWludDMyX3QgY2hhbm5lbElkID0g
MHhGNTA2MDcwODsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKKyAgICBhdXRv
IGluaXRQYWNrZXQgPSBtYWtlVW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5u
ZWxJZCwgMCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpKTsKKyAgICBzaXplX3QgaW5kZXggPSAwOwor
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWQgPSBpbml0UGFja2V0LT5nZXRTZXJpYWxp
emVkRGF0YSgpOworICAgIEVYUEVDVF9FUSgoY2hhbm5lbElkID4+IDI0KSAmIDB4ZmYsIHNlcmlh
bGl6ZWRbaW5kZXgrK10pOworICAgIEVYUEVDVF9FUSgoY2hhbm5lbElkID4+IDE2KSAmIDB4ZmYs
IHNlcmlhbGl6ZWRbaW5kZXgrK10pOworICAgIEVYUEVDVF9FUSgoY2hhbm5lbElkID4+IDgpICYg
MHhmZiwgc2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAgRVhQRUNUX0VRKGNoYW5uZWxJZCAmIDB4
ZmYsIHNlcmlhbGl6ZWRbaW5kZXgrK10pOworICAgIEVYUEVDVF9FUSgwLCBzZXJpYWxpemVkW2lu
ZGV4KytdKTsKKworICAgIEVYUEVDVF9FUShkYXRhWzBdLCBzZXJpYWxpemVkW2luZGV4KytdKTsK
KyAgICBFWFBFQ1RfRVEoZGF0YVsxXSwgc2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAgZm9yICg7
IGluZGV4IDwgc2VyaWFsaXplZC5zaXplKCk7IGluZGV4KyspCisgICAgICAgIEVYUEVDVF9FUSgw
LCBzZXJpYWxpemVkW2luZGV4XSkgPDwgIm1pc21hdGNoIGF0IGluZGV4ICIgPDwgaW5kZXg7Cit9
CisKIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0Q29uc3RydWN0b3JzKQogewog
ICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDUwNjA3MDg7CkBAIC0yMDksNiArMjM2LDE2IEBA
IFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0RGVzZXJpYWxpemUpCiAgICAgfQogfQogCitU
RVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFByb3BlcnRpZXMpCit7CisgICAgdWludDMyX3Qg
Y2hhbm5lbElkID0gMHgwNTA2MDcwODsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKworICAg
IGF1dG8gbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUoY2hhbm5lbElkLCBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a0NhbmNlbCwgZGF0YSk7CisgICAgRVhQRUNUX0VRKGNoYW5uZWxJZCwg
bWVzc2FnZS0+Y2hhbm5lbElkKCkpOworICAgIEVYUEVDVF9FUShGaWRvSGlkRGV2aWNlQ29tbWFu
ZDo6a0NhbmNlbCwgbWVzc2FnZS0+Y21kKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCmluZGV4IDg4NDJkOWE1ZDEwMDRiYmU3Nzg5ZGY5ODUwNDk0MDRhZmQ4
MDQ5NjcuLjgzYWRjY2Y4OTllYTU3OTJiNDdmZjkzMWIyODAwZTMzODAxMTJhNzkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFC
TEUoV0VCX0FVVEhOKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAi
VENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaD4KQEAgLTM2LDEwICszNywxMiBAQAogI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1l
bnRhbEZlYXR1cmUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oPgogCiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
UmFuID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsRmFpbGVkID0g
ZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsU3VjY2VkZWQgPSBmYWxz
ZTsKK3N0YXRpYyBSZXRhaW5QdHI8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbD4gZ1BhbmVsOwog
CiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgOiBOU09iamVj
dCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPgogQGVuZApAQCAtNjcsNyArNzAs
NiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdDsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRlc3RX
ZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSB7Ci0gICAgUmV0YWluUHRyPF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWw+IF9wYW5lbDsKICAgICBSZXRhaW5QdHI8VGVzdFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxEZWxlZ2F0ZT4gX2RlbGVnYXRlOwogICAgIEJsb2NrUHRyPHZvaWQoX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+IF9jYWxsYmFjazsKIH0KQEAgLTg1LDEwICs4Nywx
MCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbDooX1dLV2ViQXV0aGVudGljYQogCiAgICAgX2RlbGVnYXRlID0gYWRvcHROUyhb
W1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBB
U1NFUlRfTkUocGFuZWwsIG5pbCk7Ci0gICAgX3BhbmVsID0gcGFuZWw7Ci0gICAgW19wYW5lbCBz
ZXREZWxlZ2F0ZTpfZGVsZWdhdGUuZ2V0KCldOworICAgIGdQYW5lbCA9IHBhbmVsOworICAgIFtn
UGFuZWwgc2V0RGVsZWdhdGU6X2RlbGVnYXRlLmdldCgpXTsKIAotICAgIEVYUEVDVF9XS19TVFJF
UShbX3BhbmVsIHJlbHlpbmdQYXJ0eUlEXSwgIiIpOworICAgIEVYUEVDVF9UUlVFKFtbZ1BhbmVs
IHJlbHlpbmdQYXJ0eUlEXSBpc0VxdWFsOkAiIl0gfHwgW1tnUGFuZWwgcmVseWluZ1BhcnR5SURd
IGlzRXF1YWw6QCJsb2NhbGhvc3QiXSk7CiAKICAgICBpZiAoX2lzUmFjeSkgewogICAgICAgICBp
ZiAoIV9jYWxsYmFjaykgewpAQCAtMTA2LDYgKzEwOCwyNCBAQCBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKIG5hbWVzcGFjZSB7CiAKK2NvbnN0IGNoYXIgcGFyZW50RnJhbWVbXSA9ICI8aHRt
bD48aWZyYW1lIGlkPSd0aGVGcmFtZScgc3JjPSdpRnJhbWUuaHRtbCc+PC9pZnJhbWU+PC9odG1s
PiI7Citjb25zdCBjaGFyIHN1YkZyYW1lW10gPQorIjxodG1sPiIKKyI8aW5wdXQgdHlwZT0ndGV4
dCcgaWQ9J2lucHV0Jz4iCisiPHNjcmlwdD4iCisiICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
IgorIiAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgZXhwZWN0Q2FuY2VsOiB0cnVlIH0gfSk7IgorIiAgICAgICAgaW50ZXJuYWxz
LndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOyIKKyIgICAgfSIKKyIg
ICAgY29uc3Qgb3B0aW9ucyA9IHsiCisiICAgICAgICBwdWJsaWNLZXk6IHsiCisiICAgICAgICAg
ICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNikiCisiICAgICAgICB9IgorIiAgICB9OyIK
KyIgICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKTsiCisiPC9zY3JpcHQ+Igor
IjwvaHRtbD4iOworCiBzdGF0aWMgX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqd2ViQXV0aGVudGlj
YXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCkKIHsKICAgICBzdGF0aWMgUmV0YWluUHRyPF9XS0V4
cGVyaW1lbnRhbEZlYXR1cmU+IHRoZUZlYXR1cmU7CkBAIC0xMjIsMjEgKzE0MiwxMiBAQCBzdGF0
aWMgX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqd2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxG
ZWF0dXJlKCkKICAgICByZXR1cm4gdGhlRmVhdHVyZS5nZXQoKTsKIH0KIAotLy8gT25seSBmb2N1
c2VkIGRvY3VtZW50cyBjYW4gdHJpZ2dlciBXZWJBdXRobi4KLXN0YXRpYyB2b2lkIGZvY3VzKFRl
c3RXS1dlYlZpZXcgKndlYlZpZXcpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIFtbd2ViVmll
dyBob3N0V2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6d2ViVmlld107Ci0jZWxpZiBQTEFURk9S
TShJT1MpCi0gICAgW3dlYlZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJdOwotI2VuZGlmCi19Ci0K
IHN0YXRpYyB2b2lkIHJlc2V0KCkKIHsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuID0g
ZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbEZhaWxlZCA9IGZhbHNlOwogICAgIHdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxTdWNjZWRlZCA9IGZhbHNlOworICAgIGdQYW5lbCA9IG51bGxw
dHI7CiB9CiAKIH0gLy8gbmFtZXNhcGNlOwpAQCAtMTQ5LDcgKzE2MCw2IEBAIFRFU1QoV2ViQXV0
aGVudGljYXRpb25QYW5lbCwgTm9QYW5lbFRpbWVvdXQpCiAgICAgW1tjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRo
ZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgIGZvY3VzKHdlYlZpZXcuZ2V0KCkpOwog
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0
ZXN0VVJMLmdldCgpXV07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJPcGVyYXRpb24g
dGltZWQgb3V0LiJdOwpAQCAtMTYzLDcgKzE3Myw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgTm9QYW5lbEhpZFN1Y2Nlc3MpCiAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2Vz
XSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlv
bkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOwotICAgIGZvY3VzKHdlYlZpZXcuZ2V0KCkpOwogCiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpXV07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CkBAIC0x
NzQsMTMgKzE4MywxMiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsVGltZW91
dCkKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07CiAKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gKmNvbmZpZ3VyYXRp
b24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQ
bHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJl
SlNDRm9yVGVzdGluZzpZRVNdOwogICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3Nl
dEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBl
cmltZW50YWxGZWF0dXJlKCldOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbl0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgZm9jdXMod2ViVmlldy5nZXQoKSk7CiAK
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRl
c3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4p
OwpAQCAtMTk4LDcgKzIwNiw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFuZWxI
aWRTdWNjZXNzKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
XSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25Q
YW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKLSAgICBmb2N1cyh3ZWJWaWV3LmdldCgpKTsKIAogICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQo
KV1dOwogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CkBAIC0yMjIs
NyArMjI5LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbFJhY3kxKQogICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW2RlbGVnYXRlIHNldElzUmFjeTp0cnVlXTsKICAg
ICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBmb2N1cyh3ZWJW
aWV3LmdldCgpKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGlj
YXRpb25QYW5lbFJhbik7CkBAIC0yNDMsNyArMjQ5LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBQYW5lbFJhY3kyKQogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW2RlbGVn
YXRlIHNldElzUmFjeTp0cnVlXTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKLSAgICBmb2N1cyh3ZWJWaWV3LmdldCgpKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAg
IFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CkBAIC0yNjYsNyArMjcxLDYg
QEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbFR3aWNlKQogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBm
b2N1cyh3ZWJWaWV3LmdldCgpKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmd2Vi
QXV0aGVudGljYXRpb25QYW5lbFJhbik7CkBAIC0yNzgsNiArMjgyLDE3NCBAQCBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsVHdpY2UpCiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50
aWNhdGlvblBhbmVsU3VjY2VkZWQpOwogfQogCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWws
IFJlbG9hZEhpZENhbmNlbCkKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4g
dGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8g
KmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0
aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFs
cyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVu
dGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
W1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAg
IFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07
CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuKTsKKyAgICBbd2ViVmll
dyByZWxvYWRdOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbEZhaWxlZCk7
Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTG9jYXRpb25DaGFuZ2VIaWRDYW5j
ZWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24taGlkLWNhbmNlbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgUmV0YWluUHRyPE5TVVJMPiBvdGhl
clVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQ
bHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFs
RmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
YW4pOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDogW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJsb2NhdGlvbiA9ICclQCciLCBbb3RoZXJVUkwgYWJzb2x1dGVTdHJpbmddXSBj
b21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25Q
YW5lbEZhaWxlZCk7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTmV3TG9hZEhp
ZENhbmNlbCkKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+
IG90aGVyVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJv
Y2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmlt
ZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25Q
YW5lbFJhbik7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpvdGhlclVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRp
b25QYW5lbEZhaWxlZCk7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgQ2xvc2VI
aWRDYW5jZWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNd
IF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9u
RXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2Vi
QXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmll
dyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0
aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CisgICAgW3dlYlZpZXcgX2Nsb3Nl
XTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQpOworfQorCitU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFN1YkZyYW1lQ2hhbmdlTG9jYXRpb25IaWRDYW5j
ZWwpCit7CisgICAgVENQU2VydmVyIHNlcnZlcihbcGFyZW50RnJhbWUgPSBTdHJpbmcocGFyZW50
RnJhbWUpLCBzdWJGcmFtZSA9IFN0cmluZyhzdWJGcmFtZSldIChpbnQgc29ja2V0KSB7CisgICAg
ICAgIE5TU3RyaW5nICpmaXJzdFJlc3BvbnNlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
CisgICAgICAgICAgICBAIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAiQ29udGVu
dC1MZW5ndGg6ICVkXHJcblxyXG4iCisgICAgICAgICAgICAiJUAiLAorICAgICAgICAgICAgcGFy
ZW50RnJhbWUubGVuZ3RoKCksCisgICAgICAgICAgICAoaWQpcGFyZW50RnJhbWUKKyAgICAgICAg
XTsKKyAgICAgICAgTlNTdHJpbmcgKnNlY29uZFJlc3BvbnNlID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6CisgICAgICAgICAgICBAIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAg
ICAiQ29udGVudC1MZW5ndGg6ICVkXHJcblxyXG4iCisgICAgICAgICAgICAiJUAiLAorICAgICAg
ICAgICAgc3ViRnJhbWUubGVuZ3RoKCksCisgICAgICAgICAgICAoaWQpc3ViRnJhbWUKKyAgICAg
ICAgXTsKKworICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgVENQU2Vy
dmVyOjp3cml0ZShzb2NrZXQsIGZpcnN0UmVzcG9uc2UuVVRGOFN0cmluZywgZmlyc3RSZXNwb25z
ZS5sZW5ndGgpOworICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgVENQ
U2VydmVyOjp3cml0ZShzb2NrZXQsIHNlY29uZFJlc3BvbnNlLlVURjhTdHJpbmcsIHNlY29uZFJl
c3BvbnNlLmxlbmd0aCk7CisgICAgfSk7CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVk
OllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFs
RmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRp
b25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KGlkKW1ha2VTdHJpbmco
Imh0dHA6Ly9sb2NhbGhvc3Q6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNlcnZlci5wb3J0KCkp
KV1dXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOworICAgIFt3
ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInRoZUZyYW1lLnNyYyA9ICdzaW1wbGUuaHRtbCci
IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlv
blBhbmVsRmFpbGVkKTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBTdWJGcmFt
ZURlc3RydWN0aW9uSGlkQ2FuY2VsKQoreworICAgIFRDUFNlcnZlciBzZXJ2ZXIoW3BhcmVudEZy
YW1lID0gU3RyaW5nKHBhcmVudEZyYW1lKSwgc3ViRnJhbWUgPSBTdHJpbmcoc3ViRnJhbWUpXSAo
aW50IHNvY2tldCkgeworICAgICAgICBOU1N0cmluZyAqZmlyc3RSZXNwb25zZSA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OgorICAgICAgICAgICAgQCJIVFRQLzEuMSAyMDAgT0tcclxuIgor
ICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAlZFxyXG5cclxuIgorICAgICAgICAgICAgIiVA
IiwKKyAgICAgICAgICAgIHBhcmVudEZyYW1lLmxlbmd0aCgpLAorICAgICAgICAgICAgKGlkKXBh
cmVudEZyYW1lCisgICAgICAgIF07CisgICAgICAgIE5TU3RyaW5nICpzZWNvbmRSZXNwb25zZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OgorICAgICAgICAgICAgQCJIVFRQLzEuMSAyMDAg
T0tcclxuIgorICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAlZFxyXG5cclxuIgorICAgICAg
ICAgICAgIiVAIiwKKyAgICAgICAgICAgIHN1YkZyYW1lLmxlbmd0aCgpLAorICAgICAgICAgICAg
KGlkKXN1YkZyYW1lCisgICAgICAgIF07CisKKyAgICAgICAgVENQU2VydmVyOjpyZWFkKHNvY2tl
dCk7CisgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBmaXJzdFJlc3BvbnNlLlVURjhT
dHJpbmcsIGZpcnN0UmVzcG9uc2UubGVuZ3RoKTsKKyAgICAgICAgVENQU2VydmVyOjpyZWFkKHNv
Y2tldCk7CisgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBzZWNvbmRSZXNwb25zZS5V
VEY4U3RyaW5nLCBzZWNvbmRSZXNwb25zZS5sZW5ndGgpOworICAgIH0pOworCisgICAgYXV0byAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50
aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
VGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAg
W3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOihpZCltYWtlU3RyaW5nKCJodHRwOi8vbG9jYWxob3N0OiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzZXJ2ZXIucG9ydCgpKSldXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlv
blBhbmVsUmFuKTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ0aGVGcmFtZS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoZUZyYW1lKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsK
KyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQpOworfQorCitURVNU
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsSGlkQ2FuY2VsKQoreworICAgIHJlc2V0KCk7
CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5j
ZWwiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlBy
b2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Cisg
ICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJp
bWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSYW4pOworICAgIFtnUGFuZWwgY2FuY2VsXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVz
c2FnZTpAIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl07CisgICAgRVhQRUNUX0ZBTFNFKHdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxGYWlsZWQpOworICAgIEVYUEVDVF9GQUxTRSh3ZWJBdXRoZW50aWNhdGlv
blBhbmVsU3VjY2VkZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQt
Y2FuY2VsLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZjEyNDgxMWQ0OWI1ZDg2ZjIzMTNkZDFiYmJkMzMwMGQxMWZmMzk3Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPGlucHV0
IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IGV4cGVjdENhbmNlbDogdHJ1ZSB9IH0pOworICAgICAgICBpbnRlcm5h
bHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBj
aGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAor
ICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9u
cykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgLy8gY29uc29sZS5sb2coIlN1Y2NlZWRl
ZCEiKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIu
cG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKKyAgICB9LCBlcnJvciA9PiB7CisgICAgICAgIC8v
IGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOworICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShlcnJvci5tZXNzYWdlKTsKKyAgICB9
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24taGlkLmh0bWwKaW5kZXggYjFlZjVhMzZkMjhhOGFkMTQ3MTBkOGQ3ZjdmMjVkZTlh
MWM2OTcwOS4uNjU1MTBkMTY5Y2ZiZjM4YWZhODlkYzRhZmRmZDg5OTVhMDVmMTQ1NSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1s
CkBAIC0xLDMgKzEsNCBAQAorPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+CiA8c2NyaXB0
PgogICAgIGNvbnN0IHRlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0ID0KICAgICAgICAgIkFLTUJv
bUpwWkZoQUtBaXR6dWorVHNsemVsZjMvdlp3SUd0RFFOZ29LZUZkNW9FaWVZemh5ekE2NXNhZjB0
SzIiICsKQEAgLTUsOCArNiwxMCBAQAogICAgICAgICAiWjUxVnN0dVFrdUhJMmVYaDBDdDFnUEMw
Z1N4M0NXTGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NGVHV1QldnQiIgKwogICAgICAgICAiNC9G
MFZCN0RsVVZNMDlJSFBteGUxTXpIVXdSb0NSWmJDQUlnR0tvdjZ4b0F4Mk1FZjYvNnFOczhPdXR6
aFAyQyIgKwogICAgICAgICAiUW9KMUw3RmU2NEc5dUJjPSI7Ci0gICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCi0gICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9
IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHBheWxvYWRCYXNlNjQ6
IFt0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndp
dGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KIAogICAgIGNv
bnN0IG9wdGlvbnMgPSB7CiAgICAgICAgIHB1YmxpY0tleTogewpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1uZmMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwKaW5kZXggNzA2YTZiN2Zm
YmVkZGExNDM1MjAwZDVkZmEyZWIyYTdlMjAxMWQyMC4uOTQ1YjZiNjU5NDJiNTZlZDFiMmRkY2U5
NmMzNTYyYWU0MWViMzBmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlv
bi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sCkBAIC0xLDMgKzEsNCBAQAorPGlucHV0IHR5cGU9InRl
eHQiIGlkPSJpbnB1dCI+CiA8c2NyaXB0PgogICAgIGNvbnN0IHRlc3ROZmNDdGFwVmVyc2lvbkJh
c2U2NCA9ICJSa2xFVDE4eVh6Q1FBQT09IjsKICAgICBjb25zdCB0ZXN0R2V0SW5mb1Jlc3BvbnNl
QXBkdUJhc2U2NCA9CkBAIC05LDggKzEwLDEwIEBACiAgICAgICAgICJaNTFWc3R1UWt1SEkyZVho
MEN0MWdQQzBnU3gzQ1dMaDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiArCiAgICAg
ICAgICI0L0YwVkI3RGxVVk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82
cU5zOE91dHpoUDJDIiArCiAgICAgICAgICJRb0oxTDdGZTY0Rzl1QmVRQUE9PSI7Ci0gICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFz
ZTY0LCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUFwZHVCYXNlNjRdIH0gfSk7CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lv
bkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RBc3NlcnRpb25NZXNz
YWdlQXBkdUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgo
KSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KIAogICAgIGNvbnN0IG9wdGlvbnMgPSB7
CiAgICAgICAgIHB1YmxpY0tleTogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi5odG1sCmluZGV4IGJmNDlhNWZkY2YxOGQ0NzBkNWIzMmI3ODZjMWQwZGM1
ZTA2Y2I5MmUuLjJkZTJlOTI3YzBhNTQxNTQ5NjdkZjVjNDlhNWZkYTBkZjAwNTE4Y2QgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24uaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwKQEAgLTEs
NCArMSw4IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KIDxzY3JpcHQ+CisgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUo
KCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKwogICAgIGNvbnN0IG9wdGlvbnMgPSB7CiAgICAg
ICAgIHB1YmxpY0tleTogewogICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgx
NiksCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMGViOTI0ZjUzZDMwOTNlMmNlNGQ5MjYzYmFmMTc4ZmE4ZGY3MzQ4Yi4uNWMy
NDQ0NDFlM2Y1NGVkYTYxMmMxZGI0NmM3YjE2ZWU0ODRhMGFlMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE5LTEwLTE3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgQXV0aGVudGljYXRvckNhbmNlbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTIzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NTkyMDIwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBvbmUgb2YgdGhlIGVycm9yIG1lc3NhZ2UgdGhhdCBp
cyBubyBsb25nZXIgZW1pdHRlZC4KKworICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sOgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQu
aHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6CisKIDIw
MTktMTAtMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTjogZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWludGVyZmFj
ZXMuaHRtbCBpcyBmYWlsaW5nIGluIFdlYktpdDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLmh0dHBzLmh0bWwKaW5kZXggNWU4ZjViODEyYmU1NzYzYzMxYmM1
ZDJkZmM4OTRjMDk1MGY1Nzg5My4uMWQ2ZWQ5MDU0YjgzYzdkMTQ1M2IxNzVjOGQzODlkMjhjMTU5
NmNmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLmh0
dHBzLmh0bWwKQEAgLTg3LDggKzg3LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAot
ICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBo
YXMgYmVlbiB2b2lkZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKLSAgICAgICAgcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7
CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVGhpcyByZXF1ZXN0
IGhhcyBiZWVuIGNhbmNlbGxlZCBieSBhIG5ldyByZXF1ZXN0LiIpOworICAgICAgICBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcgcmVx
dWVzdC4iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0d28gY29uc2VjdXRpdmUgcmVxdWVzdHMiKTsKIApAQCAt
MTA3LDE0ICsxMDcsMTQgQEAKICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0
eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCiAgICAgICAgICAgICB9CiAgICAgICAgIH07
Ci0gICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGNyZWF0aW9uT3B0aW9ucyksICJUaGlz
IHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CisgICAgICAgIGNv
bnN0IHJlc3VsdCA9IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuY3JlYXRlKGNyZWF0aW9uT3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFz
IGJlZW4gY2FuY2VsbGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CiAKICAgICAgICAgY29uc3QgcmVx
dWVzdE9wdGlvbnMgPSB7CiAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKICAgICAgICAgICAgICAg
ICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKQogICAgICAgICAgICAgfQog
ICAgICAgICB9OwotICAgICAgICBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChyZXF1ZXN0T3B0aW9ucyksICJUaGlzIHJlcXVlc3Qg
aGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CisgICAgICAgIHByb21pc2VSZWpl
Y3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KHJlcXVl
c3RPcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcgcmVx
dWVzdC4iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0d28gY29uc2VjdXRpdmUgcmVxdWVzdHMgKDIpIik7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0
cHMuaHRtbAppbmRleCA1NDQ2ZjU1NzBmMjlkNTM0NmFmNzg3Y2Y1NjRjOTNlNTY3MGFmNzBjLi5m
NjRlNGZjMzliMDA1MzE2MWMyYjk1Yzc3NzQ3YzQ3ZTE5OGYwYWI5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC0x
NjMsNyArMTYzLDEyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgcHJv
bWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJl
cXVlc3QuIik7CisgICAgICAgIC8vIFN0YWxsIHRoZSBmaXJzdCByZXF1ZXN0IHRvIHdhaXQgZm9y
IGNhbmNlbGxhdGlvbi4KKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgZXhwZWN0Q2FuY2VsOiB0
cnVlIH0gfSk7CisgICAgICAgIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVGhpcyByZXF1ZXN0IGhhcyBi
ZWVuIGNhbmNlbGxlZCBieSBhIG5ldyByZXF1ZXN0LiIpOworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNl
NjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3Jl
ZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IGNmMThmZjc3ZWYzM2ZhMzI0
MzIwZDNjNWIzYWM2NGRhOWVhNDI4MzIuLjM2YjQxZjc2ZmU2YTEyMGEzMWUzZTViOTViZDBhYzk3
MWM1MWYxMjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRw
cy5odG1sCkBAIC04Nyw4ICs4Nyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgY29uc3QgcmVzdWx0ID0gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJl
ZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7Ci0gICAgICAgIHByb21pc2VSZWplY3RzKHQs
ICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAi
VGhpcyByZXF1ZXN0IGhhcyBiZWVuIHZvaWRlZCBieSBhIG5ldyByZXF1ZXN0LiIpOworICAgICAg
ICBjb25zdCByZXN1bHQgPSBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBj
YW5jZWxsZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKKyAgICAgICAgcHJvbWlzZVJlamVjdHModCwg
Ik5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJU
aGlzIHJlcXVlc3QgaGFzIGJlZW4gY2FuY2VsbGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggdHdvIGNvbnNlY3V0aXZlIHJlcXVlc3RzIik7CiAKQEAgLTk4LDcgKzk4LDcgQEAKICAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKQogICAg
ICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChyZXF1
ZXN0T3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVl
c3QuIik7CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KHJlcXVlc3RPcHRpb25zKSwgIlRo
aXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKIAogICAg
ICAgICBjb25zdCBjcmVhdGlvbk9wdGlvbnMgPSB7CiAgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
QEAgLTExNCw3ICsxMTQsNyBAQAogICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKLSAgICAgICAgcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUoY3JlYXRpb25PcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMg
YmVlbiB2b2lkZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKKyAgICAgICAgcHJvbWlzZVJlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoY3JlYXRp
b25PcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcgcmVx
dWVzdC4iKTsKIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHR3byBjb25zZWN1dGl2ZSByZXF1ZXN0cyAoMikiKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApp
bmRleCAwY2YwM2U3ZGQ2ZTkxOTBiN2Y1NmY3YjkwZWM5MzljMGUyYWRlZGIxLi4wODdjOTM0YThl
MjY1Njg4NDkwZmEyODM5Njg2Y2RmNTBjYzk5MTBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0
dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC05MCw3ICs5MCw3IEBACiAg
ICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJUaGlz
IHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CisgICAgICAgIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpLCAiVGhpcyByZXF1ZXN0IGhhcyBiZWVuIGNhbmNlbGxlZCBieSBhIG5ldyBy
ZXF1ZXN0LiIpOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRp
b25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrQ3RhcEdl
dEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381319</attachid>
            <date>2019-10-18 11:46:01 -0700</date>
            <delta_ts>2019-10-18 13:56:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191523-20191018114600.patch</filename>
            <type>text/plain</type>
            <size>133604</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVjMzU5NTFkNTUwYjlk
MjllYjg3NzkyMGRlZjU4ZDI4ZTRlNWQ4Ny4uZjgyYWIxNTliZTNkNjM2ZDVmYzU0M2EzNzJlMWFk
NmJhZGY3NzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTEwLTE3ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgQXV0aGVudGljYXRvckNhbmNlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTkyMDIw
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0cyBpbiBleGlzdGluZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1B1
YmxpY0tleUNyZWRlbnRpYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbDo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNy
ZWRlbnRpYWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRp
YWxEYXRhLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RD
b252ZXJ0ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3Nh
Z2UuY3BwOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHA6CisgICAg
ICAgIChmaWRvOjpGaWRvSGlkSW5pdFBhY2tldDo6Z2V0U2VyaWFsaXplZERhdGEgY29uc3QpOgor
ICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Z2V0U2VyaWFsaXplZERh
dGEgY29uc3QpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRD
b25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbi5pZGw6CisgICAgICAgIEFkZHMgYSBuZXcgb3B0aW9uIHRvIHRl
c3QgQXV0aGVudGljYXRvckNhbmNlbC4KKwogMjAxOS0xMC0xNSAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1RGQ10gQWRkIHN1cHBvcnQgZm9yIGNvbGdy
b3VwL2NvbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAxMmNjMDM1MzY5ODBjMGNmYjQyM2UzYTQwMGI1NjcxNTYyN2Ew
MjEzLi4wZjFhMDQ2ZjI5Y2JlMmNmMzYyM2Q2ZGNmM2U2ZjgxYjhiZTk3MjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzMyBAQAorMjAxOS0xMC0xNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IEF1dGhlbnRpY2F0b3JDYW5j
ZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUy
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU5MjAyMDQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnQgdHdvIHdh
eXMgdG8gY2FuY2VsIGEgcGVuZGluZyBXZWJBdXRobiBjZXJlbW9ueToKKyAgICAgICAgMSkgVmlh
IG5hdmlnYXRpb24gYWN0aXZpdGllcy4gQWN0aXZpdGllcyBpbmNsdWRlIGkpIG1haW4gZnJhbWUg
bmF2aWdhdGlvbiwgaWkpIG1haW4gZnJhbWUgcmVsb2FkLAorICAgICAgICBpaWkpIG1haW4gZnJh
bWUgZGVzdHJ1Y3Rpb24sIGl2KSBzdWIgZnJhbWUgbmF2aWdhdGlvbiwgYW5kIHYpIHN1YiBmcmFt
ZSBkZXN0cnVjdGlvbi4gQWxsIHRoZSBhYm92ZQorICAgICAgICBhY3Rpdml0aWVzIHdpbGwgY2Fu
Y2VsIGFueSBwZW5kaW5nIFdlYkF1dGhuIGNlcmVtb255IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRo
IHRoZSBmcmFtZS4gVG8gcHJvdmUKKyAgICAgICAgdGhlIGFzc29jaWF0aW9uLCBhIEdsb2JhbEZy
YW1lSWRlbnRpZmllciBpcyBicmlkZ2VkIGludG8gV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0
YS4gTmF2aWdhdGlvbgorICAgICAgICBjYW5jZWwgaXMgZG9uZSBpbiBXZWJQYWdlUHJveHk6OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQsIGFuZCBkZXN0cnVjdGlvbiBjYW5j
ZWwgaXMgZG9uZQorICAgICAgICBpbiBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lGcmFtZSBh
bmQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlLgorICAgICAgICAyKSBWaWEgVUkuIFRoaXMgcGF0
aCBpcyBzaW1wbHkgYnJpZGdlZCAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY2FuY2VsXSBp
bnRvIEF1dGhlbnRpY2F0b3JNYW5hZ2VyLgorICAgICAgICBOb3RlZCwgdGhpcyBwYXRjaCBmb2xs
b3dzIHRoZSBzcGVjIHRvIHdhaXQgdW50aWwgdGltZSBvdXQgdG8gbm90aWZ5IFJQcy4KKyAgICAg
ICAgUmVmZXJlbmNlczogaSkgU3RlcCAyMCBvZiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0
aG4vI2NyZWF0ZUNyZWRlbnRpYWwsIGlpKSBTdGVwIDE4IG9mCisgICAgICAgIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi93ZWJhdXRobi8jZ2V0QXNzZXJ0aW9uCisKKyAgICAgICAgQXMgZm9yIHdoYXQg
dGhlIGNhbmNlbCBhY3R1YWxseSBkb2VzLCBpdDoKKyAgICAgICAgMSkgc3RvcHMgYW55IEhJRC9O
RkMgc2Nhbm5pbmc7CisgICAgICAgIDIpIHNlbmRzIENUQVBISURfQ0FOQ0VMIHRvIGFueSBISUQg
YXV0aGVudGljYXRvcnMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuIFJlZmVyZW5jZToKKyAgICAgICAg
aHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE5MDEzMC9maWRv
LWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxOTAxMzAuaHRtbCN1
c2ItaGlkLWNhbmNlbAorICAgICAgICBTZW5kaW5nIENUQVBISURfQ0FOQ0VMLCBob3dldmVyLCBp
cyBub3QgdHJpdmlhbC4gQW4gYWJzdHJhY3QgY2xhc3MgRmlkb0F1dGhlbnRpY2F0b3IgaXMgY3Jh
ZnRlZCB0bworICAgICAgICBkbyB0aGlzIGxhYm9yIGZvciBib3RoIEN0YXBBdXRoZW50aWNhdG9y
IGFuZCBVMmZBdXRoZW50aWNhdG9yIGR1cmluZyB0aGUgdGltZSBvZiBkZXN0cnVjdGlvbnMuCisg
ICAgICAgIE5vdGVkOiBUaGUgQ3RhcEhpZERyaXZlciBpcyB0aGUgb25seSBDdGFwRHJpdmVyIGlt
cGxlbWVudHMgdGhlIGNhbmNlbCBtZXRob2QuIFNpbmNlIHRoZSBtZXNzYWdlCisgICAgICAgIGlz
IHNlbnQgZHVyaW5nIHN0YXRlIHJlc2V0LCBsaWZlY3ljbGUgb2YgdGhlIEhpZENvbmVuY3Rpb24g
YW5kIEhpZFNlcnZpY2Ugd2hpY2ggbWFuYWdlIHRoZSB1bmRlcmx5aW5nCisgICAgICAgIElPSElE
RGV2aWNlUmVmIGlzIHZlcnkgaGFyZCB0byBob2xkLiBUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUg
cmVndWxhciBhc3luYyBzZW5kZXIuIFRoZXJlZm9yZSwKKyAgICAgICAgSGlkQ29ubmVjdGlvbjo6
c2VuZFN5bmMgaXMgY3JhZnRlZCB0byBzZW5kIHRoZSBtZXNzYWdlIHN5bmNocm9ub3VzbHkgdG8g
Z2V0IHJpZCBvZiB0aGUgdGVkaW91c25lc3MKKyAgICAgICAgb2YgbWFuYWdpbmcgdGhvc2UgbGlm
ZWN5Y2xlcy4KKworICAgICAgICBQLlMuIFZlY3Rvcjo6Z3JvdyBkb2Vzbid0IGluaXRpYWxpemUg
UE9EIHR5cGVzLiBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggYWxzbyBhcHBlbmRzIGl0IHdpdGggbWVt
c2V0CisgICAgICAgIGZvciBGaWRvSGlkUGFja2V0LgorCisgICAgICAgIFAuUy5TLiBUaGlzIHBh
dGNoIGFsc28gc2ltcGxpZmllcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgYnk6IGkp
IG1vdmluZyBjb2RlIGZyb20gQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50CisgICAgICAg
IHRvIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCwgYW5kIGlpKSB1c2luZyBzZW5k
V2l0aEFzeW5jUmVwbHkuIFRoZSBsYXR0ZXIgYWxsb3dzIHVzIHRvCisgICAgICAgIGdldCByaWQg
b2YgdGhlIGNvbXBsZXggbWVjaGFuaXNtIG9mIGVuc3VyaW5nIHRoZSByaWdodCByZXBseSBpcyBy
ZXR1cm5lZC4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBh
bmVsLmNwcDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6Y3JlYXRlKToK
KyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6V2ViQXV0aGVudGljYXRpb25Q
YW5lbCk6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OmNhbmNlbCBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNhbmNlbF0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OmNsZWFyU3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUGFuZWwpOgorICAgICAg
ICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVzZXRTdGF0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6SGlkQ29ubmVjdGlvbjo6aXNJbml0aWFsaXplZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OnNldElzSW5pdGlhbGl6ZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1tOgor
ICAgICAgICAoV2ViS2l0OjpIaWRDb25uZWN0aW9uOjp+SGlkQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpI
aWRDb25uZWN0aW9uOjp0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpIaWRDb25uZWN0aW9u
OjpzZW5kU3luYyk6CisgICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OnNlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpIaWRDb25uZWN0aW9uOjpyZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNr
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnRlcm1pbmF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hp
ZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpyZXF1ZXN0UmVwbHkpOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpDdGFwQXV0aGVudGljYXRvcik6CisgICAgICAg
IChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChX
ZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0
OjpDdGFwQXV0aGVudGljYXRvcjo6dHJ5RG93bmdyYWRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaDoKKyAgICAgICAgKFdl
YktpdDo6Q3RhcERyaXZlcjo6Y2FuY2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhp
ZERyaXZlcjo6V29ya2VyOjp3cml0ZSk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6
Oldvcmtlcjo6cmVhZCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6Oldvcmtlcjo6
cmV0dXJuTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6Oldvcmtlcjo6
cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OmNhbmNlbCk6
CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJDaGFubmVsQWxs
b2NhdGVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlclJl
c3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpyZXR1cm5S
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OnJlc2V0KToKKyAgICAg
ICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6Y2FuY2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bC5jcHAuCisgICAgICAgIChXZWJLaXQ6OkZpZG9BdXRoZW50aWNhdG9yOjpGaWRvQXV0aGVudGlj
YXRvcik6CisgICAgICAgIChXZWJLaXQ6OkZpZG9BdXRoZW50aWNhdG9yOjp+Rmlkb0F1dGhlbnRp
Y2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpGaWRvQXV0aGVudGljYXRvcjo6ZHJpdmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6Rmlkb0F1dGhlbnRpY2F0b3I6OnJlbGVhc2VEcml2ZXIpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNh
dG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmNwcC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9GaWRvU2VydmljZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2aWNlOjpj
b250aW51ZUFmdGVyR2V0SW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlUyZkF1dGhl
bnRpY2F0b3I6OlUyZkF1dGhlbnRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50
aWNhdG9yOjppc3N1ZUNvbW1hbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXNldFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95RnJhbWUpOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRv
ckF2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6fldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6ZnJvbUNvcmVG
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisKIDIwMTkt
MTAtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjUxMTM4LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRl
bnRpYWxzQ29udGFpbmVyLmNwcAppbmRleCAyZjAzODk1NDk2YzQwN2I2NmJhZGY1NzVkZDMyYjVm
YzU4N2IzNmJlLi5kMzA5ZDhiYTRkNTNjN2MyOTc2OTJhODE3ZmEzZWFjYWIwMTkzNzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRl
bnRpYWxzQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRp
YWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcApAQCAtODksNyArODksNyBAQCB2
b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYg
b3B0aW9ucywgQ3JlZGVudGlhbFBybwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9k
b2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5kaXNjb3ZlckZyb21F
eHRlcm5hbFNvdXJjZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLnB1Ymxp
Y0tleS52YWx1ZSgpLCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3Zl
KG9wdGlvbnMuc2lnbmFsKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9kb2N1bWVudC0+cGFn
ZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5kaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJj
ZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUoKSwgZG9lc0hhdmVTYW1lT3Jp
Z2luQXNJdHNBbmNlc3RvcnMoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJv
bWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpzdG9yZShjb25zdCBCYXNp
Y0NyZWRlbnRpYWwmLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpCkBAIC0xMjQsNyArMTI0
LDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6aXNDcmVhdGUoQ3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYmIG9wdGlvbnMsIENyZWRlbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuY3JlYXRl
KG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIG9wdGlvbnMucHVibGljS2V5LnZhbHVlKCks
IGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCksIFdURk1vdmUob3B0aW9ucy5zaWdu
YWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcigpLmNyZWF0ZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNLZXku
dmFsdWUoKSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RGTW92ZShvcHRp
b25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29u
dGFpbmVyOjpwcmV2ZW50U2lsZW50QWNjZXNzKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggNDNhM2RmNGFjNTBkNGEw
NGEwOGFiOTg4MGQ1NjVhZTA3OTRlY2JjYy4uYzY0YzlhMzIyZDc5ZDkyZmUxYjA2ZjY2NGE4YTEz
ODdkYmI0ZWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIgogI2luY2x1ZGUgIkF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJK
U0Jhc2ljQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAj
aW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbC5oIgpAQCAtMTM1LDEwICsxMzYsMTMgQEAgdm9p
ZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QXV0
aGVudGljYXRvckNvb3JkaW5hdG8KICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0K
IAotdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZShjb25zdCBTZWN1cml0eU9y
aWdpbiYgY2FsbGVyT3JpZ2luLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJiBvcHRpb25zLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRT
aWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QK
K3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25z
LCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJv
cnRTaWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKIHsKICAgICB1c2lu
ZyBuYW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CiAKKyAgICBjb25z
dCBhdXRvJiBjYWxsZXJPcmlnaW4gPSBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOworICAgIGF1
dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOwogICAgIC8v
IFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4v
I2NyZWF0ZUNyZWRlbnRpYWwgYXMgb2YgNSBEZWNlbWJlciAyMDE3LgogICAgIC8vIFN0ZXAgMSwg
MywgMTYgYXJlIGhhbmRsZWQgYnkgdGhlIGNhbGxlci4KICAgICAvLyBTdGVwIDIuCkBAIC0xODUs
MTQgKzE4OSwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2NsaWVudERhdGFKc29uID0gV1RG
TW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBhYm9ydFNp
Z25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbERhdGEmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlv
bikgbXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1v
dmUoY2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWdu
YWwgPSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiYgZGF0
YSwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhYm9y
dFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgpKSB7CiAgICAgICAgICAgICBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4i
X3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBkYXRhLmNs
aWVudERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSnNvbik7Ci0gICAgICAgIGlmIChhdXRv
IHB1YmxpY0tleUNyZWRlbnRpYWwgPSBQdWJsaWNLZXlDcmVkZW50aWFsOjp0cnlDcmVhdGUoZGF0
YSkpIHsKKyAgICAgICAgaWYgKGF1dG8gcHVibGljS2V5Q3JlZGVudGlhbCA9IFB1YmxpY0tleUNy
ZWRlbnRpYWw6OnRyeUNyZWF0ZShXVEZNb3ZlKGRhdGEpKSkgewogICAgICAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKHB1YmxpY0tleUNyZWRlbnRpYWwuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0yMDAsMTMgKzIwNCwxNiBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcjo6Y3JlYXRlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0
CiAgICAgICAgIHByb21pc2UucmVqZWN0KGV4Y2VwdGlvbi50b0V4Y2VwdGlvbigpKTsKICAgICB9
OwogICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQgYW5kIGhhbmRsZWQgaW4g
dGhlIG1lc3Nlbmdlci4KLSAgICBtX2NsaWVudC0+bWFrZUNyZWRlbnRpYWwoY2xpZW50RGF0YUpz
b25IYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV9jbGll
bnQtPm1ha2VDcmVkZW50aWFsKCpmcmFtZSwgY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25zLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpk
aXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3Jp
Z2luLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIGJv
b2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNp
Z25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAordm9pZCBBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRp
b25zLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYg
YWJvcnRTaWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKIHsKICAgICB1
c2luZyBuYW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CiAKKyAgICBh
dXRvJiBjYWxsZXJPcmlnaW4gPSBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOwogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2Ny
ZWF0ZUNyZWRlbnRpYWwgYXMgb2YgNSBEZWNlbWJlciAyMDE3LgogICAgIC8vIFN0ZXAgMSwgMywg
MTMgYXJlIGhhbmRsZWQgYnkgdGhlIGNhbGxlci4KICAgICAvLyBTdGVwIDIuCkBAIC0yNTMsMTQg
KzI2MCwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0
ZXJuYWxTb3VyY2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92
ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25h
bCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbERhdGEmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikg
bXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUo
Y2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwg
PSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiYgZGF0YSwg
RXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNp
Z25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgpKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3Mg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBkYXRhLmNsaWVu
dERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSnNvbik7Ci0gICAgICAgIGlmIChhdXRvIHB1
YmxpY0tleUNyZWRlbnRpYWwgPSBQdWJsaWNLZXlDcmVkZW50aWFsOjp0cnlDcmVhdGUoZGF0YSkp
IHsKKyAgICAgICAgaWYgKGF1dG8gcHVibGljS2V5Q3JlZGVudGlhbCA9IFB1YmxpY0tleUNyZWRl
bnRpYWw6OnRyeUNyZWF0ZShXVEZNb3ZlKGRhdGEpKSkgewogICAgICAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKHB1YmxpY0tleUNyZWRlbnRpYWwuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0yNjgsNyArMjc1LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJgogICAg
ICAgICBwcm9taXNlLnJlamVjdChleGNlcHRpb24udG9FeGNlcHRpb24oKSk7CiAgICAgfTsKICAg
ICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBt
ZXNzZW5nZXIuCi0gICAgbV9jbGllbnQtPmdldEFzc2VydGlvbihjbGllbnREYXRhSnNvbkhhc2gs
IG9wdGlvbnMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX2NsaWVudC0+Z2V0
QXNzZXJ0aW9uKCpmcmFtZSwgY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJp
ZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVkPElE
TEJvb2xlYW4+JiYgcHJvbWlzZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IDljNjVh
ZTZhNjc5YmE0OTc5NTkyZTIyOTk5Yjg5M2VhYTM2NjIxOWMuLmJkYWE1NTUwMDYzYWQ5OTAxMDg0
YWU5OWM4Njc0YzViZGJiNDc5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBYm9ydFNpZ25hbDsKIGNsYXNzIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNsYXNzIEJhc2ljQ3JlZGVudGlhbDsKLWNsYXNz
IFNlY3VyaXR5T3JpZ2luOworY2xhc3MgRG9jdW1lbnQ7CiAKIHN0cnVjdCBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9uczsKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQ+JiYpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCBzdGF0aWMg
bWV0aG9kcyBvZiBQdWJsaWNLZXlDcmVkZW50aWFsLgotICAgIHZvaWQgY3JlYXRlKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYs
IGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3Jl
ZGVudGlhbFByb21pc2UmJikgY29uc3Q7Ci0gICAgdm9pZCBkaXNjb3ZlckZyb21FeHRlcm5hbFNv
dXJjZShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucyYsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNp
Z25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7CisgICAgdm9pZCBjcmVhdGUoY29u
c3QgRG9jdW1lbnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwg
Ym9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVk
ZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2b2lkIGRpc2NvdmVyRnJvbUV4dGVybmFsU291
cmNlKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiwgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYm
LCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKICAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVh
bj4mJikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMTA0ZjcwZjQzODI5ZTE5NTA1MmU5
ZDRhMTYwZjliYzFkODAyYzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlICJQdWJs
aWNLZXlDcmVkZW50aWFsRGF0YS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OjpyZXF1ZXN0UmVwbHkodWludDY0X3QgbWVzc2Fn
ZUlkLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwgY29uc3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKQotewotICAgIGlmIChtZXNzYWdlSWQg
IT0gbV9hY2N1bXVsYXRlZFJlcXVlc3RNZXNzYWdlSWQgLSAxKQotICAgICAgICByZXR1cm47Ci0g
ICAgbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIoZGF0YSwgZXhjZXB0aW9uKTsKLX0KLQotdm9p
ZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCByZXN1
bHQpCi17Ci0gICAgYXV0byBoYW5kbGVyID0gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxl
cnMudGFrZShtZXNzYWdlSWQpOwotICAgIGhhbmRsZXIocmVzdWx0KTsKLX0KLQotdWludDY0X3Qg
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OjpzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXIoUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICBpZiAobV9wZW5k
aW5nQ29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVy
KHsgfSwgeyBOb3RBbGxvd2VkRXJyb3IsICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5
IGEgbmV3IHJlcXVlc3QuIl9zIH0pOwotCi0gICAgbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGhhbmRsZXIpOwotICAgIHJldHVybiBtX2FjY3VtdWxhdGVkUmVxdWVzdE1lc3Nh
Z2VJZCsrOwotfQotCi11aW50NjRfdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OmFk
ZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
Ci17Ci0gICAgdWludDY0X3QgbWVzc2FnZUlkID0gbV9hY2N1bXVsYXRlZFF1ZXJ5TWVzc2FnZUlk
Kys7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdRdWVyeUNvbXBsZXRpb25IYW5kbGVy
cy5hZGQobWVzc2FnZUlkLCBXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFk
ZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJldHVybiBtZXNzYWdlSWQ7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaAppbmRleCAwMzMwY2RhMzgyNzdlNjFmZjE2
M2QzNTA2OTE2N2RlMGYyNWZmZDc4Li5iNmNkYjUwYjYwZmQxMjNkODNmNGI2Y2M2Mzc5MmI2MDJj
MTU4OGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM1LDEyICszNSwx
MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CitjbGFz
cyBGcmFtZTsKIAogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CiBz
dHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zOwogCi11c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
JiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKK3VzaW5nIFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbERhdGEmJiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYmKT47CiB1c2luZyBRdWVyeUNv
bXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAKIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ+IHsKQEAgLTUwLDI2
ICs1MSw5IEBAIHB1YmxpYzoKICAgICBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQoKSA9
IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KCkg
PSBkZWZhdWx0OwogCi0gICAgLy8gU2VuZGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRl
bnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwg
Y29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwot
Ci0gICAgLy8gUmVjZWl2ZXJzLgotICAgIHZvaWQgcmVxdWVzdFJlcGx5KHVpbnQ2NF90IG1lc3Nh
Z2VJZCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmLCBjb25zdCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhJik7Ci0gICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpOwotCi1w
cm90ZWN0ZWQ6Ci0gICAgLy8gT25seSBvbmUgcmVxdWVzdCBpcyBhbGxvd2VkIGF0IG9uZSB0aW1l
LiBBIG5ldyByZXF1ZXN0IHdpbGwgY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3QuCi0gICAgLy8g
QSBtZXNzYWdlIGlkIHRoYXQgaXMgdGllZCB0byB0aGUgcmVxdWVzdCB3aWwgYmUgZ2VuZXJhdGVk
IGVhY2ggdGltZSB0byBwcmV2ZW50IG1pc21hdGNoaW5nIHJlc3BvbnNlcy4KLSAgICB1aW50NjRf
dCBzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYp
OwotICAgIHVpbnQ2NF90IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVlcnlDb21wbGV0aW9u
SGFuZGxlciYmKTsKLQotcHJpdmF0ZToKLSAgICB1aW50NjRfdCBtX2FjY3VtdWxhdGVkUmVxdWVz
dE1lc3NhZ2VJZCB7IDEgfTsKLSAgICBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgbV9wZW5kaW5n
Q29tcGxldGlvbkhhbmRsZXI7Ci0gICAgdWludDY0X3QgbV9hY2N1bXVsYXRlZFF1ZXJ5TWVzc2Fn
ZUlkIHsgMSB9OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXI+
IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOworICAgIHZpcnR1YWwgdm9pZCBtYWtl
Q3JlZGVudGlhbChjb25zdCBGcmFtZSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXImJikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgeyB9OworICAgIHZpcnR1YWwgdm9p
ZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21w
bGV0aW9uSGFuZGxlciYmKSB7IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRp
YWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50
aWFsLmNwcAppbmRleCBiYzI4MmQ0NTFmZjE3MWFmNTYyODJiZTAwOTQwN2RmZGM4MWZiNTQwLi44
ZGU2MDBjNzk0ODcxMzA2YWI3NzRkMmRiZmM4MjIzMGM2ZDE2YzlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8UHVibGlj
S2V5Q3JlZGVudGlhbD4gUHVibGljS2V5Q3JlZGVudGlhbDo6dHJ5Q3JlYXRlKGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhKQorUmVmUHRyPFB1YmxpY0tleUNyZWRlbnRpYWw+IFB1
YmxpY0tleUNyZWRlbnRpYWw6OnRyeUNyZWF0ZShQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYmIGRh
dGEpCiB7CiAgICAgaWYgKCFkYXRhLnJhd0lkIHx8ICFkYXRhLmNsaWVudERhdGFKU09OKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmgKaW5kZXggNGJlNzE1YjM1NDdkODJhNzZmZDdk
MzgyOWFkNmIxZGQxMGYzZWE5OS4uZDJhNTUzYTljMDNkNDY2NWUwOGQwYTBlYjkzYzBhMzFjZDBm
MjAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNL
ZXlDcmVkZW50aWFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJs
aWNLZXlDcmVkZW50aWFsLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICBPcHRp
b25hbDxib29sPiBhcHBpZDsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxQdWJsaWNLZXlD
cmVkZW50aWFsPiB0cnlDcmVhdGUoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGEmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFB1YmxpY0tleUNyZWRlbnRpYWw+IHRyeUNyZWF0ZShQdWJsaWNLZXlD
cmVkZW50aWFsRGF0YSYmKTsKIAogICAgIEFycmF5QnVmZmVyKiByYXdJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmF3SWQucHRyKCk7IH0KICAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2UqIHJlc3BvbnNl
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5wdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oCmlu
ZGV4IDdlNjNiYTM3ZTQyMmE3MWM5YWVmMDY5M2QxY2NkODgyOWNkNDE1OWYuLjZhMDU0ZWZiM2I4
ZDc0YWFlYzc4YmM4ODJlZDBmZDY1YzNjNzFkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgKQEAgLTM1
LDE5ICszNSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdG9yUmVz
cG9uc2U7CiAKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7Ci0gICAgbXV0YWJsZSBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHJhd0lkOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmF3SWQ7
CiAKICAgICAvLyBBdXRoZW50aWNhdG9yUmVzcG9uc2UKICAgICBib29sIGlzQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U7Ci0gICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZmZXI+IGNs
aWVudERhdGFKU09OOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2xpZW50RGF0YUpTT047CiAK
ICAgICAvLyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZQotICAgIG11dGFibGUgUmVm
UHRyPEFycmF5QnVmZmVyPiBhdHRlc3RhdGlvbk9iamVjdDsKKyAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGF0dGVzdGF0aW9uT2JqZWN0OwogCiAgICAgLy8gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlCi0gICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZmZXI+IGF1dGhlbnRpY2F0b3JEYXRh
OwotICAgIG11dGFibGUgUmVmUHRyPEFycmF5QnVmZmVyPiBzaWduYXR1cmU7Ci0gICAgbXV0YWJs
ZSBSZWZQdHI8QXJyYXlCdWZmZXI+IHVzZXJIYW5kbGU7CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBhdXRoZW50aWNhdG9yRGF0YTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHNpZ25hdHVyZTsK
KyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHVzZXJIYW5kbGU7CiAKICAgICAvLyBFeHRlbnNpb25z
CiAgICAgT3B0aW9uYWw8Ym9vbD4gYXBwaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuaAppbmRl
eCA0YWNjM2ZmNjJiOTUyNDlmNDg3YjIyY2U4NGFjNDE3OWY0YzMxODZmLi43ODExNGZhZWI3Yjdk
MzlmY2I2NjllYmIyOGEwOGU4MWU3ZjVlYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmgK
QEAgLTUzLDggKzUzLDcgQEAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1h
a2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWkKIFdFQkNPUkVfRVhQT1JU
IFZlY3Rvcjx1aW50OF90PiBlbmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zJiwgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmlj
YXRpb25BdmFpbGFiaWxpdHkpOwogCiAvLyBSZXByZXNlbnRzIENUQVAgcmVxdWVzdHMgd2l0aCBl
bXB0eSBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcKLS8vIEF1dGhlbnRpY2F0b3JHZXRJbmZvLCBBdXRo
ZW50aWNhdG9yQ2FuY2VsLCBBdXRoZW50aWNhdG9yUmVzZXQgYW5kCi0vLyBBdXRoZW50aWNhdG9y
R2V0TmV4dEFzc2VydGlvbiBjb21tYW5kcy4KKy8vIEF1dGhlbnRpY2F0b3JHZXRJbmZvLCBBdXRo
ZW50aWNhdG9yUmVzZXQgYW5kIEF1dGhlbnRpY2F0b3JHZXROZXh0QXNzZXJ0aW9uIGNvbW1hbmRz
LgogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUVtcHR5QXV0aGVudGljYXRv
clJlcXVlc3QoQ3RhcFJlcXVlc3RDb21tYW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgZmlkbwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNz
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVz
c2FnZS5jcHAKaW5kZXggMWI5MTJkOThkOWYwNGYzMDc0YTFiOGUxYTYyNjAxYTQyZmFmMzU3ZC4u
YjEyZGFlZmVlMTRlNTEyYjRmZjRhNzRhMTI2MTA0MWQ3MzU5ZDZkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3Bw
CkBAIC0xNDYsNiArMTQ2LDcgQEAgc2l6ZV90IEZpZG9IaWRNZXNzYWdlOjpudW1QYWNrZXRzKCkg
Y29uc3QKIAogRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHVpbnQzMl90IGNoYW5uZWxJ
ZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KQogICAgIDogbV9jaGFubmVsSWQoY2hhbm5lbElkKQorICAgICwgbV9jbWQodHlwZSkKIHsKICAg
ICB1aW50OF90IHNlcXVlbmNlID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCmluZGV4IDI2YjgwYWE4YTVmMTM5
NjNjNzY4ZTdlOTIzYmJhYWIyYjg3YjVlZWUuLjUyMzIyMGExNmZiZmQzNDM5ZTUxMGU1MjcxYjE5
YmU2NDY3OTk2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkUGFja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKQEAgLTk5LDcgKzk5LDkgQEAgVmVjdG9yPHVpbnQ4
X3Q+IEZpZG9IaWRJbml0UGFja2V0OjpnZXRTZXJpYWxpemVkRGF0YSgpIGNvbnN0CiAgICAgc2Vy
aWFsaXplZC5hcHBlbmQoKG1fcGF5bG9hZExlbmd0aCA+PiA4KSAmIDB4ZmYpOwogICAgIHNlcmlh
bGl6ZWQuYXBwZW5kKG1fcGF5bG9hZExlbmd0aCAmIDB4ZmYpOwogICAgIHNlcmlhbGl6ZWQuYXBw
ZW5kKG1fZGF0YS5iZWdpbigpLCBtX2RhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIG9mZnNldCA9IHNl
cmlhbGl6ZWQuc2l6ZSgpOwogICAgIHNlcmlhbGl6ZWQuZ3JvdyhrSGlkUGFja2V0U2l6ZSk7Cisg
ICAgbWVtc2V0KHNlcmlhbGl6ZWQuZGF0YSgpICsgb2Zmc2V0LCAwLCBrSGlkUGFja2V0U2l6ZSAt
IG9mZnNldCk7CiAKICAgICByZXR1cm4gc2VyaWFsaXplZDsKIH0KQEAgLTE0Nyw3ICsxNDksOSBA
QCBWZWN0b3I8dWludDhfdD4gRmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Z2V0U2VyaWFsaXpl
ZERhdGEoKSBjb25zdAogICAgIHNlcmlhbGl6ZWQuYXBwZW5kKG1fY2hhbm5lbElkICYgMHhmZik7
CiAgICAgc2VyaWFsaXplZC5hcHBlbmQobV9zZXF1ZW5jZSk7CiAgICAgc2VyaWFsaXplZC5hcHBl
bmQobV9kYXRhLmJlZ2luKCksIG1fZGF0YS5zaXplKCkpOworICAgIGF1dG8gb2Zmc2V0ID0gc2Vy
aWFsaXplZC5zaXplKCk7CiAgICAgc2VyaWFsaXplZC5ncm93KGtIaWRQYWNrZXRTaXplKTsKKyAg
ICBtZW1zZXQoc2VyaWFsaXplZC5kYXRhKCkgKyBvZmZzZXQsIDAsIGtIaWRQYWNrZXRTaXplIC0g
b2Zmc2V0KTsKIAogICAgIHJldHVybiBzZXJpYWxpemVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAw
ZGE2Mjc5Y2M1MTUzNjI3ODc0OThlMzJkOWJhY2IwMmNjOTA5ZTFkLi5hODg4ODZmNWI5NDYyNGRi
MjQ0MjAxNGNhYWMxMmVhNjgwZjYyYWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjU5LDcgKzI1OSw2
IEBAIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCiAKIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcAotTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwCiBN
b2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCiBNb2R1bGVzL3dlYmF1
dGhuL2FwZHUvQXBkdUNvbW1hbmQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2EyYTRlYTY5YWUzYjZjMWY5ODRlMGY2M2Fi
MTI3OGNjN2ZiYjMwMy4uY2JkNTM0MmUwOWVkY2Q5NWU3MzY2MGZjYTI4ZmQ2OThhMTg4ODIyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtODY5Niw3ICs4Njk2LDYgQEAKIAkJNTc2MDgyNEYyMDExOEQ4RDAwMTE2Njc4IC8qIEpT
QmFzaWNDcmVkZW50aWFsQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzaWNDcmVk
ZW50aWFsQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyNTYy
MDExQkUwMjAwMTE2Njc4IC8qIEpTQXV0aGVudGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVudGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgy
OTMyMDJCQTk1MzAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzY4MTQyODFFNkY5OEFEMDBFNzc3NTQgLyog
RWNkaEtleURlcml2ZVBhcmFtcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRWNkaEtleURlcml2ZVBhcmFtcy5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NjgxNDI5MUU2Rjk5QzEwMEU3Nzc1NCAvKiBD
cnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2ODE0MzQxRTZGRTNFODAwRTc3NzU0IC8qIENyeXB0
b0FsZ29yaXRobUVDREhNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xOTc4NSw3ICsxOTc4NCw2IEBACiAJCQkJNTczMDNDMUQyMDA5QTk4NjAwMzU1OTY1IC8q
IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbCAqLywKIAkJCQk1NzMwM0M0NDIw
MTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLywKIAkJCQk1
NzMwM0M0MzIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi8s
Ci0JCQkJNTc2MDgyOTMyMDJCQTk1MzAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ckNsaWVudC5jcHAgKi8sCiAJCQkJNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudC5oICovLAogCQkJCTU3MzAzQkNGMjAwODdBODMwMDM1NTk2
NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaCAqLywKIAkJCQk1NzMwM0JEMTIwMDg3QTgzMDAz
NTU5NjUgLyogQXV0aGVudGljYXRvclJlc3BvbnNlLmlkbCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmgKaW5kZXggNzQ1MGYyNTY3NmFjMTI3YzYzNDljZmVjNmU5YTBmYzU2MzRkZTdlNy4uZWIzODFj
YmEzMTViMjU1MDE2YjU3ZTk5ZmQyNzVkNjlhODZmYjZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmgKQEAgLTgzLDYgKzgzLDcgQEAgc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24gewogICAgICAgICBib29sIGZhc3REYXRhQXJyaXZhbCB7IGZhbHNlIH07CiAgICAgICAg
IGJvb2wgY29udGludWVBZnRlckVycm9yRGF0YSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgY2Fu
RG93bmdyYWRlIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBleHBlY3RDYW5jZWwgeyBmYWxzZSB9
OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEhpZENvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CkBAIC0xNTksNyArMTYwLDcgQEAg
T3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1
cmF0aW9uPiBNb2NrV2ViQXV0aGVudGkKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgcGF5bG9hZEJhc2U2
NCA8PCBzdGFnZSA8PCBzdWJTdGFnZSA8PCBlcnJvciA8PCBpc1UyZiA8PCBrZWVwQWxpdmUgPDwg
ZmFzdERhdGFBcnJpdmFsIDw8IGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPDwgY2FuRG93bmdyYWRl
OworICAgIGVuY29kZXIgPDwgcGF5bG9hZEJhc2U2NCA8PCBzdGFnZSA8PCBzdWJTdGFnZSA8PCBl
cnJvciA8PCBpc1UyZiA8PCBrZWVwQWxpdmUgPDwgZmFzdERhdGFBcnJpdmFsIDw8IGNvbnRpbnVl
QWZ0ZXJFcnJvckRhdGEgPDwgY2FuRG93bmdyYWRlIDw8IGV4cGVjdENhbmNlbDsKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTE4NCw2ICsxODUsOCBAQCBPcHRpb25hbDxNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9uPiBNb2NrV2ViQXV0
aGVudGljYQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmNhbkRvd25ncmFkZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXhwZWN0Q2FuY2VsKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmlkbAppbmRleCBiZGViODYxY2M5ZTZjNGM2MjdhMDczMmQ3YWU2YTc0NTY3OWE2
ZmRkLi4xNjQ3MGY5MjcyOWRiYWEyYTkxNTJhMDU2YjdmOGM1Zjc0NWNjMzhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5pZGwKQEAgLTkxLDYgKzkxLDcgQEAKICAgICBib29sZWFuIGZhc3REYXRh
QXJyaXZhbCA9IGZhbHNlOwogICAgIGJvb2xlYW4gY29udGludWVBZnRlckVycm9yRGF0YSA9IGZh
bHNlOwogICAgIGJvb2xlYW4gY2FuRG93bmdyYWRlID0gZmFsc2U7CisgICAgYm9vbGVhbiBleHBl
Y3RDYW5jZWwgPSBmYWxzZTsKIH07CiAKIFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCBiYWU3YzMxOWU0NzY0NDVhOWNlMzZlNjJkNzZlZmVkZGY2NmFiMTI4Li5jMzljMjk3NTU2NzZl
MmE2NTA4ZmE3ZmU0MGQ5NjgxMjU0YWY3NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0xNDYsNyArMTQ2LDYgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgVmlld1VwZGF0
ZURpc3BhdGNoZXIgXAogICAgIFZpc2l0ZWRMaW5rU3RvcmUgXAogICAgIFZpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyIFwKLSAgICBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgXAogICAgIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IFwKICAgICBXZWJBdXRvbWF0aW9uU2Vzc2lv
biBcCiAgICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBiZjk2
Yzg2MDhmMGFhYzM2MDZlMDMyOWJjOTY1ZDYwOWNmNjg3MWMyLi4zMWVlMTE4OTAyNTU3NTc1MTc2
MTAwNjgyMzliMTYyYTA2ZmYwN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTQxMiw2ICs0MTIsNyBAQCBV
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcAorVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5jcHAKIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcAppbmRl
eCAwMGQyZDFhMjRjMjFjMjllMjk3NThmYjJmZmJiNWFhY2Y1N2YzYmJmLi44N2EyZjA2NTgzZGUy
MTA2NmQxNWM1MjUzZWYyMjQxMzA2ZjUyMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCkBAIC0yOSwy
MiArMjksMzEgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQVBJV2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudC5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmgiCiAKIG5hbWVzcGFjZSBBUEkgewordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotUmVmPFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWw+IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIHJwSWQpCitSZWY8V2ViQXV0aGVudGljYXRpb25QYW5lbD4gV2ViQXV0aGVudGlj
YXRpb25QYW5lbDo6Y3JlYXRlKGNvbnN0IEF1dGhlbnRpY2F0b3JNYW5hZ2VyJiBtYW5hZ2VyLCBj
b25zdCBTdHJpbmcmIHJwSWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXV0aGVu
dGljYXRpb25QYW5lbChycElkKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXV0aGVu
dGljYXRpb25QYW5lbChtYW5hZ2VyLCBycElkKSk7CiB9CiAKLVdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoY29uc3QgU3RyaW5nJiBycElkKQotICAgIDogbV9y
cElkKHJwSWQpCitXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpXZWJBdXRoZW50aWNhdGlvblBhbmVs
KGNvbnN0IEF1dGhlbnRpY2F0b3JNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHJwSWQp
CisgICAgOiBtX21hbmFnZXIobWFrZVdlYWtQdHIobWFuYWdlcikpCisgICAgLCBtX3JwSWQocnBJ
ZCkKICAgICAsIG1fY2xpZW50KFdURjo6bWFrZVVuaXF1ZVJlZjxXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50PigpKQogewogfQogCiBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjp+V2ViQXV0aGVu
dGljYXRpb25QYW5lbCgpID0gZGVmYXVsdDsKIAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVs
OjpjYW5jZWwoKSBjb25zdAoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdl
ci0+Y2FuY2VsUmVxdWVzdCgqdGhpcyk7Cit9CisKIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5l
bDo6c2V0Q2xpZW50KFVuaXF1ZVJlZjxXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50PiYmIGNs
aWVudCkKIHsKICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCmlu
ZGV4IDc1MDQ4ODZjMDRjMDMzYWEyNmQyNWQ4ZjEzNTAzZDVmOWY5NzU4MmYuLjc4ZTdlZTk1Njhm
YmMxMDIzZjBhZjgxZDFmN2EzYTJlYmNmNmUzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApAQCAtMzIsMjMg
KzMyLDI5IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBBdXRoZW50aWNhdG9yTWFu
YWdlcjsKK30KKwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQ7CiAKIGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZmluYWwgOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw+LCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8V2ViQXV0aGVudGljYXRpb25QYW5lbD4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8V2ViQXV0aGVudGljYXRpb25QYW5lbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcnBJ
ZCk7CisgICAgc3RhdGljIFJlZjxXZWJBdXRoZW50aWNhdGlvblBhbmVsPiBjcmVhdGUoY29uc3Qg
V2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlciYsIGNvbnN0IFN0cmluZyYgcnBJZCk7CiAgICAg
fldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKTsKIAogICAgIFdURjo6U3RyaW5nIHJwSWQoKSBjb25z
dCB7IHJldHVybiBtX3JwSWQ7IH0KKyAgICB2b2lkIGNhbmNlbCgpIGNvbnN0OwogCiAgICAgY29u
c3QgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4g
bV9jbGllbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldENsaWVudChVbmlxdWVSZWY8V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudD4mJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViQXV0aGVudGljYXRp
b25QYW5lbChjb25zdCBTdHJpbmcmIHJwSWQpOworICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwo
Y29uc3QgV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlciYsIGNvbnN0IFN0cmluZyYgcnBJZCk7
CiAKKyAgICBXZWFrUHRyPFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI+IG1fbWFuYWdlcjsK
ICAgICBXVEY6OlN0cmluZyBtX3JwSWQ7CiAgICAgVW5pcXVlUmVmPFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQ+IG1fY2xpZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5k
ZXggNjI5MTMyYWI3YTllZGJjZDg1MDQxODJiYmI0MTRhYzdmNTU1MmFlMi4uMTcyOGU2ZjUzOGU0
NTcxODk3YWE0YmUwYWVmZmY4MmQwNmNhNWFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KQEAgLTY3LDYgKzY3LDkgQEAgLSAodm9pZClzZXREZWxlZ2F0ZTooaWQ8X1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlPilkZWxlZ2F0ZQogCiAtICh2b2lkKWNhbmNlbAogeworI2lm
IEVOQUJMRShXRUJfQVVUSE4pCisgICAgX3BhbmVsLT5jYW5jZWwoKTsKKyNlbmRpZgogfQogCiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApp
bmRleCAxYzQxYTNjMjg1ZWYwNzI0NWVlMWNlNTI5YTU2NTY4MWYyNDgzNTUwLi5kMDMyODgwOTk1
NzIwNzM4YzM5YzBmNGIyNzZhNjc0MWZhOGEyNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRv
ck1hbmFnZXIuY3BwCkBAIC0xNjQsNiArMTY0LDMwIEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFn
ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEsIENh
CiAgICAgcnVuUGFuZWwoKTsKIH0KIAordm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2FuY2Vs
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciYgcGFnZUlELCBjb25zdCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+JiBmcmFtZUlEKQoreworICAgIGlmICghbV9wZW5kaW5nQ29t
cGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9wZW5kaW5nUmVx
dWVzdERhdGEuZnJhbWVJRCk7CisgICAgaWYgKG1fcGVuZGluZ1JlcXVlc3REYXRhLmZyYW1lSUQt
PnBhZ2VJRCAhPSBwYWdlSUQpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZnJhbWVJRCAmJiBm
cmFtZUlEICE9IG1fcGVuZGluZ1JlcXVlc3REYXRhLmZyYW1lSUQtPmZyYW1lSUQpCisgICAgICAg
IHJldHVybjsKKyAgICBpbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uRGF0
YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl9zIH0pOworICAgIGNs
ZWFyU3RhdGUoKTsKKyAgICBtX3JlcXVlc3RUaW1lT3V0VGltZXIuc3RvcCgpOworfQorCisvLyBU
aGUgZm9sbG93aW5nIGltcGxlbWVudHMgcGFydCBvZiBTdGVwIDIwLiBvZiBodHRwczovL3d3dy53
My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNyZWRlbnRpYWwKKy8vIGFuZCBwYXJ0IG9mIFN0ZXAg
MTguIG9mIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jZ2V0QXNzZXJ0aW9uIGFzIG9m
IDQgTWFyY2ggMjAxOToKKy8vICJJZiB0aGUgdXNlciBleGVyY2lzZXMgYSB1c2VyIGFnZW50IHVz
ZXItaW50ZXJmYWNlIG9wdGlvbiB0byBjYW5jZWwgdGhlIHByb2Nlc3MsIi4KK3ZvaWQgQXV0aGVu
dGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlv
blBhbmVsJiBwYW5lbCkKK3sKKyAgICBpZiAoIW1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyIHx8
IG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsLmdldCgpICE9ICZwYW5lbCkKKyAgICAgICAgcmV0
dXJuOworICAgIHJlc2V0U3RhdGUoKTsKK30KKwogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6
Y2xlYXJTdGF0ZUFzeW5jKCkKIHsKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CkBAIC0xNzcsOSArMjAxLDcgQEAgdm9pZCBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZSgpCiB7CiAgICAgaWYgKG1fcGVuZGluZ0NvbXBs
ZXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wZW5kaW5nUmVxdWVzdERhdGEg
PSB7IH07Ci0gICAgbV9zZXJ2aWNlcy5jbGVhcigpOwotICAgIG1fYXV0aGVudGljYXRvcnMuY2xl
YXIoKTsKKyAgICByZXNldFN0YXRlKCk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6
OmF1dGhlbnRpY2F0b3JBZGRlZChSZWY8QXV0aGVudGljYXRvcj4mJiBhdXRoZW50aWNhdG9yKQpA
QCAtMjY0LDcgKzI4Niw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBhbmVsKCkK
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGVuZGluZ1JlcXVlc3RE
YXRhLnBhbmVsID0gQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpjcmVhdGUoZ2V0UnBJZCht
X3BlbmRpbmdSZXF1ZXN0RGF0YS5vcHRpb25zKSk7CisgICAgbV9wZW5kaW5nUmVxdWVzdERhdGEu
cGFuZWwgPSBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OmNyZWF0ZSgqdGhpcywgZ2V0UnBJ
ZChtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcHRpb25zKSk7CiAgICAgYXV0byYgcGFuZWwgPSAqbV9w
ZW5kaW5nUmVxdWVzdERhdGEucGFuZWw7CiAgICAgcGFnZS0+dWlDbGllbnQoKS5ydW5XZWJBdXRo
ZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5lbCwgW3dlYWtQYW5lbCA9IG1ha2VXZWFrUHRyKHBh
bmVsKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNdIChXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0IHJlc3VsdCkgewogICAgICAgICAvLyBUaGUgcGFuZWwgYWRkcmVzcyBp
cyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgY3VycmVudCBwZW5kaW5nIHJlcXVlc3QgaXMgc3Rp
bGwgdGhlIHNhbWUuCkBAIC0zMDUsNiArMzI3LDE0IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFn
ZXI6Omludm9rZVBlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihSZXNwb25kJiYgcmVzcG9uZCkKICAg
ICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3BvbmQpKTsKIH0KIAorCit2
b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXNldFN0YXRlKCkKK3sKKyAgICBtX2F1dGhlbnRp
Y2F0b3JzLmNsZWFyKCk7CisgICAgbV9zZXJ2aWNlcy5jbGVhcigpOworICAgIG1fcGVuZGluZ1Jl
cXVlc3REYXRhID0geyB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRleCBk
Mzc2NmFkMTQ3OTczMTQxNWVkZTQ4MmY5ZTljMmZlMDA4ZDNhMjUyLi41MDI2MjY3OGEwYTg1YTRk
YmEyNzA5OWZlMTU4M2E2MTYzYTllYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmgKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgV2ViQXV0aGVudGljYXRp
b25QYW5lbDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyIDogcHVibGljIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciwg
cHVibGljIEF1dGhlbnRpY2F0b3I6Ok9ic2VydmVyIHsKQEAgLTU1LDYgKzU5LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCiAgICAg
dm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiwgQ2FsbGJh
Y2smJik7CisgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiYpOyAvLyBDYWxs
ZWQgZnJvbSBXZWJQYWdlUHJveHkvV2ViUHJvY2Vzc1Byb3h5LgorICAgIHZvaWQgY2FuY2VsUmVx
dWVzdChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmKTsgLy8gQ2FsbGVkIGZyb20g
cGFuZWwgY2xpZW50cy4KIAogICAgIHZpcnR1YWwgYm9vbCBpc01vY2soKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCkBAIC04MiwxMCArODgsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRpbWVP
dXRUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBydW5QYW5lbCgpOwogICAgIHZvaWQgc3RhcnRSZXF1
ZXN0KCk7CisgICAgdm9pZCByZXNldFN0YXRlKCk7CiAKICAgICAvLyBSZXF1ZXN0OiBXZSBvbmx5
IGFsbG93IG9uZSByZXF1ZXN0IHBlciB0aW1lLiBBIG5ldyByZXF1ZXN0IHdpbGwgY2FuY2VsIGFu
eSBwZW5kaW5nIG9uZXMuCiAgICAgV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSBtX3BlbmRp
bmdSZXF1ZXN0RGF0YTsKLSAgICBDYWxsYmFjayBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcjsg
Ly8gU2hvdWxkIGJlIGludm9rZWQgZGlyZWN0bHksIHVzZSBpbnZva2VQZW5kaW5nQ29tcGxldGlv
bkhhbmRsZXIuCisgICAgQ2FsbGJhY2sgbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXI7IC8vIFNo
b3VsZCBub3QgYmUgaW52b2tlZCBkaXJlY3RseSwgdXNlIGludm9rZVBlbmRpbmdDb21wbGV0aW9u
SGFuZGxlci4KICAgICBSdW5Mb29wOjpUaW1lcjxBdXRoZW50aWNhdG9yTWFuYWdlcj4gbV9yZXF1
ZXN0VGltZU91dFRpbWVyOwogCiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZT4+IG1fc2VydmljZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLmgK
aW5kZXggNGVhYjVkZDc3MzQxMjExMjk5YTcyOTM4OWYwNWU2ZWY4OTllMThlNy4uZTE4N2EyNGZk
NmQyMmEyNDlkZWQ3MDNiYjM2YjlhZTQ0MWEyZTk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5l
Y3Rpb24uaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gT3ZlcnJpZGVkIGJ5IE1v
Y2tIaWRDb25uZWN0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgdmly
dHVhbCB2b2lkIHRlcm1pbmF0ZSgpOworICAgIHZpcnR1YWwgRGF0YVNlbnQgc2VuZFN5bmMoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKTsKICAgICAvLyBDYWxsZXIgc2hvdWxkIHNlbmQgZGF0
YSBhZ2FpbiBhZnRlciBjYWxsYmFjayBpcyBpbnZva2VkIHRvIGNvbnRyb2wgZmxvdy4KICAgICB2
aXJ0dWFsIHZvaWQgc2VuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNr
JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFjayhEYXRhUmVjZWl2ZWRD
YWxsYmFjayYmKTsKQEAgLTY0LDggKzY1LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVjZWl2ZVJl
cG9ydChWZWN0b3I8dWludDhfdD4mJik7CiAKIHByb3RlY3RlZDoKLSAgICBib29sIG1faW5pdGlh
bGl6ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV90ZXJtaW5hdGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7IH0KKyAg
ICB2b2lkIHNldElzSW5pdGlhbGl6ZWQoYm9vbCBpc0luaXRpYWxpemVkKSB7IG1faXNJbml0aWFs
aXplZCA9IGlzSW5pdGlhbGl6ZWQ7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbnN1bWVSZXBv
cnRzKCk7CkBAIC03OCw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ291bGQgcXVldWUgZGF0
YSByZXF1ZXN0ZWQgYnkgb3RoZXIgYXBwbGljYXRpb25zLgogICAgIERlcXVlPFZlY3Rvcjx1aW50
OF90Pj4gbV9pbnB1dFJlcG9ydHM7CiAgICAgRGF0YVJlY2VpdmVkQ2FsbGJhY2sgbV9pbnB1dENh
bGxiYWNrOworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24ubW0KaW5kZXggZjA3
N2FlOTgxMzZiOTQzOTU2Y2RmYTY0NTU0NDc4MzIwZGE3NDgyNS4uZjJmMTkzYzc1MDEyNGI4Y2U2
MzA1YzI3NTBhNjJhMWYzNGZhZDliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1t
CkBAIC02Myw3ICs2Myw3IEBAIEhpZENvbm5lY3Rpb246OkhpZENvbm5lY3Rpb24oSU9ISUREZXZp
Y2VSZWYgZGV2aWNlKQogCiBIaWRDb25uZWN0aW9uOjp+SGlkQ29ubmVjdGlvbigpCiB7Ci0gICAg
QVNTRVJUKG1fdGVybWluYXRlZCk7CisgICAgQVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOwogfQog
CiB2b2lkIEhpZENvbm5lY3Rpb246OmluaXRpYWxpemUoKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lk
IEhpZENvbm5lY3Rpb246OmluaXRpYWxpemUoKQogICAgIElPSElERGV2aWNlU2NoZWR1bGVXaXRo
UnVuTG9vcChtX2RldmljZS5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOwogICAgIG1faW5wdXRCdWZmZXIucmVzaXplKGtIaWRNYXhQYWNrZXRTaXpl
KTsKICAgICBJT0hJRERldmljZVJlZ2lzdGVySW5wdXRSZXBvcnRDYWxsYmFjayhtX2RldmljZS5n
ZXQoKSwgbV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpLCAmcmVwb3J0
UmVjZWl2ZWQsIHRoaXMpOwotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIG1faXNJbml0
aWFsaXplZCA9IHRydWU7CiB9CiAKIHZvaWQgSGlkQ29ubmVjdGlvbjo6dGVybWluYXRlKCkKQEAg
LTgwLDEyICs4MCwyMyBAQCB2b2lkIEhpZENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCiAgICAgSU9I
SUREZXZpY2VSZWdpc3RlcklucHV0UmVwb3J0Q2FsbGJhY2sobV9kZXZpY2UuZ2V0KCksIG1faW5w
dXRCdWZmZXIuZGF0YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgbnVsbHB0cik7
CiAgICAgSU9ISUREZXZpY2VVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9kZXZpY2UuZ2V0KCksIENG
UnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKICAgICBJT0hJRERl
dmljZUNsb3NlKG1fZGV2aWNlLmdldCgpLCBrSU9ISURPcHRpb25zVHlwZU5vbmUpOwotICAgIG1f
dGVybWluYXRlZCA9IHRydWU7CisgICAgbV9pc0luaXRpYWxpemVkID0gZmFsc2U7Cit9CisKK2F1
dG8gSGlkQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAt
PiBEYXRhU2VudAoreworICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOworICAgIGF1dG8gc3Rh
dHVzID0gSU9ISUREZXZpY2VTZXRSZXBvcnQobV9kZXZpY2UuZ2V0KCksIGtJT0hJRFJlcG9ydFR5
cGVPdXRwdXQsIGtIaWRSZXBvcnRJZCwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBp
ZiAoc3RhdHVzKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3Qgc2VuZCByZXBvcnQgdG8g
dGhlIGF1dGhlbnRpY2F0b3I6ICVkIiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIERhdGFTZW50
OjpObzsKKyAgICB9CisgICAgcmV0dXJuIERhdGFTZW50OjpZZXM7CiB9CiAKIHZvaWQgSGlkQ29u
bmVjdGlvbjo6c2VuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7Ci0gICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX2lz
SW5pdGlhbGl6ZWQpOwogICAgIGF1dG8gdGFzayA9IG1ha2VCbG9ja1B0cihbZGV2aWNlID0gbV9k
ZXZpY2UsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAt
MTA0LDcgKzExNSw3IEBAIHZvaWQgSGlkQ29ubmVjdGlvbjo6c2VuZChWZWN0b3I8dWludDhfdD4m
JiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYgY2FsbGJhY2spCiAKIHZvaWQgSGlkQ29ubmVjdGlv
bjo6cmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFjayhEYXRhUmVjZWl2ZWRDYWxsYmFjayYmIGNh
bGxiYWNrKQogewotICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKKyAgICBBU1NFUlQobV9pc0lu
aXRpYWxpemVkKTsKICAgICBBU1NFUlQoIW1faW5wdXRDYWxsYmFjayk7CiAgICAgbV9pbnB1dENh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgY29uc3VtZVJlcG9ydHMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0hpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXggNjU4NDY2ZGU3YjEzMWViZTU0
ZTY3MWY2NzA0M2M3ZmZlNmM1MzY4Yi4uOWU1ZDhmYTcwNjY4MGRmNmUxNGY5NjNmMjNiZTllODg1
ZTc0NGY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTYw
LDE3ICs2MCwyOSBAQCBNb2NrSGlkQ29ubmVjdGlvbjo6TW9ja0hpZENvbm5lY3Rpb24oSU9ISURE
ZXZpY2VSZWYgZGV2aWNlLCBjb25zdCBNb2NrV2ViQXV0aGVudAogCiB2b2lkIE1vY2tIaWRDb25u
ZWN0aW9uOjppbml0aWFsaXplKCkKIHsKLSAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICBz
ZXRJc0luaXRpYWxpemVkKHRydWUpOwogfQogCiB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjp0ZXJt
aW5hdGUoKQogewotICAgIG1fdGVybWluYXRlZCA9IHRydWU7CisgICAgc2V0SXNJbml0aWFsaXpl
ZChmYWxzZSk7Cit9CisKK2F1dG8gTW9ja0hpZENvbm5lY3Rpb246OnNlbmRTeW5jKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gRGF0YVNlbnQKK3sKKyAgICBBU1NFUlQoaXNJbml0aWFs
aXplZCgpKTsKKyAgICBpZiAobV9jb25maWd1cmF0aW9uLmhpZC0+ZXhwZWN0Q2FuY2VsKSB7Cisg
ICAgICAgIGF1dG8gbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXpl
ZERhdGEoZGF0YSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobWVzc2FnZSwgbWVzc2FnZSk7Cisg
ICAgICAgIEFTU0VSVChtZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nh
bmNlbCk7CisgICAgICAgIExPR19FUlJPUigiUmVxdWVzdCBjYW5jZWxsZWQuIik7CisgICAgfQor
ICAgIHJldHVybiBEYXRhU2VudDo6WWVzOwogfQogCiB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpz
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKLSAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7CisgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQo
KSk7CiAgICAgYXV0byB0YXNrID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBkYXRhID0gV1RGTW92ZShk
YXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKQEAgLTIyOCw2
ICsyNDAsOCBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgfQog
CiAgICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6SGlkU3RhZ2U6OlJlcXVlc3QgJiYgbV9zdWJTdGFn
ZSA9PSBNb2NrOjpIaWRTdWJTdGFnZTo6TXNnKSB7CisgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRp
b24uaGlkLT5leHBlY3RDYW5jZWwpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICht
X2NvbmZpZ3VyYXRpb24uaGlkLT5rZWVwQWxpdmUpIHsKICAgICAgICAgICAgIG1fY29uZmlndXJh
dGlvbi5oaWQtPmtlZXBBbGl2ZSA9IGZhbHNlOwogICAgICAgICAgICAgRmlkb0hpZEluaXRQYWNr
ZXQgaW5pdFBhY2tldChtX2N1cnJlbnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0tl
ZXBBbGl2ZSwgeyBDdGFwS2VlcEFsaXZlU3RhdHVzUHJvY2Vzc2luZyB9LCAxKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hp
ZENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0hpZENvbm5lY3Rpb24uaAppbmRleCAwZGIwMGU5ODU0MzFjY2I4ZjZmODM0NmJm
MzhiNTkwYjUzOTNiMDAzLi44OGIyODRmNTRhYjBkOGYzZmMzMTg4OWYwMzljZjk5M2IzNjA3NGM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tIaWRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oCkBAIC00OCw5ICs0OCwxMSBA
QCBwdWJsaWM6CiAgICAgTW9ja0hpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYsIGNvbnN0IFdl
YkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIHNlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgRGF0YVNlbnRDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICAvLyBIaWRDb25uZWN0aW9uCiAgICAgdm9pZCBpbml0aWFsaXplKCkgZmlu
YWw7CiAgICAgdm9pZCB0ZXJtaW5hdGUoKSBmaW5hbDsKKyAgICBEYXRhU2VudCBzZW5kU3luYyhj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIGZpbmFsOworICAgIHZvaWQgc2VuZChWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVn
aXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFja0ludGVybmFsKCkgZmluYWw7CiAKICAgICB2b2lkIGFz
c2VtYmxlUmVxdWVzdChWZWN0b3I8dWludDhfdD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3RE
YXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdGlvblJlcXVlc3REYXRhLmgKaW5kZXggNGJiNTQ4NWU1ZWFhOGMwMDVmOWZjMGQzMzk2
Yjc1NzE0YTQwYzQyYy4uOTc4NjA1NGUwZjAwOTc0ODdkOWNkYzY0OGQ0ZjgyMDIzMjdhZTNjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgogI2lu
Y2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uUGFuZWxGbGFncy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgpAQCAtNDUs
NiArNDYsNyBAQCBzdHJ1Y3QgV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSB7CiAgICAgV2Vh
a1B0cjxXZWJQYWdlUHJveHk+IHBhZ2U7CiAgICAgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3Vs
dCBwYW5lbFJlc3VsdCB7IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxl
IH07CiAgICAgUmVmUHRyPEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbD4gcGFuZWw7CisgICAg
V1RGOjpPcHRpb25hbDxXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA0ZmNkOGNkOGRiYzQ4ODYyNTJmNTk1
YmRmZmQ1MWNkZTNkYjc1Nzc5Li42ZGY4Y2E3NGYzY2QwMjI2NDdiYWEyOGIwZjIyYmQyYjk3ZTZi
MmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFn
ZXIuaCIKICNpbmNsdWRlICJMb2NhbFNlcnZpY2UuaCIKICNpbmNsdWRlICJXZWJBdXRoZW50aWNh
dGlvblBhbmVsRmxhZ3MuaCIKLSNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKQEAgLTU0LDQwICs1MywzMiBAQCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eTo6fldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KCkKICAgICBtX3dlYlBhZ2VQ
cm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQ
cm94eS53ZWJQYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6Om1ha2VDcmVkZW50aWFsKHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zJiBvcHRpb25zKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
bWFrZUNyZWRlbnRpYWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAg
ICBoYW5kbGVSZXF1ZXN0KG1lc3NhZ2VJZCwgeyBoYXNoLCBvcHRpb25zLCBtYWtlV2Vha1B0ciht
X3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxl
LCBudWxscHRyIH0pOworICAgIGhhbmRsZVJlcXVlc3QoeyBoYXNoLCBvcHRpb25zLCBtYWtlV2Vh
a1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZh
aWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53
ZWJQYWdlSUQoKSwgZnJhbWVJZCB9IH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24odWludDY0X3QgbWVz
c2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6OmdldEFzc2VydGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
ZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
ciYmIGhhbmRsZXIpCiB7Ci0gICAgaGFuZGxlUmVxdWVzdChtZXNzYWdlSWQsIHsgaGFzaCwgb3B0
aW9ucywgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkpLCBXZWJBdXRoZW50aWNhdGlvblBhbmVs
UmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciB9KTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgaGFz
aCwgb3B0aW9ucywgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkpLCBXZWJBdXRoZW50aWNhdGlv
blBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFsRnJhbWVJZGVudGlmaWVy
IHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSB9LCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxl
UmVxdWVzdCh1aW50NjRfdCBtZXNzYWdlSWQsIFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEm
JiBkYXRhKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVx
dWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYgZGF0YSwgUmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gW21lc3NhZ2VJZCwg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAg
IGF1dG8gY2FsbGJhY2sgPSBbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildIChWYXJpYW50PFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KICAgICAgICAgV1RG
Ojpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSYgZGF0YSkgewotICAgICAgICAgICAgd2Vha1RoaXMtPnJlcXVlc3RSZXBseShtZXNzYWdl
SWQsIGRhdGEsIHsgfSk7CisgICAgICAgICAgICBoYW5kbGVyKGRhdGEsIHsgfSk7CiAgICAgICAg
IH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7Ci0gICAg
ICAgICAgICB3ZWFrVGhpcy0+cmVxdWVzdFJlcGx5KG1lc3NhZ2VJZCwgeyB9LCBleGNlcHRpb24p
OworICAgICAgICAgICAgaGFuZGxlcih7IH0sIGV4Y2VwdGlvbik7CiAgICAgICAgIH0pOwogICAg
IH07CiAgICAgbV93ZWJQYWdlUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpLmF1dGhlbnRpY2F0b3JN
YW5hZ2VyKCkuaGFuZGxlUmVxdWVzdChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiB9CiAKLXZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzVXNlclZlcmlm
eWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1aW50NjRfdCBtZXNzYWdlSWQpCi17
Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBs
eShtZXNzYWdlSWQsIExvY2FsU2VydmljZTo6aXNBdmFpbGFibGUoKSkpOwotfQotCi12b2lkIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpyZXF1ZXN0UmVwbHkodWludDY0X3QgbWVz
c2FnZUlkLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwgY29u
c3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKQordm9pZCBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eTo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIG1fd2Vi
UGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6UmVx
dWVzdFJlcGx5KG1lc3NhZ2VJZCwgZGF0YSwgZXhjZXB0aW9uKSk7CisgICAgaGFuZGxlcihMb2Nh
bFNlcnZpY2U6OmlzQXZhaWxhYmxlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4
IGVmNzMzNDE2MjhkMzBiMWI0YzdjOWU2MDljMzE2YzI3ZjVmOTYxNzAuLmExYjI1N2UxMjAyZTRl
YWMwOTcxZjhjNTk4N2YwZDdhNjA5YjQ2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaApAQCAtMjgsOSArMjgsOSBAQAogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CkBAIC00NSw3ICs0NSw3IEBA
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogc3RydWN0IFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERh
dGE7CiAKLWNsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5PiB7CitjbGFzcyBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5KTsKIHB1YmxpYzoKQEAgLTUzLDE4ICs1MywxOCBAQCBwdWJsaWM6CiAgICAg
fldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KCk7CiAKIHByaXZhdGU6CisgICAgdXNp
bmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmKT47CisgICAgdXNpbmcgUXVlcnlDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+OworCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKIAogICAgIC8vIFJlY2VpdmVycy4KLSAgICB2b2lkIG1ha2VDcmVkZW50aWFs
KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJik7Ci0gICAgdm9pZCBn
ZXRBc3NlcnRpb24odWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhh
c2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYpOwot
ICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKHVp
bnQ2NF90IG1lc3NhZ2VJZCk7Ci0KLSAgICAvLyBTZW5kZXJzLgotICAgIHZvaWQgcmVxdWVzdFJl
cGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bERhdGEmLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik7CisgICAgdm9pZCBtYWtlQ3Jl
ZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGdldEFzc2VydGlvbihXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50
aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJik7CiAKLSAgICB2b2lkIGhh
bmRsZVJlcXVlc3QodWludDY0X3QgbWVzc2FnZUlkLCBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3RE
YXRhJiYpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3RE
YXRhJiYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIFdlYlBhZ2VQcm94eSYg
bV93ZWJQYWdlUHJveHk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMTdjZDg4MDhmMGRl
NTc1NjJjMWQ4MWExMTgyYjU3ZDU2NTAwMmI4Li5jYWFmZmE3YzFiM2JiYjRkNjAzZDQ1ZGNjNWE0
NTM1MzgzMDAwMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYsOSArMjYsOSBAQAogCiBt
ZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSB7CiAKLSAgICBNYWtl
Q3JlZGVudGlhbCh1aW50NjRfdCBtZXNzYWdlSWQsIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1
Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zKTsK
LSAgICBHZXRBc3NlcnRpb24odWludDY0X3QgbWVzc2FnZUlkLCBWZWN0b3I8dWludDhfdD4gaGFz
aCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRp
b25zKTsKLSAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUo
dWludDY0X3QgbWVzc2FnZUlkKTsKKyAgICBNYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMpIC0+IChzdHJ1Y3QgV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucykgLT4gKHN0cnVjdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlKCkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKaW5kZXggOGVkYTExYjkx
YTljNDlmNjVhODc0MzUwMzRlNGM4ZDJlNWFjNmM4Ny4uYWNlNGMwYzczZjA0ZmMzMWY3MzE0OTQ3
YjY1ZWJmYTUyZDY1NzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5j
cHAKQEAgLTQyLDExICs0Miw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFt
ZXNwYWNlIGZpZG87CiAKIEN0YXBBdXRoZW50aWNhdG9yOjpDdGFwQXV0aGVudGljYXRvcihzdGQ6
OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4mJiBkcml2ZXIsIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2UmJiBpbmZvKQotICAgIDogbV9kcml2ZXIoV1RGTW92ZShkcml2ZXIpKQorICAgIDogRmlk
b0F1dGhlbnRpY2F0b3IoV1RGTW92ZShkcml2ZXIpKQogICAgICwgbV9pbmZvKFdURk1vdmUoaW5m
bykpCiB7Ci0gICAgLy8gRklYTUUoMTkxNTIwKTogV2UgbmVlZCBhIHdheSB0byBjb252ZXJ0IHN0
ZDo6dW5pcXVlX3B0ciB0byBVbmlxdWVSZWYuCi0gICAgQVNTRVJUKG1fZHJpdmVyKTsKIH0KIAog
dm9pZCBDdGFwQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQpAQCAtNTUsNyArNTMsNyBA
QCB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAgICAgaWYgKHByb2Nl
c3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGF1dG8gY2JvckNtZCA9IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihyZXF1
ZXN0RGF0YSgpLmhhc2gsIFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyksIG1faW5mby5vcHRpb25zKCkudXNlclZlcmlmaWNh
dGlvbkF2YWlsYWJpbGl0eSgpKTsKLSAgICBtX2RyaXZlci0+dHJhbnNhY3QoV1RGTW92ZShjYm9y
Q21kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShWZWN0b3I8dWludDhfdD4mJiBk
YXRhKSB7CisgICAgZHJpdmVyKCkudHJhbnNhY3QoV1RGTW92ZShjYm9yQ21kKSwgW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CiAgICAgICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC04MSw3ICs3OSw3IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX2lzRG93bmdyYWRlZCk7CiAgICAgYXV0
byBjYm9yQ21kID0gZW5jb2RlR2V0QXNzZXJ0aW9uUmVxdWVzdEFzQ0JPUihyZXF1ZXN0RGF0YSgp
Lmhhc2gsIFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ocmVxdWVz
dERhdGEoKS5vcHRpb25zKSwgbV9pbmZvLm9wdGlvbnMoKS51c2VyVmVyaWZpY2F0aW9uQXZhaWxh
YmlsaXR5KCkpOwotICAgIG1fZHJpdmVyLT50cmFuc2FjdChXVEZNb3ZlKGNib3JDbWQpLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKKyAg
ICBkcml2ZXIoKS50cmFuc2FjdChXVEZNb3ZlKGNib3JDbWQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKICAgICAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTExMCw4ICsxMDgsOCBAQCBib29sIEN0YXBBdXRoZW50aWNhdG9yOjp0cnlEb3du
Z3JhZGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2lzRG93bmdyYWRlZCA9IHRy
dWU7Ci0gICAgbV9kcml2ZXItPnNldFByb3RvY29sKFByb3RvY29sVmVyc2lvbjo6a1UyZik7Ci0g
ICAgb2JzZXJ2ZXIoKS0+ZG93bmdyYWRlKHRoaXMsIFUyZkF1dGhlbnRpY2F0b3I6OmNyZWF0ZShX
VEZNb3ZlKG1fZHJpdmVyKSkpOworICAgIGRyaXZlcigpLnNldFByb3RvY29sKFByb3RvY29sVmVy
c2lvbjo6a1UyZik7CisgICAgb2JzZXJ2ZXIoKS0+ZG93bmdyYWRlKHRoaXMsIFUyZkF1dGhlbnRp
Y2F0b3I6OmNyZWF0ZShyZWxlYXNlRHJpdmVyKCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCmluZGV4IDgwNTQxOTgxNGE2YTIyNzUz
MjAzZjgzYmM2NjJmNjdlNzdlNzkyZjEuLmVlNTQzZDg1Zjk0ZDA4ZmEwYzZiN2EwNDljZGZlZGY4
ZWY0MmZjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKQEAgLTI3LDE0
ICsyNywxNCBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0b3IuaCIKKyNpbmNsdWRlICJGaWRvQXV0aGVudGljYXRvci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgQ3RhcERyaXZlcjsKIAotY2xhc3MgQ3RhcEF1dGhlbnRpY2F0b3IgZmluYWwgOiBw
dWJsaWMgQXV0aGVudGljYXRvciB7CitjbGFzcyBDdGFwQXV0aGVudGljYXRvciBmaW5hbCA6IHB1
YmxpYyBGaWRvQXV0aGVudGljYXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDdGFwQXV0
aGVudGljYXRvcj4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiYmIGRyaXZlciwg
Zmlkbzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYmIGluZm8pCiAgICAgewpAQCAtNTIs
NyArNTIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgdHJ5RG93bmdyYWRlKCk7CiAgICAgYm9vbCBw
cm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKCk7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3RhcERyaXZlcj4gbV9kcml2ZXI7CiAgICAgZmlkbzo6QXV0aGVudGljYXRvckdl
dEluZm9SZXNwb25zZSBtX2luZm87CiAgICAgYm9vbCBtX2lzRG93bmdyYWRlZCB7IGZhbHNlIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9DdGFwRHJpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaAppbmRleCAwNzliZWEzODgyZDZkNjMwZDg2N2E1YmFi
MWU4M2ZjNmJjNzdkOWQ2Li43YTQyMGZlMWNlYzIxOGI5MDY2ZTYzMDM2ZWZiYmM2M2E0MTdiMTA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0N0YXBEcml2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaApAQCAtNDEsMTQgKzQxLDE1IEBAIGNsYXNzIEN0YXBE
cml2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q3RhcERyaXZlcj4gewogcHVibGljOgogICAg
IHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFZlY3Rvcjx1aW50OF90PiYm
KT47CiAKLSAgICBDdGFwRHJpdmVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkN0YXBEcml2
ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHNldFByb3RvY29sKGZpZG86OlByb3RvY29sVmVy
c2lvbiBwcm90b2NvbCkgeyBtX3Byb3RvY29sID0gcHJvdG9jb2w7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgeyB9OwogCiBwcm90ZWN0ZWQ6CisgICAg
Q3RhcERyaXZlcigpID0gZGVmYXVsdDsKICAgICBmaWRvOjpQcm90b2NvbFZlcnNpb24gcHJvdG9j
b2woKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRE
cml2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwSGlkRHJpdmVyLmNwcAppbmRleCA1MzI2NTgxOTI1OWIzYzQwYzVhZTJhMTRiZTQwMzc3
MzY5YmM2ZmQzLi4wNmYyMzE1NTI2YWYxZjIzODRiNTUwYWRlZmE5ZjE5ZTEwZWVkNWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBIaWREcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKQEAgLTY4LDkgKzY4LDExIEBAIHZvaWQgQ3Rh
cEhpZERyaXZlcjo6V29ya2VyOjp0cmFuc2FjdChmaWRvOjpGaWRvSGlkTWVzc2FnZSYmIHJlcXVl
c3RNZXNzYWdlLCBNZXNzCiAKIHZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjp3cml0ZShIaWRD
b25uZWN0aW9uOjpEYXRhU2VudCBzZW50KQogewotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpXcml0ZSk7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OldyaXRlKQorICAgICAgICByZXR1
cm47CiAgICAgaWYgKHNlbnQgIT0gSGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQ6OlllcykgewotICAg
ICAgICByZXR1cm5NZXNzYWdlKFdURjo6bnVsbG9wdCk7CisgICAgICAgIG1fcmVzcG9uc2VNZXNz
YWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm5NZXNzYWdlKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTk1LDcgKzk3LDggQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3Jr
ZXI6OndyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFTZW50IHNlbnQpCiAKIHZvaWQgQ3RhcEhpZERy
aXZlcjo6V29ya2VyOjpyZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBB
U1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZCk7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6
OlJlYWQpCisgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fcmVzcG9uc2VNZXNzYWdlKSB7CiAg
ICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZUZyb21TZXJp
YWxpemVkRGF0YShkYXRhKTsKICAgICAgICAgLy8gVGhlIGZpcnN0IGZldyByZXBvcnRzIGNvdWxk
IGJlIGZvciBvdGhlciBhcHBsaWNhdGlvbnMsIGFuZCB0aGVyZWZvcmUgaWdub3JlIHRob3NlLgpA
QCAtMTA3LDcgKzExMCw4IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZWFkKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fcmVz
cG9uc2VNZXNzYWdlLT5hZGRDb250aW51YXRpb25QYWNrZXQoZGF0YSkpIHsKICAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGRuJ3QgcGFyc2UgYSBoaWQgY29udGludWF0aW9uIHBhY2tldC4iKTsK
LSAgICAgICAgICAgIHJldHVybk1lc3NhZ2UoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIG1f
cmVzcG9uc2VNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuTWVzc2Fn
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTE5LDE2ICsx
MjMsMzcgQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OnJlYWQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKQogICAgICAgICAgICAgbV9yZXNwb25zZU1lc3NhZ2UucmVzZXQoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXR1cm5NZXNzYWdlKFdURk1v
dmUobV9yZXNwb25zZU1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuTWVzc2FnZSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogfQogCi12b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6cmV0dXJu
TWVzc2FnZShPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQordm9pZCBD
dGFwSGlkRHJpdmVyOjpXb3JrZXI6OnJldHVybk1lc3NhZ2UoKQoreworICAgIC8vIFJlc2V0IHN0
YXRlIGJlZm9yZSBjYWxsaW5nIHRoZSByZXNwb25zZSBjYWxsYmFjayB0byBhdm9pZCBiZWluZyBk
ZWxldGVkLgorICAgIGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spOworICAgIGF1
dG8gbWVzc2FnZSA9IFdURk1vdmUobV9yZXNwb25zZU1lc3NhZ2UpOworICAgIHJlc2V0KCk7Cisg
ICAgY2FsbGJhY2soV1RGTW92ZShtZXNzYWdlKSk7Cit9CisKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6
V29ya2VyOjpyZXNldCgpCiB7Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOwogICAgIG1fY29u
bmVjdGlvbi0+dW5yZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNrKCk7Ci0gICAgbV9jYWxsYmFj
ayhXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICBtX2NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICBtX3Jl
c3BvbnNlTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3JlcXVlc3RNZXNzYWdlID0gV1RG
OjpudWxsb3B0OworICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRsZTsKK30KKworLy8gVGhpcyBpbXBs
ZW1lbnRzIENUQVBISURfQ0FOQ0VMIHdoaWNoIHZpb2xhdGVzIHRoZSB0cmFuc2FjdGlvbiBzZW1h
bnRpY3M6CisvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIw
MTkwMTMwL2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE5
MDEzMC5odG1sI3VzYi1oaWQtY2FuY2VsCit2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6Y2Fu
Y2VsKGZpZG86OkZpZG9IaWRNZXNzYWdlJiYgcmVxdWVzdE1lc3NhZ2UpCit7CisgICAgcmVzZXQo
KTsKKyAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGVDYWNoZSgpOworICAgIEFTU0VSVChyZXF1
ZXN0TWVzc2FnZS5udW1QYWNrZXRzKCkgPT0gMSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kU3lu
YyhyZXF1ZXN0TWVzc2FnZS5wb3BOZXh0UGFja2V0KCkpOwogfQogCiBDdGFwSGlkRHJpdmVyOjpD
dGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCkBAIC0x
NjcsNyArMTkyLDggQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjp0cmFuc2FjdChWZWN0b3I8dWludDhf
dD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2sKIAogdm9pZCBDdGFwSGlkRHJp
dmVyOjpjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxGaWRvSGlkTWVzc2Fn
ZT4mJiBtZXNzYWdlKQogewotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvY2F0ZUNo
YW5uZWwpOworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpBbGxvY2F0ZUNoYW5uZWwpCisgICAg
ICAgIHJldHVybjsKICAgICBpZiAoIW1lc3NhZ2UpIHsKICAgICAgICAgcmV0dXJuUmVzcG9uc2Uo
eyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTkzLDcgKzIxOSw3IEBAIHZvaWQgQ3RhcEhpZERy
aXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0aW9uYWw8Rmlkb0hpZE1lc3Nh
Z2U+JiYgbWVzCiAgICAgbV9jaGFubmVsSWQgfD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBheWxv
YWRbaW5kZXgrK10pIDw8IDE2OwogICAgIG1fY2hhbm5lbElkIHw9IHN0YXRpY19jYXN0PHVpbnQz
Ml90PihwYXlsb2FkW2luZGV4KytdKSA8PCA4OwogICAgIG1fY2hhbm5lbElkIHw9IHN0YXRpY19j
YXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4XSk7Ci0gICAgLy8gRklYTUUoMTkxNTM0KTogQ2hl
Y2sgdGhlIHJlc2V0IG9mIHRoZSBwYXlsb2FkLgorICAgIC8vIEZJWE1FKDE5MTUzNCk6IENoZWNr
IHRoZSByZXN0IG9mIHRoZSBwYXlsb2FkLgogICAgIGF1dG8gY21kID0gRmlkb0hpZE1lc3NhZ2U6
OmNyZWF0ZShtX2NoYW5uZWxJZCwgcHJvdG9jb2woKSA9PSBQcm90b2NvbFZlcnNpb246OmtDdGFw
ID8gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yIDogRmlkb0hpZERldmljZUNvbW1hbmQ6OmtN
c2csIG1fcmVxdWVzdERhdGEpOwogICAgIEFTU0VSVChjbWQpOwogICAgIG1fd29ya2VyLT50cmFu
c2FjdChXVEZNb3ZlKCpjbWQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKE9wdGlv
bmFsPEZpZG9IaWRNZXNzYWdlPiYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKQEAgLTIwNiw3ICsyMzIs
OCBAQCB2b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJDaGFubmVsQWxsb2NhdGVkKE9w
dGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIG1lcwogCiB2b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRp
bnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYm
IG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWR5KTsKKyAgICBp
ZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UmVhZHkpCisgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQo
IW1lc3NhZ2UgfHwgbWVzc2FnZS0+Y2hhbm5lbElkKCkgPT0gbV9jaGFubmVsSWQpOwogICAgIHJl
dHVyblJlc3BvbnNlKG1lc3NhZ2UgPyBtZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpIDogVmVj
dG9yPHVpbnQ4X3Q+KCkpOwogfQpAQCAtMjE0LDggKzI0MSwyOCBAQCB2b2lkIEN0YXBIaWREcml2
ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRN
ZXNzYWdlPgogdm9pZCBDdGFwSGlkRHJpdmVyOjpyZXR1cm5SZXNwb25zZShWZWN0b3I8dWludDhf
dD4mJiByZXNwb25zZSkKIHsKICAgICAvLyBSZXNldCBzdGF0ZSBiZWZvcmUgY2FsbGluZyB0aGUg
cmVzcG9uc2UgY2FsbGJhY2sgdG8gYXZvaWQgYmVpbmcgZGVsZXRlZC4KKyAgICBhdXRvIHJlc3Bv
bnNlQ2FsbGJhY2sgPSBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxsYmFjayk7CisgICAgcmVzZXQoKTsK
KyAgICByZXNwb25zZUNhbGxiYWNrKFdURk1vdmUocmVzcG9uc2UpKTsKK30KKwordm9pZCBDdGFw
SGlkRHJpdmVyOjpyZXNldCgpCit7CisgICAgbV9yZXNwb25zZUNhbGxiYWNrID0gbnVsbHB0cjsK
KyAgICBtX2NoYW5uZWxJZCA9IGZpZG86OmtIaWRCcm9hZGNhc3RDaGFubmVsOwogICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6SWRsZTsKLSAgICBtX3Jlc3BvbnNlQ2FsbGJhY2soV1RGTW92ZShyZXNwb25z
ZSkpOworfQorCit2b2lkIEN0YXBIaWREcml2ZXI6OmNhbmNlbCgpCit7CisgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OklkbGUgfHwgcHJvdG9jb2woKSAhPSBQcm90b2NvbFZlcnNpb246OmtDdGFw
KQorICAgICAgICByZXR1cm47CisgICAgLy8gQ2FuY2VsIGFueSBvdXRzdGFuZGluZyByZXF1ZXN0
cy4KKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZHkpIHsKKyAgICAgICAgYXV0byBjYW5j
ZWxDb21tYW5kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2NoYW5uZWxJZCwgRmlkb0hpZERl
dmljZUNvbW1hbmQ6OmtDYW5jZWwsIHsgfSk7CisgICAgICAgIG1fd29ya2VyLT5jYW5jZWwoV1RG
TW92ZSgqY2FuY2VsQ29tbWFuZCkpOworICAgIH0KKyAgICByZXNldCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmgKaW5kZXggYzVkNmRjYWQ1
ODdkZjE5N2FlMjIwZWFkZTJkMzBiNjRiYmUwYmMyOC4uYmZiMjEzZDc0NGQyZTE2MDlkM2JhM2I0
YmQzNjc0MTFmZDM3MjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmgKQEAgLTM3LDcg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMg
dGhlIENUQVAgSElEIHByb3RvY29sOgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNz
L2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3Rv
Y29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCN1c2IKIC8vIEZTTTogSWRsZSA9PiBBbGxvY2F0ZUNo
YW5uZWwgPT4gUmVhZHkKLWNsYXNzIEN0YXBIaWREcml2ZXIgOiBwdWJsaWMgQ3RhcERyaXZlciB7
CitjbGFzcyBDdGFwSGlkRHJpdmVyIGZpbmFsIDogcHVibGljIEN0YXBEcml2ZXIgewogcHVibGlj
OgogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKICAgICAgICAgSWRsZSwKQEAgLTUw
LDYgKzUwLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEN0YXBIaWREcml2ZXIoVW5pcXVlUmVm
PEhpZENvbm5lY3Rpb24+JiYpOwogCiAgICAgdm9pZCB0cmFuc2FjdChWZWN0b3I8dWludDhfdD4m
JiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsKCkgZmlu
YWw7CiAKIHByaXZhdGU6CiAgICAgLy8gV29ya2VyIGlzIHRoZSBoZWxwZXIgdGhhdCBtYWludGFp
bnMgdGhlIHRyYW5zYWN0aW9uLgpAQCAtNzEsMTEgKzcyLDEzIEBAIHByaXZhdGU6CiAgICAgICAg
IH5Xb3JrZXIoKTsKIAogICAgICAgICB2b2lkIHRyYW5zYWN0KGZpZG86OkZpZG9IaWRNZXNzYWdl
JiYsIE1lc3NhZ2VDYWxsYmFjayYmKTsKKyAgICAgICAgdm9pZCBjYW5jZWwoZmlkbzo6Rmlkb0hp
ZE1lc3NhZ2UmJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHdyaXRlKEhpZENvbm5l
Y3Rpb246OkRhdGFTZW50KTsKICAgICAgICAgdm9pZCByZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYpOwotICAgICAgICB2b2lkIHJldHVybk1lc3NhZ2UoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1l
c3NhZ2U+JiYpOworICAgICAgICB2b2lkIHJldHVybk1lc3NhZ2UoKTsKKyAgICAgICAgdm9pZCBy
ZXNldCgpOwogCiAgICAgICAgIFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CiAgICAgICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SWRsZSB9OwpAQCAtODcsNiArOTAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0aW9u
YWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOwogICAgIHZvaWQgY29udGludWVBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOwogICAgIHZvaWQg
cmV0dXJuUmVzcG9uc2UoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHZvaWQgcmVzZXQoKTsKIAog
ICAgIFVuaXF1ZVJlZjxXb3JrZXI+IG1fd29ya2VyOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0
ZTo6SWRsZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9GaWRvQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZjdmYjUzZTY1MmEyYzE3MjMxM2JhMmVmMzBjMjA4OWQ5NzQzMTllCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9G
aWRvQXV0aGVudGljYXRvci5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWRvQXV0aGVudGljYXRvci5oIgorCisjaWYgRU5B
QkxFKFdFQl9BVVRITikKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0ZpZG9BdXRoZW50aWNhdG9y
OjpGaWRvQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4mJiBkcml2ZXIp
CisgICAgOiBtX2RyaXZlcihXVEZNb3ZlKGRyaXZlcikpCit7CisgICAgQVNTRVJUKG1fZHJpdmVy
KTsKK30KKworRmlkb0F1dGhlbnRpY2F0b3I6On5GaWRvQXV0aGVudGljYXRvcigpCit7CisgICAg
aWYgKG1fZHJpdmVyKQorICAgICAgICBtX2RyaXZlci0+Y2FuY2VsKCk7Cit9CisKK0N0YXBEcml2
ZXImIEZpZG9BdXRoZW50aWNhdG9yOjpkcml2ZXIoKSBjb25zdAoreworICAgIEFTU0VSVChtX2Ry
aXZlcik7CisgICAgcmV0dXJuICptX2RyaXZlcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPEN0YXBE
cml2ZXI+IEZpZG9BdXRoZW50aWNhdG9yOjpyZWxlYXNlRHJpdmVyKCkKK3sKKyAgICBBU1NFUlQo
bV9kcml2ZXIpOworICAgIHJldHVybiBXVEZNb3ZlKG1fZHJpdmVyKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvQXV0aGVu
dGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9GaWRvQXV0aGVudGljYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxNTY2ZTQ3NWQ2MTZkZjc1NGFhNGE0
Y2ZlY2FiOWI1NjA4NTVkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRI
TikKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIEN0YXBEcml2ZXI7CisKK2NsYXNzIEZpZG9BdXRoZW50aWNhdG9yIDogcHVibGljIEF1
dGhlbnRpY2F0b3IgeworcHVibGljOgorICAgIH5GaWRvQXV0aGVudGljYXRvcigpIG92ZXJyaWRl
OworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgRmlkb0F1dGhlbnRpY2F0b3Ioc3RkOjp1bmlx
dWVfcHRyPEN0YXBEcml2ZXI+JiYpOworCisgICAgQ3RhcERyaXZlciYgZHJpdmVyKCkgY29uc3Q7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+IHJlbGVhc2VEcml2ZXIoKTsKKworcHJp
dmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gbV9kcml2ZXI7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0Zp
ZG9TZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vRmlkb1NlcnZpY2UuY3BwCmluZGV4IGVhMTRlZTA1Y2M4N2M1N2QwMzUxMmViMmM4ZWYz
NmQ1YzkxZjIyMmMuLjFiNTY1NGI4YzUxNjAyMzUyZWEzN2I3NDc2NDRhOTQyYTU1MTM0NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
Rmlkb1NlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRmlkb1Nl
cnZpY2U6OmNvbnRpbnVlQWZ0ZXJHZXRJbmZvKFdlYWtQdHI8Q3RhcERyaXZlcj4mJiB3ZWFrRHJp
dmVyLCBWZWN0b3I8CiAgICAgaWYgKCF3ZWFrRHJpdmVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gZHJpdmVyID0gbV9kcml2ZXJzLnRha2Uod2Vh
a0RyaXZlci5nZXQoKSk7CisgICAgYXV0byBkcml2ZXIgPSBtX2RyaXZlcnMudGFrZSh3ZWFrRHJp
dmVyLmdldCgpKTsKICAgICBpZiAoIWRyaXZlciB8fCAhb2JzZXJ2ZXIoKSB8fCByZXNwb25zZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGlj
YXRvci5jcHAKaW5kZXggYmQ0MjQ1OTRmYmZhNWEyNmRlMDFjYTQ3YWMyM2U4ZWE4ZDllMDgzOS4u
YWI0NjUzNjJkM2I2NjFkOTAwODZkNWY5Y2EzZDIxZWZkNGI4NzE1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC00NiwxMSArNDYsOSBAQCBjb25zdCB1bnNpZ25l
ZCByZXRyeVRpbWVPdXRWYWx1ZU1zID0gMjAwOwogfQogCiBVMmZBdXRoZW50aWNhdG9yOjpVMmZB
dXRoZW50aWNhdG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiYmIGRyaXZlcikKLSAgICA6
IG1fZHJpdmVyKFdURk1vdmUoZHJpdmVyKSkKKyAgICA6IEZpZG9BdXRoZW50aWNhdG9yKFdURk1v
dmUoZHJpdmVyKSkKICAgICAsIG1fcmV0cnlUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZV
MmZBdXRoZW50aWNhdG9yOjpyZXRyeUxhc3RDb21tYW5kKQogewotICAgIC8vIEZJWE1FKDE5MTUy
MCk6IFdlIG5lZWQgYSB3YXkgdG8gY29udmVydCBzdGQ6OnVuaXF1ZV9wdHIgdG8gVW5pcXVlUmVm
LgotICAgIEFTU0VSVChtX2RyaXZlcik7CiB9CiAKIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6bWFr
ZUNyZWRlbnRpYWwoKQpAQCAtMTE4LDcgKzExNiw3IEBAIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6
aXNzdWVOZXdDb21tYW5kKFZlY3Rvcjx1aW50OF90PiYmIGNvbW1hbmQsIENvbW1hbmRUeXBlIHR5
CiAKIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6aXNzdWVDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY29tbWFuZCwgQ29tbWFuZFR5cGUgdHlwZSkKIHsKLSAgICBtX2RyaXZlci0+dHJhbnNh
Y3QoVmVjdG9yPHVpbnQ4X3Q+KGNvbW1hbmQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHR5cGVdKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKKyAgICBkcml2ZXIoKS50cmFuc2Fj
dChWZWN0b3I8dWludDhfdD4oY29tbWFuZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgdHlwZV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9VMmZBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAppbmRleCBkOTA1NWNkMDU5MDE0MTVh
YWQ1M2QyMTllYTEzZjljZWY0NjdhOWZjLi40NjcyNzQ4Nzc5ZjM3YWNmMDhiZjRjZWRhNzg5NWI5
ZDMyZGVlZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaApAQCAtMjcsNyAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3IuaCIKKyNpbmNsdWRlICJGaWRvQXV0aGVudGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAKIG5hbWVzcGFjZSBhcGR1IHsKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEN0YXBEcml2ZXI7CiAKLWNsYXNzIFUyZkF1dGhlbnRpY2F0b3IgZmlu
YWwgOiBwdWJsaWMgQXV0aGVudGljYXRvciB7CitjbGFzcyBVMmZBdXRoZW50aWNhdG9yIGZpbmFs
IDogcHVibGljIEZpZG9BdXRoZW50aWNhdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFUy
ZkF1dGhlbnRpY2F0b3I+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4mJiBkcml2
ZXIpCiAgICAgewpAQCAtNjksNyArNjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGludWVC
b2d1c0NvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoYXBkdTo6QXBkdVJlc3BvbnNlJiYpOwog
ICAgIHZvaWQgY29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChhcGR1OjpB
cGR1UmVzcG9uc2UmJik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gbV9kcml2
ZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8VTJmQXV0aGVudGljYXRvcj4gbV9yZXRyeVRpbWVyOwog
ICAgIFZlY3Rvcjx1aW50OF90PiBtX2xhc3RDb21tYW5kOwogICAgIENvbW1hbmRUeXBlIG1fbGFz
dENvbW1hbmRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggN2Y4OWZiOTc2Yjk4YmUwYzg3Y2YzNzFkZDQ0Zjg1Yzc0MTljZTQ1My4uNWEyNjYxNDlkODZh
MWNiMmI5Nzk3MmZjMWRhMmQxNTlmZGNmOTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBv
bGljaWVzLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1dGhl
bnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCkBAIC00
MTEzLDYgKzQxMTQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJgogICAgICAgICBtX2xvYWRl
ckNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBu
YXZpZ2F0aW9uLmdldCgpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJE
YXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkp
CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRp
b24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKworI2lmIEVOQUJMRShXRUJfQVVUSE4p
CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJl
cXVlc3QobV93ZWJQYWdlSUQsIGZyYW1lSUQpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgVVJM
JiYgdXJsKQpAQCAtNzE5Niw2ICs3MjAxLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0
YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKICNpZiBFTkFCTEUoU1BFRUNI
X1NZTlRIRVNJUykKICAgICByZXNldFNwZWVjaFN5bnRoZXNpemVyKCk7CiAjZW5kaWYKKworI2lm
IEVOQUJMRShXRUJfQVVUSE4pCisgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5hdXRoZW50aWNhdG9y
TWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQsIFdURjo6bnVsbG9wdCk7CisjZW5k
aWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQo
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0aW9uUmVhc29uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNTAzOGRlY2I2ZDMzYzlhNzhi
NDM1NTlmNmI2YzY1MmRkMjY0MjhmZS4uMWE1NzljZWIwZjdiYTBlNGMwN2JlYWZiYzJmYmUwZDVk
NDRiZGEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJRnJhbWVIYW5kbGUuaCIKICNpbmNsdWRl
ICJBUElQYWdlR3JvdXBIYW5kbGUuaCIKICNpbmNsdWRlICJBUElQYWdlSGFuZGxlLmgiCisjaW5j
bHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJz
LmgiCkBAIC04OTAsNiArODkxLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgLy8gYmFjayB0byB0aGUgVUlQcm9j
ZXNzLCB0aGVuIHRoZSBmcmFtZURlc3Ryb3llZCBtZXNzYWdlIHdpbGwgc3RpbGwgYmUgcmVjZWl2
ZWQgYmVjYXVzZSBpdAogICAgIC8vIGdldHMgc2VudCBkaXJlY3RseSB0byB0aGUgV2ViUHJvY2Vz
c1Byb3h5LgogICAgIEFTU0VSVChXZWJGcmFtZVByb3h5TWFwOjppc1ZhbGlkS2V5KGZyYW1lSUQp
KTsKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIGlmIChhdXRvKiBmcmFtZSA9IHdlYkZyYW1l
KGZyYW1lSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKKyAg
ICAgICAgICAgIHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5hdXRoZW50aWNhdG9yTWFuYWdlcigp
LmNhbmNlbFJlcXVlc3QocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQpOworICAgIH0KKyNlbmRp
ZgogICAgIG1fZnJhbWVNYXAucmVtb3ZlKGZyYW1lSUQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NGY5NmU2MjcyM2ViYTE2
MTdhYjhiMTJjNzE2ZjAwMzYwOWI2MTI2Li5lYzc3OGYyZTI5YTNhYTkyNjJkNjU3ZjBkOWE4MjI0
N2RjODUzNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEwNjEsNyArMTA2MSw2IEBACiAJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVC
MCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmgg
Ki87IH07CiAJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1dGhvcml6YXRpb25Mb2Fk
UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0JCRUE2QzIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0aW9uTG9hZFBvbGljeS5oICov
OyB9OwogCQk1N0M2MjQ0QjIzNDY3OUE0MDAzODNGRTcgLyogV2ViQXV0aGVudGljYXRpb25QYW5l
bEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0M2MjQ0QTIzNDY3OUE0MDAzODNGRTcgLyogV2ViQXV0aGVudGljYXRpb25QYW5lbEZsYWdzLmgg
Ki87IH07Ci0JCTU3RENFRDZFMjE0MkVFNUUwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTU3RENFRDZGMjE0
MkVFNjMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENkEyMTQy
RUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmggKi87
IH07CiAJCTU3RENFRDcwMjE0MkVFNjgwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2QzIxNDJFQUY5MDAxNkI4NDcgLyogV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1N0RD
RUQ3MTIxNDJFRTZDMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdEQ0VENkQyMTQyRUFGQTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5TWVzc2FnZXMuaCAqLzsgfTsKQEAgLTM1MjUsNyArMzUyNCw2IEBACiAJCTU3NTk3RUMwMjE4
MThCRTIwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEN0YXBIaWREcml2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzYwODI4QjIwMjk4NTQyMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYwODI4QzIwMjk4NTQyMDAxMTY2NzggLyog
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTU3NjA4MjhEMjAyOTg3RTYwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYwODI5NTIwMkJEOEJBMDAxMTY2Nzgg
LyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTc2MDgyOTYyMDJCRDhCQTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyOTkyMDJC
REFFMjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU0Niw2ICszNTQ0LDggQEAKIAkJNTdCODI2
NDcyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZpZG9TZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCODI2NEEy
MzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tO
ZmNTZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjgyNjRCMjMwNjAz
QzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1v
Y2tOZmNTZXJ2aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4RTNENTIz
NTU4NjRBMDBENUM1RDEgLyogRmlkb0F1dGhlbnRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlk
b0F1dGhlbnRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCOEUzRDYy
MzU1ODY0QTAwRDVDNUQxIC8qIEZpZG9BdXRoZW50aWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZpZG9BdXRoZW50aWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTdCQkVBNkMyMkJDMEJGRTAwMjczOTk1IC8qIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU09BdXRob3JpemF0aW9uTG9hZFBvbGljeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1N0M2MjQ0QTIzNDY3OUE0MDAzODNGRTcgLyogV2ViQXV0aGVudGlj
YXRpb25QYW5lbEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxG
bGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRUQ2QTIxNDJFQUUyMDAx
NkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2Fn
ZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAg
LTcwNDcsNiArNzA0Nyw4IEBACiAJCQkJNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBI
aWREcml2ZXIuaCAqLywKIAkJCQk1NzBEQUFDOTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0Ry
aXZlci5jcHAgKi8sCiAJCQkJNTcwREFBQzgyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2
ZXIuaCAqLywKKwkJCQk1N0I4RTNENjIzNTU4NjRBMDBENUM1RDEgLyogRmlkb0F1dGhlbnRpY2F0
b3IuY3BwICovLAorCQkJCTU3QjhFM0Q1MjM1NTg2NEEwMEQ1QzVEMSAvKiBGaWRvQXV0aGVudGlj
YXRvci5oICovLAogCQkJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2VydmljZS5j
cHAgKi8sCiAJCQkJNTdCODI2NDYyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggKi8s
CiAJCQkJNTdFQjJFMzkyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkF1dGhlbnRpY2F0b3IuY3BwICov
LApAQCAtNzA2MCw3ICs3MDYyLDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU3NjA4MjhDMjAy
OTg1NDIwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovLAogCQkJ
CTU3NjA4MjhCMjAyOTg1NDIwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aCAqLywKLQkJCQk1NzYwODI4RDIwMjk4N0U2MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBXZWJBdXRoZW50aWNh
dGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMTUxMyw3ICsxMTUxNCw2IEBA
CiAJCQkJMjY4NDA1NTIxOEI4NkVENjAwMjJDMzhCIC8qIFZpZXdVcGRhdGVEaXNwYXRjaGVyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjAyMjRDMThDMTZCOUYwMEMz
RThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBOEU3RDNDMThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1N0RDRUQ2RTIxNDJF
RTVFMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3RENFRDcwMjE0MkVFNjgwMDE2Qjg0NyAvKiBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzBBMTk1NzFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Np
b25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMwQTE5NTMxQzhGRkRG
QjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwCmluZGV4IDY2ZmExYTc5YmQxZjY1OTRjZDI2ZDk0YzM1NzY4ODYzMWE1OGY4OWIu
LjhhOTg3M2IwMjA0OTNjNmEwNjkxZjNhNTZjMWJhMDE1M2VjYTdkMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC0yOCw0MiArMjgsNDAg
QEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKLSNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJs
aWNLZXlDcmVkZW50aWFsRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yKFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBtX3dlYlBhZ2Uod2ViUGFn
ZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3dlYlBhZ2UuaWRlbnRpZmllcigpLCAqdGhpcyk7CiB9CiAKLVdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvcjo6fldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpCit2b2lkIFdlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0
aGlzKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1l
KTsKKyAgICBpZiAoIXdlYkZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgbV93ZWJQYWdlLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHk6Ok1ha2VDcmVkZW50aWFsKHdlYkZyYW1lLT5mcmFtZUlEKCksIGhhc2gsIG9wdGlvbnMpLCBX
VEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgV2ViQ29yZTo6
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
cyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBh
dXRvIG1lc3NhZ2VJZCA9IHNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRs
ZXIpKTsKLSAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHk6Ok1ha2VDcmVkZW50aWFsKG1lc3NhZ2VJZCwgaGFzaCwgb3B0aW9ucykpOwor
ICAgIGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOworICAg
IGlmICghd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6R2V0
QXNzZXJ0aW9uKHdlYkZyYW1lLT5mcmFtZUlEKCksIGhhc2gsIG9wdGlvbnMpLCBXVEZNb3ZlKGhh
bmRsZXIpKTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2Vy
dGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgV2ViQ29yZTo6UmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21w
bGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgYXV0byBtZXNzYWdlSWQgPSBzZXRSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgbV93ZWJQYWdlLnNl
bmQoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpHZXRBc3NlcnRp
b24obWVzc2FnZUlkLCBoYXNoLCBvcHRpb25zKSk7Ci19Ci0KLXZvaWQgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgYXV0
byBtZXNzYWdlSWQgPSBhZGRRdWVyeUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikp
OwotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eTo6SXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKG1l
c3NhZ2VJZCkpOworICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGUoKSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5oCmluZGV4IDZiYmM2YjY2YWM1Nzg0NjljZTM4NWE5OTdiYTc2NTA1NDIzNzdmNGYuLjc4N2U5
YTk3YjY0MTQ1OWFiNzhkZjk5ZDQ4N2I2YWMxYzdjMTI4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTI3LDI4ICsyNywyMiBAQAogCiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Q2xpZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvcihXZWJQYWdlJik7Ci0gICAgfldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigp
OwogCiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNs
aWVudAotICAgIC8vIFNlbmRlcnMuCi0gICAgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAg
IHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVz
dENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29u
c3QgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFdl
YkNvcmU6OkZyYW1lJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKIAotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgotICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0K
ICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTg3MDBjYTNjMTkwMzg0YmVhYTEyMTBjYjAzYmU4ZWQzODlhYTgxMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSMvCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
Ci1tZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgewotCi0gICAgUmVxdWVz
dFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbik7
Ci0gICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHko
dWludDY0X3QgbWVzc2FnZUlkLCBib29sIHJlc3VsdCk7Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDFkZmUzOWQ4ZmVj
N2Y3ZWNlOTJhNzIzODMyNGM1ZWY2NDBmMWYxYTcuLjNmMTkzZWQ0MWNjYzM1MjdkMWNhYmQxOTE1
NGIzZDU4OTVhZjU1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBXZWJQYWdlKiBXZWJGcmFtZTo6cGFnZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVdlYkZyYW1lKiBXZWJGcmFtZTo6ZnJv
bUNvcmVGcmFtZShGcmFtZSYgZnJhbWUpCitXZWJGcmFtZSogV2ViRnJhbWU6OmZyb21Db3JlRnJh
bWUoY29uc3QgRnJhbWUmIGZyYW1lKQogewogICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7CiAgICAg
aWYgKCF3ZWJGcmFtZUxvYWRlckNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCmluZGV4IDJmMGNjOWQyY2Y3NmI4NjIwMmE5Y2NmZDhiNjY4MGViMGY1
YTFiNjMuLmIzMjlhYzVlNWZiMmZhZTQxZDQ3ZjY3ZmNhMTIyYzgzMGRjNjZmYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtNzMsNyArNzMsNyBA
QCBwdWJsaWM6CiAKICAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgV2Vi
RnJhbWUqIGZyb21Db3JlRnJhbWUoV2ViQ29yZTo6RnJhbWUmKTsKKyAgICBzdGF0aWMgV2ViRnJh
bWUqIGZyb21Db3JlRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKTsKICAgICBXZWJDb3JlOjpG
cmFtZSogY29yZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlRnJhbWU7IH0KIAogICAgIEZy
YW1lSW5mb0RhdGEgaW5mbygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM0OGZlZGU0M2Y3N2EyYzFhNzY2NTA2Y2M3YTIwNDdjNjdm
MmQ1YzYuLjU5ZTJjNDk4NTI3ZGViN2NmMzE3N2UwNTM4MWEyYzgzODkyZjBlZGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAxOS0xMC0xNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IEF1dGhlbnRpY2F0b3JDYW5jZWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUyMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTU5MjAyMDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlk
b0hpZE1lc3NhZ2VUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVn
YXRlIHdlYlZpZXc6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDppbml0aWF0ZWRCeUZyYW1lOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsLmh0bWw6IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
aGlkLmh0bWwuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9u
LW5mYy5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2Vi
LWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24uaHRtbDoKKwogMjAxOS0xMC0xNSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBl
ZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtaW50ZXJmYWNlcy5odG1sIGlzIGZhaWxp
bmcgaW4gV2ViS2l0MQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxOGI1YmYyMDYyYTg3M2Vm
ZWJmZGY5MjZkMDhiMThkOWQxZTRmMmFlLi5iYzZhN2QzZWI4N2Y3ZDVlMjk2MWIwMWVhNGYxYTc2
YjgxMTNhMTY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzM4LDYgKzMzOCw3IEBACiAJ
CTU3NTk5RTJCMUYwNzFBQTAwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNr
d2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTk5RTIzMUYwNzE5MkMwMEEzRkI4QyAvKiBJbmRl
eGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sICovOyB9
OwogCQk1NzY2M0RFQTIzNEVBNjZEMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24tbmZjLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc2NjNERTkyMzRFQTYwQjAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNh
dGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sICovOyB9OwogCQk1NzY2M0RFQzIzNEYxRjkzMDBF
ODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2NjNERUIy
MzRGMUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5o
dG1sICovOyB9OworCQk1NzY2M0RGMzIzNTdFNDg5MDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjYzREYyMjM1N0U0NUQwMEU4NUUwOSAv
KiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsLmh0bWwgKi87IH07
CiAJCTU3NjlDNTBCMUQ5QjAwMDIwMDA4NDdGQiAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjlDNTBB
MUQ5QjAwMDEwMDA4NDdGQiAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5tbSAqLzsgfTsKIAkJ
NTc3NEFBNjgyMUZCQkY3ODAwQUYyQTFCIC8qIFRlc3RTT0F1dGhvcml6YXRpb24ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzc0QUE2NzIxRkJCRjc4
MDBBRjJBMUIgLyogVGVzdFNPQXV0aG9yaXphdGlvbi5tbSAqLzsgfTsKIAkJNTc3OEQwNTYyMjEx
MEEyNjAwODk5RTNCIC8qIExvYWRXZWJBcmNoaXZlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc3OEQwNTUyMjExMEEyNjAwODk5RTNCIC8qIExvYWRX
ZWJBcmNoaXZlLm1tICovOyB9OwpAQCAtMTQ0MSw2ICsxNDQyLDcgQEAKIAkJCQlDREM4RTQ5NzFC
QzZGMTA4MDA1OTRGRUMgLyogdmlkZW8td2l0aG91dC1hdWRpby5tcDQgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJMkVCRDlEMEEyMTM0NzMwRDAwMkRBNzU4IC8qIHZpZGVvLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0Q1Nzc3OTkyMTFDRTBFNDAwMUIzNzFFIC8qIHdlYi1hdWRp
by1vbmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTc2NjNERjMyMzU3RTQ4OTAw
RTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RFQzIzNEYxRjkzMDBFODVFMDkgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJNTc2NjNERUEyMzRFQTY2RDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3QzYy
NDUwMjM0NkMyMUUwMDM4M0ZFNyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTg2Miw2ICsxODY0LDcgQEAKIAkJNTc1OTlF
MjYxRjA3MTkyQzAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29t
cGF0aWJpbGl0eS5zcWxpdGUzLXNobSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFj
a3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtc2htIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTc2NjNERTkyMzRFQTYwQjAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLW5mYy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLW5mYy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2NjNERUIy
MzRGMUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2NjNERjIyMzU3RTQ1RDAwRTg1RTA5
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1oaWQtY2FuY2VsLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzY5QzUw
QTFEOUIwMDAxMDAwODQ3RkIgLyogU2VyaWFsaXplZENyeXB0b0tleVdyYXAubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc3NEFBNjcyMUZCQkY3ODAwQUYyQTFC
IC8qIFRlc3RTT0F1dGhvcml6YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0U09B
dXRob3JpemF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Nzc4RDA1NTIy
MTEwQTI2MDA4OTlFM0IgLyogTG9hZFdlYkFyY2hpdmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBMb2FkV2ViQXJjaGl2ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzODQs
NiArMzM4Nyw3IEBACiAJCQkJRjQ0NTFDNzUxRUI4RkQ3QzAwMjBDNURBIC8qIHR3by1wYXJhZ3Jh
cGgtY29udGVudGVkaXRhYmxlLmh0bWwgKi8sCiAJCQkJQ0Q1Nzc3OUIyMTFDRTZDRTAwMUIzNzFF
IC8qIHZpZGVvLXdpdGgtYXVkaW8tYW5kLXdlYi1hdWRpby5odG1sICovLAogCQkJCUNENTc3Nzk4
MjExQ0RFOEYwMDFCMzcxRSAvKiB3ZWItYXVkaW8tb25seS5odG1sICovLAorCQkJCTU3NjYzREYy
MjM1N0U0NUQwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQt
Y2FuY2VsLmh0bWwgKi8sCiAJCQkJNTc2NjNERUIyMzRGMUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1sICovLAogCQkJCTU3NjYzREU5MjM0RUE2
MEIwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCAq
LywKIAkJCQk1N0M2MjQ0RjIzNDZDMUVDMDAzODNGRTcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24uaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAKaW5kZXggMGMxYTA2OWYxM2MzOWM0
MDllNWQ1ZTFiMDNhN2U5MmJmOWIzNjZjMi4uMDY2ZmFlNzlmNzhiM2Y2ZDVkODVkZjY1ZDhjM2M1
YmE4NDZkZTgxMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAKQEAgLTU2LDE2ICs1NiwxNSBAQCBURVNUKEZp
ZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldFNpemUpCiB9CiAKIC8qCi0gKiBVMmYgSW5pdCBQ
YWNrZXRzIGFyZSBvZiB0aGUgZm9ybWF0OgotICogQnl0ZSAwOiAgICAwCi0gKiBCeXRlIDEtNDog
IENoYW5uZWwgSUQKLSAqIEJ5dGUgNTogICAgQ29tbWFuZCBieXRlCi0gKiBCeXRlIDYtNzogIEJp
ZyBFbmRpYW4gc2l6ZSBvZiBkYXRhCi0gKiBCeXRlIDgtbjogIERhdGEgYmxvY2sKKyAqIENUQVAg
SElEIEluaXQgUGFja2V0cyBhcmUgb2YgdGhlIGZvcm1hdDoKKyAqIEJ5dGUgMC0zOiAgQ2hhbm5l
bCBJRAorICogQnl0ZSA0OiAgICBDb21tYW5kIGJ5dGUKKyAqIEJ5dGUgNS02OiAgQmlnIEVuZGlh
biBzaXplIG9mIGRhdGEKKyAqIEJ5dGUgNy1uOiAgRGF0YSBibG9jawogICoKICAqIFJlbWFpbmlu
ZyBidWZmZXIgaXMgcGFkZGVkIHdpdGggMAogICovCi1URVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwg
VGVzdFBhY2tldERhdGEpCitURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldERhdGEx
KQogewogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4RjUwNjA3MDg7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGEgezEwLCAxMX07CkBAIC04OCw2ICs4NywzNCBAQCBURVNUKEZpZG9IaWRNZXNz
YWdlVGVzdCwgVGVzdFBhY2tldERhdGEpCiAgICAgICAgIEVYUEVDVF9FUSgwLCBzZXJpYWxpemVk
W2luZGV4XSkgPDwgIm1pc21hdGNoIGF0IGluZGV4ICIgPDwgaW5kZXg7CiB9CiAKKy8qCisgKiBD
VEFQIEhJRCBDb250aW51YXRpb24gUGFja2V0cyBhcmUgb2YgdGhlIGZvcm1hdDoKKyAqIEJ5dGUg
MC0zOiAgQ2hhbm5lbCBJRAorICogQnl0ZSA0OiAgICBTRVEKKyAqIEJ5dGUgNS1uOiAgRGF0YSBi
bG9jaworICoKKyAqIFJlbWFpbmluZyBidWZmZXIgaXMgcGFkZGVkIHdpdGggMAorICovCitURVNU
KEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldERhdGEyKQoreworICAgIHVpbnQzMl90IGNo
YW5uZWxJZCA9IDB4RjUwNjA3MDg7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgezEwLCAxMX07
CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFj
a2V0PihjaGFubmVsSWQsIDAsIFZlY3Rvcjx1aW50OF90PihkYXRhKSk7CisgICAgc2l6ZV90IGlu
ZGV4ID0gMDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBzZXJpYWxpemVkID0gaW5pdFBhY2tldC0+
Z2V0U2VyaWFsaXplZERhdGEoKTsKKyAgICBFWFBFQ1RfRVEoKGNoYW5uZWxJZCA+PiAyNCkgJiAw
eGZmLCBzZXJpYWxpemVkW2luZGV4KytdKTsKKyAgICBFWFBFQ1RfRVEoKGNoYW5uZWxJZCA+PiAx
NikgJiAweGZmLCBzZXJpYWxpemVkW2luZGV4KytdKTsKKyAgICBFWFBFQ1RfRVEoKGNoYW5uZWxJ
ZCA+PiA4KSAmIDB4ZmYsIHNlcmlhbGl6ZWRbaW5kZXgrK10pOworICAgIEVYUEVDVF9FUShjaGFu
bmVsSWQgJiAweGZmLCBzZXJpYWxpemVkW2luZGV4KytdKTsKKyAgICBFWFBFQ1RfRVEoMCwgc2Vy
aWFsaXplZFtpbmRleCsrXSk7CisKKyAgICBFWFBFQ1RfRVEoZGF0YVswXSwgc2VyaWFsaXplZFtp
bmRleCsrXSk7CisgICAgRVhQRUNUX0VRKGRhdGFbMV0sIHNlcmlhbGl6ZWRbaW5kZXgrK10pOwor
ICAgIGZvciAoOyBpbmRleCA8IHNlcmlhbGl6ZWQuc2l6ZSgpOyBpbmRleCsrKQorICAgICAgICBF
WFBFQ1RfRVEoMCwgc2VyaWFsaXplZFtpbmRleF0pIDw8ICJtaXNtYXRjaCBhdCBpbmRleCAiIDw8
IGluZGV4OworfQorCiBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldENvbnN0cnVj
dG9ycykKIHsKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweDA1MDYwNzA4OwpAQCAtMjA5LDYg
KzIzNiwxNiBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdERlc2VyaWFsaXplKQogICAg
IH0KIH0KIAorVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQcm9wZXJ0aWVzKQoreworICAg
IHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDUwNjA3MDg7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGE7CisKKyAgICBhdXRvIG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKGNoYW5uZWxJ
ZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYW5jZWwsIGRhdGEpOworICAgIEVYUEVDVF9FUShj
aGFubmVsSWQsIG1lc3NhZ2UtPmNoYW5uZWxJZCgpKTsKKyAgICBFWFBFQ1RfRVEoRmlkb0hpZERl
dmljZUNvbW1hbmQ6OmtDYW5jZWwsIG1lc3NhZ2UtPmNtZCgpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCA4ODQyZDlhNWQxMDA0YmJlNzc4OWRmOTg1
MDQ5NDA0YWZkODA0OTY3Li44M2FkY2NmODk5ZWE1NzkyYjQ3ZmY5MzFiMjgwMGUzMzgwMTEyYTc5
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KyNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9y
dCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmg+CkBAIC0zNiwxMCArMzcsMTIgQEAKICNpbXBvcnQgPFdlYktpdC9f
V0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogc3RhdGljIGJvb2wgd2ViQXV0aGVudGlj
YXRpb25QYW5lbFJhbiA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5l
bEZhaWxlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFN1Y2Nl
ZGVkID0gZmFsc2U7CitzdGF0aWMgUmV0YWluUHRyPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWw+
IGdQYW5lbDsKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRl
IDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4KIEBlbmQKQEAg
LTY3LDcgKzcwLDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQ7CiBAZW5kCiAKIEBpbXBsZW1lbnRh
dGlvbiBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgewotICAgIFJldGFpblB0
cjxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsPiBfcGFuZWw7CiAgICAgUmV0YWluUHRyPFRlc3RX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKICAgICBCbG9ja1B0cjx2
b2lkKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiBfY2FsbGJhY2s7CiB9CkBAIC04
NSwxMCArODcsMTAgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bldl
YkF1dGhlbnRpY2F0aW9uUGFuZWw6KF9XS1dlYkF1dGhlbnRpY2EKIAogICAgIF9kZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIGFsbG9jXSBpbml0
XSk7CiAgICAgQVNTRVJUX05FKHBhbmVsLCBuaWwpOwotICAgIF9wYW5lbCA9IHBhbmVsOwotICAg
IFtfcGFuZWwgc2V0RGVsZWdhdGU6X2RlbGVnYXRlLmdldCgpXTsKKyAgICBnUGFuZWwgPSBwYW5l
bDsKKyAgICBbZ1BhbmVsIHNldERlbGVnYXRlOl9kZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBFWFBF
Q1RfV0tfU1RSRVEoW19wYW5lbCByZWx5aW5nUGFydHlJRF0sICIiKTsKKyAgICBFWFBFQ1RfVFJV
RShbW2dQYW5lbCByZWx5aW5nUGFydHlJRF0gaXNFcXVhbDpAIiJdIHx8IFtbZ1BhbmVsIHJlbHlp
bmdQYXJ0eUlEXSBpc0VxdWFsOkAibG9jYWxob3N0Il0pOwogCiAgICAgaWYgKF9pc1JhY3kpIHsK
ICAgICAgICAgaWYgKCFfY2FsbGJhY2spIHsKQEAgLTEwNiw2ICsxMDgsMjQgQEAgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCitjb25zdCBjaGFyIHBhcmVudEZyYW1l
W10gPSAiPGh0bWw+PGlmcmFtZSBpZD0ndGhlRnJhbWUnIHNyYz0naUZyYW1lLmh0bWwnPjwvaWZy
YW1lPjwvaHRtbD4iOworY29uc3QgY2hhciBzdWJGcmFtZVtdID0KKyI8aHRtbD4iCisiPGlucHV0
IHR5cGU9J3RleHQnIGlkPSdpbnB1dCc+IgorIjxzY3JpcHQ+IgorIiAgICBpZiAod2luZG93Lmlu
dGVybmFscykgeyIKKyIgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgaGlkOiB7IGV4cGVjdENhbmNlbDogdHJ1ZSB9IH0pOyIKKyIgICAgICAg
IGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsiCisi
ICAgIH0iCisiICAgIGNvbnN0IG9wdGlvbnMgPSB7IgorIiAgICAgICAgcHVibGljS2V5OiB7Igor
IiAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpIgorIiAgICAgICAgfSIK
KyIgICAgfTsiCisiICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyk7IgorIjwv
c2NyaXB0PiIKKyI8L2h0bWw+IjsKKwogc3RhdGljIF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKndl
YkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpCiB7CiAgICAgc3RhdGljIFJldGFp
blB0cjxfV0tFeHBlcmltZW50YWxGZWF0dXJlPiB0aGVGZWF0dXJlOwpAQCAtMTIyLDIxICsxNDIs
MTIgQEAgc3RhdGljIF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKndlYkF1dGhlbnRpY2F0aW9uRXhw
ZXJpbWVudGFsRmVhdHVyZSgpCiAgICAgcmV0dXJuIHRoZUZlYXR1cmUuZ2V0KCk7CiB9CiAKLS8v
IE9ubHkgZm9jdXNlZCBkb2N1bWVudHMgY2FuIHRyaWdnZXIgV2ViQXV0aG4uCi1zdGF0aWMgdm9p
ZCBmb2N1cyhUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3KQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBbW3dlYlZpZXcgaG9zdFdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOndlYlZpZXddOwotI2Vs
aWYgUExBVEZPUk0oSU9TKQotICAgIFt3ZWJWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKLSNl
bmRpZgotfQotCiBzdGF0aWMgdm9pZCByZXNldCgpCiB7CiAgICAgd2ViQXV0aGVudGljYXRpb25Q
YW5lbFJhbiA9IGZhbHNlOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQgPSBmYWxz
ZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsU3VjY2VkZWQgPSBmYWxzZTsKKyAgICBnUGFu
ZWwgPSBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzYXBjZTsKQEAgLTE0OSw3ICsxNjAsNiBAQCBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE5vUGFuZWxUaW1lb3V0KQogICAgIFtbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1
cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOwogCiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNa
ZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLSAgICBmb2N1cyh3ZWJWaWV3
LmdldCgpKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iXTsKQEAgLTE2Myw3ICsxNzMsNiBAQCBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIE5vUGFuZWxIaWRTdWNjZXNzKQogICAgIFtbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0
aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOwogCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLSAgICBmb2N1cyh3ZWJWaWV3LmdldCgpKTsK
IAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
dGVzdFVSTC5nZXQoKV1dOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVk
ISJdOwpAQCAtMTc0LDEzICsxODMsMTIgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQ
YW5lbFRpbWVvdXQpCiAgICAgcmVzZXQoKTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCi0gICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvICpj
b25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlv
bldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMi
IGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRp
Y2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rl
c3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3
ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIGZvY3VzKHdlYlZpZXcu
Z2V0KCkpOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlv
blBhbmVsUmFuKTsKQEAgLTE5OCw3ICsyMDYsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIFBhbmVsSGlkU3VjY2VzcykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbl0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgZm9jdXMod2ViVmlldy5nZXQoKSk7CiAK
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRl
c3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4p
OwpAQCAtMjIyLDcgKzIyOSw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFuZWxS
YWN5MSkKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlv
blBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFtkZWxlZ2F0ZSBzZXRJc1JhY3k6
dHJ1ZV07CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAg
Zm9jdXMod2ViVmlldy5nZXQoKSk7CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJndl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOwpAQCAtMjQzLDcgKzI0OSw2IEBAIFRFU1QoV2ViQXV0
aGVudGljYXRpb25QYW5lbCwgUGFuZWxSYWN5MikKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwog
ICAgIFtkZWxlZ2F0ZSBzZXRJc1JhY3k6dHJ1ZV07CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgZm9jdXMod2ViVmlldy5nZXQoKSk7CiAKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0
KCldXTsKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOwpAQCAtMjY2
LDcgKzI3MSw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFuZWxUd2ljZSkKICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07Ci0gICAgZm9jdXMod2ViVmlldy5nZXQoKSk7CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGls
OjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOwpAQCAtMjc4LDYgKzI4MiwxNzQgQEAg
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbFR3aWNlKQogICAgIFV0aWw6OnJ1bigm
d2ViQXV0aGVudGljYXRpb25QYW5lbFN1Y2NlZGVkKTsKIH0KIAorVEVTVChXZWJBdXRoZW50aWNh
dGlvblBhbmVsLCBSZWxvYWRIaWRDYW5jZWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5Q
dHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbCIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisK
KyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3Rf
Y29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldp
dGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJl
OndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVS
TC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7Cisg
ICAgW3dlYlZpZXcgcmVsb2FkXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxGYWlsZWQpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExvY2F0aW9uQ2hh
bmdlSGlkQ2FuY2VsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFJldGFpblB0cjxO
U1VSTD4gb3RoZXJVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
c2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJX
ZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNd
OworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4
cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCld
OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNh
dGlvblBhbmVsUmFuKTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAibG9jYXRpb24gPSAnJUAnIiwgW290aGVyVVJMIGFic29sdXRl
U3RyaW5nXV0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhl
bnRpY2F0aW9uUGFuZWxGYWlsZWQpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWws
IE5ld0xvYWRIaWRDYW5jZWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbCIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgUmV0YWlu
UHRyPE5TVVJMPiBvdGhlclVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5n
OllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMg
Zm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1
cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhl
bnRpY2F0aW9uUGFuZWxSYW4pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6b3RoZXJVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1
dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIENsb3NlSGlkQ2FuY2VsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0
byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3Vy
YXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJu
YWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRo
ZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCld
XTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOworICAgIFt3ZWJW
aWV3IF9jbG9zZV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsRmFpbGVk
KTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBTdWJGcmFtZUNoYW5nZUxvY2F0
aW9uSGlkQ2FuY2VsKQoreworICAgIFRDUFNlcnZlciBzZXJ2ZXIoW3BhcmVudEZyYW1lID0gU3Ry
aW5nKHBhcmVudEZyYW1lKSwgc3ViRnJhbWUgPSBTdHJpbmcoc3ViRnJhbWUpXSAoaW50IHNvY2tl
dCkgeworICAgICAgICBOU1N0cmluZyAqZmlyc3RSZXNwb25zZSA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OgorICAgICAgICAgICAgQCJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAg
ICAgIkNvbnRlbnQtTGVuZ3RoOiAlZFxyXG5cclxuIgorICAgICAgICAgICAgIiVAIiwKKyAgICAg
ICAgICAgIHBhcmVudEZyYW1lLmxlbmd0aCgpLAorICAgICAgICAgICAgKGlkKXBhcmVudEZyYW1l
CisgICAgICAgIF07CisgICAgICAgIE5TU3RyaW5nICpzZWNvbmRSZXNwb25zZSA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OgorICAgICAgICAgICAgQCJIVFRQLzEuMSAyMDAgT0tcclxuIgor
ICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAlZFxyXG5cclxuIgorICAgICAgICAgICAgIiVA
IiwKKyAgICAgICAgICAgIHN1YkZyYW1lLmxlbmd0aCgpLAorICAgICAgICAgICAgKGlkKXN1YkZy
YW1lCisgICAgICAgIF07CisKKyAgICAgICAgVENQU2VydmVyOjpyZWFkKHNvY2tldCk7CisgICAg
ICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBmaXJzdFJlc3BvbnNlLlVURjhTdHJpbmcsIGZp
cnN0UmVzcG9uc2UubGVuZ3RoKTsKKyAgICAgICAgVENQU2VydmVyOjpyZWFkKHNvY2tldCk7Cisg
ICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBzZWNvbmRSZXNwb25zZS5VVEY4U3RyaW5n
LCBzZWNvbmRSZXNwb25zZS5sZW5ndGgpOworICAgIH0pOworCisgICAgYXV0byAqY29uZmlndXJh
dGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVz
dFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1
cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4
cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcg
c2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihpZClt
YWtlU3RyaW5nKCJodHRwOi8vbG9jYWxob3N0OiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzZXJ2
ZXIucG9ydCgpKSldXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFu
KTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ0aGVGcmFtZS5zcmMgPSAnc2lt
cGxlLmh0bWwnIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFV0aWw6OnJ1bigmd2ViQXV0
aGVudGljYXRpb25QYW5lbEZhaWxlZCk7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5l
bCwgU3ViRnJhbWVEZXN0cnVjdGlvbkhpZENhbmNlbCkKK3sKKyAgICBUQ1BTZXJ2ZXIgc2VydmVy
KFtwYXJlbnRGcmFtZSA9IFN0cmluZyhwYXJlbnRGcmFtZSksIHN1YkZyYW1lID0gU3RyaW5nKHN1
YkZyYW1lKV0gKGludCBzb2NrZXQpIHsKKyAgICAgICAgTlNTdHJpbmcgKmZpcnN0UmVzcG9uc2Ug
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAgICAgICAgICAgIEAiSFRUUC8xLjEgMjAw
IE9LXHJcbiIKKyAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogJWRcclxuXHJcbiIKKyAgICAg
ICAgICAgICIlQCIsCisgICAgICAgICAgICBwYXJlbnRGcmFtZS5sZW5ndGgoKSwKKyAgICAgICAg
ICAgIChpZClwYXJlbnRGcmFtZQorICAgICAgICBdOworICAgICAgICBOU1N0cmluZyAqc2Vjb25k
UmVzcG9uc2UgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAgICAgICAgICAgIEAiSFRU
UC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogJWRcclxuXHJc
biIKKyAgICAgICAgICAgICIlQCIsCisgICAgICAgICAgICBzdWJGcmFtZS5sZW5ndGgoKSwKKyAg
ICAgICAgICAgIChpZClzdWJGcmFtZQorICAgICAgICBdOworCisgICAgICAgIFRDUFNlcnZlcjo6
cmVhZChzb2NrZXQpOworICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNvY2tldCwgZmlyc3RSZXNw
b25zZS5VVEY4U3RyaW5nLCBmaXJzdFJlc3BvbnNlLmxlbmd0aCk7CisgICAgICAgIFRDUFNlcnZl
cjo6cmVhZChzb2NrZXQpOworICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNvY2tldCwgc2Vjb25k
UmVzcG9uc2UuVVRGOFN0cmluZywgc2Vjb25kUmVzcG9uc2UubGVuZ3RoKTsKKyAgICB9KTsKKwor
ICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9j
b25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0
aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6
d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJv
UmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzooaWQpbWFrZVN0cmluZygiaHR0cDovL2xvY2FsaG9zdDoiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2VydmVyLnBvcnQoKSkpXV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0
aGVudGljYXRpb25QYW5lbFJhbik7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAi
dGhlRnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGVGcmFtZSkiIGNvbXBsZXRpb25IYW5k
bGVyOm5pbF07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsRmFpbGVkKTsK
K30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbEhpZENhbmNlbCkKK3sKKyAg
ICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1oaWQtY2FuY2VsIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05h
bWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGlu
ZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVT
IGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0
dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
KTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBh
bmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmFuKTsKKyAgICBbZ1BhbmVsIGNhbmNlbF07CisgICAgW3dlYlZpZXcg
d2FpdEZvck1lc3NhZ2U6QCJPcGVyYXRpb24gdGltZWQgb3V0LiJdOworICAgIEVYUEVDVF9GQUxT
RSh3ZWJBdXRoZW50aWNhdGlvblBhbmVsRmFpbGVkKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2ViQXV0
aGVudGljYXRpb25QYW5lbFN1Y2NlZGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24taGlkLWNhbmNlbC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2YxMjQ4MTFkNDliNWQ4NmYyMzEzZGQxYmJiZDMzMDBkMTFmZjM5NwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5odG1sCkBAIC0wLDAgKzEsMjIg
QEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBleHBlY3RDYW5jZWw6IHRydWUgfSB9KTsKKyAgICAg
ICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOwor
ICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgIHB1YmxpY0tleTogeworICAg
ICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICB0aW1l
b3V0OiAxMDAKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9n
KCJTdWNjZWVkZWQhIik7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRl
c3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVkZWQhIik7CisgICAgfSwgZXJyb3IgPT4gewor
ICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXJyb3IubWVzc2Fn
ZSk7CisgICAgfSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0
bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNh
dGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1sCmluZGV4IGIxZWY1YTM2ZDI4YThhZDE0NzEwZDhk
N2Y3ZjI1ZGU5YTFjNjk3MDkuLjY1NTEwZDE2OWNmYmYzOGFmYTg5ZGM0YWZkZmQ4OTk1YTA1ZjE0
NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2Vi
LWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1oaWQuaHRtbApAQCAtMSwzICsxLDQgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQi
PgogPHNjcmlwdD4KICAgICBjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NCA9CiAgICAg
ICAgICJBS01Cb21KcFpGaEFLQWl0enVqK1RzbHplbGYzL3Zad0lHdERRTmdvS2VGZDVvRWllWXpo
eXpBNjVzYWYwdEsyIiArCkBAIC01LDggKzYsMTAgQEAKICAgICAgICAgIlo1MVZzdHVRa3VISTJl
WGgwQ3QxZ1BDMGdTeDNDV0xoNUk5YTJBRUFBQUJRQTFoSE1FVUNJUUNTRlR1dUJXZ0IiICsKICAg
ICAgICAgIjQvRjBWQjdEbFVWTTA5SUhQbXhlMU16SFV3Um9DUlpiQ0FJZ0dLb3Y2eG9BeDJNRWY2
LzZxTnM4T3V0emhQMkMiICsKICAgICAgICAgIlFvSjFMN0ZlNjRHOXVCYz0iOwotICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0QXNzZXJ0aW9uTWVzc2Fn
ZUJhc2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBwYXls
b2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlu
dGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9
CiAKICAgICBjb25zdCBvcHRpb25zID0gewogICAgICAgICBwdWJsaWNLZXk6IHsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sCmluZGV4
IDcwNmE2YjdmZmJlZGRhMTQzNTIwMGQ1ZGZhMmViMmE3ZTIwMTFkMjAuLjk0NWI2YjY1OTQyYjU2
ZWQxYjJkZGNlOTZjMzU2MmFlNDFlYjMwZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZj
Lmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbApAQCAtMSwzICsxLDQgQEAKKzxpbnB1
dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgogPHNjcmlwdD4KICAgICBjb25zdCB0ZXN0TmZjQ3Rh
cFZlcnNpb25CYXNlNjQgPSAiUmtsRVQxOHlYekNRQUE9PSI7CiAgICAgY29uc3QgdGVzdEdldElu
Zm9SZXNwb25zZUFwZHVCYXNlNjQgPQpAQCAtOSw4ICsxMCwxMCBAQAogICAgICAgICAiWjUxVnN0
dVFrdUhJMmVYaDBDdDFnUEMwZ1N4M0NXTGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NGVHV1Qldn
QiIgKwogICAgICAgICAiNC9GMFZCN0RsVVZNMDlJSFBteGUxTXpIVXdSb0NSWmJDQUlnR0tvdjZ4
b0F4Mk1FZjYvNnFOczhPdXR6aFAyQyIgKwogICAgICAgICAiUW9KMUw3RmU2NEc5dUJlUUFBPT0i
OwotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3Bv
bnNlQXBkdUJhc2U2NCwgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZj
Q3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0QXNz
ZXJ0aW9uTWVzc2FnZUFwZHVCYXNlNjRdIH0gfSk7CisgICAgICAgIGludGVybmFscy53aXRoVXNl
ckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CiAKICAgICBjb25zdCBv
cHRpb25zID0gewogICAgICAgICBwdWJsaWNLZXk6IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24uaHRtbAppbmRleCBiZjQ5YTVmZGNmMThkNDcwZDViMzJi
Nzg2YzFkMGRjNWUwNmNiOTJlLi4yZGUyZTkyN2MwYTU0MTU0OTY3ZGY1YzQ5YTVmZGEwZGYwMDUx
OGNkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5o
dG1sCkBAIC0xLDQgKzEsOCBAQAorPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+CiA8c2Ny
aXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMud2l0aFVz
ZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisKICAgICBjb25zdCBvcHRpb25z
ID0gewogICAgICAgICBwdWJsaWNLZXk6IHsKICAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVp
bnQ4QXJyYXkoMTYpLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBlYjkyNGY1M2QzMDkzZTJjZTRkOTI2M2JhZjE3OGZhOGRm
NzM0OGIuLjVjMjQ0NDQxZTNmNTRlZGE2MTJjMWRiNDZjN2IxNmVlNDg0YTBhZTEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxOS0xMC0xNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IEF1dGhlbnRpY2F0b3JDYW5jZWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUyMwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU5MjAyMDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kaWZpZWQgb25lIG9mIHRoZSBlcnJvciBtZXNz
YWdlIHRoYXQgaXMgbm8gbG9uZ2VyIGVtaXR0ZWQuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5o
dG1sOgorCiAyMDE5LTEwLTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT046IGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2Fy
ZC1pbnRlcmZhY2VzLmh0bWwgaXMgZmFpbGluZyBpbiBXZWJLaXQxCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IDVlOGY1YjgxMmJl
NTc2M2MzMWJjNWQyZGZjODk0YzA5NTBmNTc4OTMuLjFkNmVkOTA1NGI4M2M3ZDE0NTNiMTc1Yzhk
Mzg5ZDI4YzE1OTZjZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS5odHRwcy5odG1sCkBAIC04Nyw4ICs4Nyw4IEBACiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJvbWlzZVJlamVjdHModCwgIk5vdEFs
bG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJUaGlz
IHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7Ci0gICAgICAgIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLCAiVGhpcyByZXF1ZXN0IGhhcyBiZWVuIHZvaWRlZCBieSBhIG5ldyBy
ZXF1ZXN0LiIpOworICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9taXNlUmVqZWN0cyh0LCAiTm90
QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlRo
aXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKKyAgICAg
ICAgcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gY2FuY2VsbGVkIGJ5
IGEgbmV3IHJlcXVlc3QuIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdHdvIGNvbnNlY3V0aXZlIHJlcXVlc3Rz
Iik7CiAKQEAgLTEwNywxNCArMTA3LDE0IEBACiAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBh
cmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwotICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9taXNlUmVqZWN0cyh0LCAiTm90
QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShjcmVhdGlvbk9wdGlv
bnMpLCAiVGhpcyByZXF1ZXN0IGhhcyBiZWVuIHZvaWRlZCBieSBhIG5ldyByZXF1ZXN0LiIpOwor
ICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShjcmVhdGlvbk9wdGlvbnMpLCAiVGhpcyBy
ZXF1ZXN0IGhhcyBiZWVuIGNhbmNlbGxlZCBieSBhIG5ldyByZXF1ZXN0LiIpOwogCiAgICAgICAg
IGNvbnN0IHJlcXVlc3RPcHRpb25zID0gewogICAgICAgICAgICAgcHVibGljS2V5OiB7CiAgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IikKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQocmVxdWVzdE9wdGlvbnMpLCAiVGhp
cyByZXF1ZXN0IGhhcyBiZWVuIHZvaWRlZCBieSBhIG5ldyByZXF1ZXN0LiIpOworICAgICAgICBw
cm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmdldChyZXF1ZXN0T3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gY2FuY2VsbGVkIGJ5
IGEgbmV3IHJlcXVlc3QuIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdHdvIGNvbnNlY3V0aXZlIHJlcXVlc3Rz
ICgyKSIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nl
c3MtaGlkLmh0dHBzLmh0bWwKaW5kZXggNTQ0NmY1NTcwZjI5ZDUzNDZhZjc4N2NmNTY0YzkzZTU2
NzBhZjcwYy4uZjY0ZTRmYzM5YjAwNTMxNjFjMmI5NWM3Nzc0N2M0N2UxOThmMGFiOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMu
aHRtbApAQCAtMTYzLDcgKzE2MywxMiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVGhpcyByZXF1ZXN0IGhhcyBiZWVuIHZvaWRlZCBi
eSBhIG5ldyByZXF1ZXN0LiIpOworICAgICAgICAvLyBTdGFsbCB0aGUgZmlyc3QgcmVxdWVzdCB0
byB3YWl0IGZvciBjYW5jZWxsYXRpb24uCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1
Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGV4cGVj
dENhbmNlbDogdHJ1ZSB9IH0pOworICAgICAgICBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dl
ZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlRoaXMgcmVx
dWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25N
ZXNzYWdlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tD
dGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRtbAppbmRleCBjZjE4ZmY3
N2VmMzNmYTMyNDMyMGQzYzViM2FjNjRkYTllYTQyODMyLi4zNmI0MWY3NmZlNmExMjBhMzFlM2U1
Yjk1YmQwYWM5NzFjNTFmMTIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUuaHR0cHMuaHRtbApAQCAtODcsOCArODcsOCBAQAogICAgICAgICAgICAgfQogICAgICAg
ICB9OwogCi0gICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiVGhpcyByZXF1
ZXN0IGhhcyBiZWVuIHZvaWRlZCBieSBhIG5ldyByZXF1ZXN0LiIpOwotICAgICAgICBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChv
cHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiB2b2lkZWQgYnkgYSBuZXcgcmVxdWVzdC4i
KTsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJUaGlzIHJlcXVlc3Qg
aGFzIGJlZW4gY2FuY2VsbGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CisgICAgICAgIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLCAiVGhpcyByZXF1ZXN0IGhhcyBiZWVuIGNhbmNlbGxlZCBieSBhIG5ldyByZXF1ZXN0
LiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSB3aXRoIHR3byBjb25zZWN1dGl2ZSByZXF1ZXN0cyIpOwogCkBAIC05OCw3ICs5
OCw3IEBACiAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIz
NDU2IikKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgY29uc3QgcmVzdWx0ID0g
cHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5nZXQocmVxdWVzdE9wdGlvbnMpLCAiVGhpcyByZXF1ZXN0IGhhcyBiZWVuIHZvaWRlZCBieSBh
IG5ldyByZXF1ZXN0LiIpOworICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9taXNlUmVqZWN0cyh0
LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChyZXF1ZXN0T3B0
aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gY2FuY2VsbGVkIGJ5IGEgbmV3IHJlcXVlc3Qu
Iik7CiAKICAgICAgICAgY29uc3QgY3JlYXRpb25PcHRpb25zID0gewogICAgICAgICAgICAgcHVi
bGljS2V5OiB7CkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAgICAgICAgICAgICBwdWJLZXlDcmVk
UGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCiAgICAgICAgICAgICB9
CiAgICAgICAgIH07Ci0gICAgICAgIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGNyZWF0aW9uT3B0aW9ucyksICJUaGlzIHJl
cXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CisgICAgICAgIHByb21p
c2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKGNyZWF0aW9uT3B0aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gY2FuY2VsbGVkIGJ5
IGEgbmV3IHJlcXVlc3QuIik7CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0d28gY29uc2VjdXRpdmUgcmVxdWVzdHMg
KDIpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0
dHBzLmh0bWwKaW5kZXggMGNmMDNlN2RkNmU5MTkwYjdmNTZmN2I5MGVjOTM5YzBlMmFkZWRiMS4u
MDg3YzkzNGE4ZTI2NTY4ODQ5MGZhMjgzOTY4NmNkZjUwY2M5OTEwYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLWhpZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtOTAsNyAr
OTAsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIHByb21pc2VSZWpl
Y3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlv
bnMpLCAiVGhpcyByZXF1ZXN0IGhhcyBiZWVuIHZvaWRlZCBieSBhIG5ldyByZXF1ZXN0LiIpOwor
ICAgICAgICBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQg
YnkgYSBuZXcgcmVxdWVzdC4iKTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBj
aGVja0N0YXBHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>