<?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>206112</bug_id>
          
          <creation_ts>2020-01-10 16:39:07 -0800</creation_ts>
          <short_desc>[WebAuthn] Implement SPI to tell UI clients to select assertion responses</short_desc>
          <delta_ts>2021-12-24 16:55:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=206259</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>206263</dependson>
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1605390</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-10 16:39:07 -0800</bug_when>
    <thetext>Implement SPI to tell UI clients to select assertion responses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605392</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-10 16:40:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/58495733&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605419</commentid>
    <comment_count>2</comment_count>
      <attachid>387403</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-10 17:14:25 -0800</bug_when>
    <thetext>Created attachment 387403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605947</commentid>
    <comment_count>3</comment_count>
      <attachid>387403</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-13 11:02:43 -0800</bug_when>
    <thetext>Comment on attachment 387403
Patch

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

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:33
&gt; +#import &quot;WKSharedAPICast.h&quot;

Removed.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:42
&gt; +#import &lt;wtf/text/Base64.h&gt;

Removed.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:95
&gt; +        EXPECT_TRUE([response.displayName isEqual:@&quot;John P. Smith&quot;] || [response.displayName isEqual:@&quot;&quot;]);

Need to check userHandler as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605955</commentid>
    <comment_count>4</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-13 11:08:11 -0800</bug_when>
    <thetext>The build error seems to be related to unified build. I&apos;m building locally to see what files are missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605977</commentid>
    <comment_count>5</comment_count>
      <attachid>387552</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-13 11:59:51 -0800</bug_when>
    <thetext>Created attachment 387552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605986</commentid>
    <comment_count>6</comment_count>
      <attachid>387555</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-13 12:23:47 -0800</bug_when>
    <thetext>Created attachment 387555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606008</commentid>
    <comment_count>7</comment_count>
      <attachid>387555</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-13 12:59:31 -0800</bug_when>
    <thetext>Comment on attachment 387555
Patch

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

&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.h:40
&gt; +    WTF::String name() const { return m_response-&gt;name(); }

const WTF::String&amp;
This requires a change in WebCore, too.

&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.h:44
&gt; +    const Ref&lt;WebCore::AuthenticatorAssertionResponse&gt;&amp; response() { return m_response; }

Can you make this a const WebCore::AuthenticatorAssertionResponse&amp; ?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.mm:30
&gt; +    RetainPtr&lt;NSData&gt; _userHandle;

This shouldn&apos;t be here.  If you make WebAuthenticationAssertionResponse::userHandle return an API::Data, you can just return wrapper of that.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:155
&gt; +    // Call delegates in the next run loop to prevent clients&apos; reentrance that would potentially modify the state
&gt; +    // of the current run loop in unexpected ways.
&gt; +    RunLoop::main().dispatch([weakThis = makeWeakPtr(*this), this, nsResponses = WTFMove(nsResponses), completionHandler = WTFMove(completionHandler)] () mutable {

This shouldn&apos;t be necessary, and if it is then it shouldn&apos;t be in the API layer.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:157
&gt; +            completionHandler(static_cast&lt;API::WebAuthenticationAssertionResponse&amp;&gt;([[nsResponses firstObject] _apiObject]).response());

Will the set of responses ever be empty?  I see no such guarantee.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606058</commentid>
    <comment_count>8</comment_count>
      <attachid>387555</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-13 14:39:34 -0800</bug_when>
    <thetext>Comment on attachment 387555
Patch

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

Thanks Alex for reviewing the patch.

&gt;&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.h:40
&gt;&gt; +    WTF::String name() const { return m_response-&gt;name(); }
&gt; 
&gt; const WTF::String&amp;
&gt; This requires a change in WebCore, too.

Right. Fixed.

&gt;&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.h:44
&gt;&gt; +    const Ref&lt;WebCore::AuthenticatorAssertionResponse&gt;&amp; response() { return m_response; }
&gt; 
&gt; Can you make this a const WebCore::AuthenticatorAssertionResponse&amp; ?

It is doable. However, at CtapAuthenticator::continueGetNextAssertionAfterResponseReceived where the value is going to be used, I have to use const_cast&lt;AuthenticatorAssertionResponse*&gt;(&amp;response) to take a value out from a hashset. Fixed.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.mm:30
&gt;&gt; +    RetainPtr&lt;NSData&gt; _userHandle;
&gt; 
&gt; This shouldn&apos;t be here.  If you make WebAuthenticationAssertionResponse::userHandle return an API::Data, you can just return wrapper of that.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:155
&gt;&gt; +    RunLoop::main().dispatch([weakThis = makeWeakPtr(*this), this, nsResponses = WTFMove(nsResponses), completionHandler = WTFMove(completionHandler)] () mutable {
&gt; 
&gt; This shouldn&apos;t be necessary, and if it is then it shouldn&apos;t be in the API layer.

It is necessary. Every delegate in this class has it as a result of a bug fix. Why not? What&apos;s the difference of doing it here v.s. the implementation layer?

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:157
&gt;&gt; +            completionHandler(static_cast&lt;API::WebAuthenticationAssertionResponse&amp;&gt;([[nsResponses firstObject] _apiObject]).response());
&gt; 
&gt; Will the set of responses ever be empty?  I see no such guarantee.

No, it shouldn&apos;t. I should assert it above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606074</commentid>
    <comment_count>9</comment_count>
      <attachid>387572</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-13 14:57:48 -0800</bug_when>
    <thetext>Created attachment 387572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606138</commentid>
    <comment_count>10</comment_count>
      <attachid>387572</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-13 16:41:07 -0800</bug_when>
    <thetext>Comment on attachment 387572
Patch

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

r=me with a bunch of nits.

&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.cpp:48
&gt; +static void releaseUserHandle(unsigned char*, const void* data)

This can be inline by making it a lambda that doesn&apos;t capture anything.

&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.cpp:51
&gt; +    static_cast&lt;ArrayBuffer*&gt;(const_cast&lt;void*&gt;(data))-&gt;deref();

Can we change the const void* to just void* in FreeDataFunction instead of this?  A callback that gives you something to destroy should not give you a const pointer.

&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.cpp:59
&gt; +        data = API::Data::createWithoutCopying((const unsigned char*)userHandle-&gt;data(), userHandle-&gt;byteLength(), releaseUserHandle, userHandle);

reinterpret_cast rather than c-style cast.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:73
&gt; +- (void)panel:(_WKWebAuthenticationPanel *)panel selectAssertionResponses:(NSArray &lt; _WKWebAuthenticationAssertionResponse *&gt; *)responses completionHandler:(void (^)(_WKWebAuthenticationAssertionResponse *))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

selectAssertionResponse
Shouldn&apos;t be plural.  You&apos;re supposed to select one.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:156
&gt; +    RunLoop::main().dispatch([weakThis = makeWeakPtr(*this), this, nsResponses = WTFMove(nsResponses), completionHandler = WTFMove(completionHandler)] () mutable {

The original bug fix should&apos;ve gone in the C++ caller rather than the API layer, which shouldn&apos;t contain any behavior-modifying code.  For example, if someone were to make another API for this behavior, like expanding the C API, they could create an API that doesn&apos;t have this.  All APIs should have this, so it needs to be in the implementation code, not the API code.

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:158
&gt; +                auto returnResponse = m_assertionResponses.take(const_cast&lt;AuthenticatorAssertionResponse*&gt;(&amp;response));

I think it would be better to pass a non-const AuthenticatorAssertionResponse&amp; than this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606516</commentid>
    <comment_count>11</comment_count>
      <attachid>387572</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-14 12:14:09 -0800</bug_when>
    <thetext>Comment on attachment 387572
Patch

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

Thanks Alex for r+ the patch.

&gt;&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.cpp:48
&gt;&gt; +static void releaseUserHandle(unsigned char*, const void* data)
&gt; 
&gt; This can be inline by making it a lambda that doesn&apos;t capture anything.

Fixed. My bad. I followed those old ways straightly.

&gt;&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.cpp:51
&gt;&gt; +    static_cast&lt;ArrayBuffer*&gt;(const_cast&lt;void*&gt;(data))-&gt;deref();
&gt; 
&gt; Can we change the const void* to just void* in FreeDataFunction instead of this?  A callback that gives you something to destroy should not give you a const pointer.

Maybe it is true, but I don&apos;t think this patch should do the modification.

&gt;&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.cpp:59
&gt;&gt; +        data = API::Data::createWithoutCopying((const unsigned char*)userHandle-&gt;data(), userHandle-&gt;byteLength(), releaseUserHandle, userHandle);
&gt; 
&gt; reinterpret_cast rather than c-style cast.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:73
&gt;&gt; +- (void)panel:(_WKWebAuthenticationPanel *)panel selectAssertionResponses:(NSArray &lt; _WKWebAuthenticationAssertionResponse *&gt; *)responses completionHandler:(void (^)(_WKWebAuthenticationAssertionResponse *))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; selectAssertionResponse
&gt; Shouldn&apos;t be plural.  You&apos;re supposed to select one.

Good point!

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:156
&gt;&gt; +    RunLoop::main().dispatch([weakThis = makeWeakPtr(*this), this, nsResponses = WTFMove(nsResponses), completionHandler = WTFMove(completionHandler)] () mutable {
&gt; 
&gt; The original bug fix should&apos;ve gone in the C++ caller rather than the API layer, which shouldn&apos;t contain any behavior-modifying code.  For example, if someone were to make another API for this behavior, like expanding the C API, they could create an API that doesn&apos;t have this.  All APIs should have this, so it needs to be in the implementation code, not the API code.

I have filed Bug 206248 as a follow up.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:158
&gt;&gt; +                auto returnResponse = m_assertionResponses.take(const_cast&lt;AuthenticatorAssertionResponse*&gt;(&amp;response));
&gt; 
&gt; I think it would be better to pass a non-const AuthenticatorAssertionResponse&amp; than this.

I don&apos;t think so. I think it might be good to add another overload method to take to accept a const pointer. This is a compromise over the existing HashSet API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606525</commentid>
    <comment_count>12</comment_count>
      <attachid>387689</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-14 12:22:41 -0800</bug_when>
    <thetext>Created attachment 387689
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606547</commentid>
    <comment_count>13</comment_count>
      <attachid>387689</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 12:52:08 -0800</bug_when>
    <thetext>Comment on attachment 387689
Patch for landing

Rejecting attachment 387689 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 387689, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=387689&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=206112&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 387689 from bug 206112.
Fetching: https://bugs.webkit.org/attachment.cgi?id=387689
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 30 diffs from patch file(s).
patching file Source/WebKit/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.h
patching file Source/WebKit/Shared/API/APIObject.h
patching file Source/WebKit/Shared/Cocoa/APIObject.mm
patching file Source/WebKit/Sources.txt
Hunk #1 succeeded at 341 (offset 3 lines).
patching file Source/WebKit/SourcesCocoa.txt
patching file Source/WebKit/UIProcess/API/APIResourceLoadClient.h
patching file Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.cpp
patching file Source/WebKit/UIProcess/API/APIWebAuthenticationAssertionResponse.h
patching file Source/WebKit/UIProcess/API/APIWebAuthenticationPanelClient.h
patching file Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.h
patching file Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.mm
patching file Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponseInternal.h
patching file Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h
patching file Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm
patching file Source/WebKit/UIProcess/Cocoa/ResourceLoadDelegate.h
patching file Source/WebKit/UIProcess/Cocoa/ResourceLoadDelegate.mm
patching file Source/WebKit/UIProcess/WebAuthentication/Authenticator.h
patching file Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp
patching file Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.h
patching file Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h
patching file Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm
patching file Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp
patching file Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.h
Hunk #1 FAILED at 63.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.h.rej
patching file Source/WebKit/WebKit.xcodeproj/project.pbxproj
Hunk #1 succeeded at 1098 (offset 3 lines).
Hunk #2 succeeded at 3776 (offset 18 lines).
Hunk #3 succeeded at 6883 (offset 30 lines).
Hunk #4 succeeded at 8568 (offset 31 lines).
Hunk #5 succeeded at 9942 (offset 33 lines).
Hunk #6 succeeded at 10026 (offset 33 lines).
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
Hunk #5 FAILED at 4874.
Hunk #6 FAILED at 5055.
2 out of 6 hunks FAILED -- saving rejects to file Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj.rej
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid-multiple-accounts.html
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid.html

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/13304288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606565</commentid>
    <comment_count>14</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-14 13:37:31 -0800</bug_when>
    <thetext>Committed r254533: &lt;https://trac.webkit.org/changeset/254533&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606592</commentid>
    <comment_count>15</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-01-14 14:22:00 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #14)
&gt; Committed r254533: &lt;https://trac.webkit.org/changeset/254533&gt;
This seems to have broken iOS and macOS builds, tracked in https://bugs.webkit.org/show_bug.cgi?id=206259</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606598</commentid>
    <comment_count>16</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-14 14:31:08 -0800</bug_when>
    <thetext>A build fix:
Committed r254535: &lt;https://trac.webkit.org/changeset/254535&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606621</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 15:08:25 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 206263</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606628</commentid>
    <comment_count>18</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-01-14 15:12:15 -0800</bug_when>
    <thetext>Builds were still broken after the build fix: https://build.webkit.org/builders/Apple-Catalina-Release-Build/builds/2446

Reverted both changes in https://trac.webkit.org/changeset/254539</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606675</commentid>
    <comment_count>19</comment_count>
      <attachid>387724</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-14 16:25:08 -0800</bug_when>
    <thetext>Created attachment 387724
Patch for Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606681</commentid>
    <comment_count>20</comment_count>
      <attachid>387727</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-14 16:29:36 -0800</bug_when>
    <thetext>Created attachment 387727
Patch for Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606695</commentid>
    <comment_count>21</comment_count>
      <attachid>387734</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-14 16:49:59 -0800</bug_when>
    <thetext>Created attachment 387734
Patch for Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606719</commentid>
    <comment_count>22</comment_count>
      <attachid>387737</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-14 17:16:00 -0800</bug_when>
    <thetext>Created attachment 387737
Patch for Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606756</commentid>
    <comment_count>23</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-14 18:50:18 -0800</bug_when>
    <thetext>Committed r254554: &lt;https://trac.webkit.org/changeset/254554&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387403</attachid>
            <date>2020-01-10 17:14:25 -0800</date>
            <delta_ts>2020-01-13 11:59:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206112-20200110171425.patch</filename>
            <type>text/plain</type>
            <size>45807</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAxNDkzM2U3NzJlZDYzNTE0
NWYxMWI1MzQ5YjM1ZmZmNjNiODgwOGQuLmIxZmExOWRmMjMyNjk3MTMzNWJjZTA4MWI2YzQzZDhl
YTE4MDI5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDEtMTAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBTUEkgdG8gdGVsbCBVSSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDk1NzMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBkZWxlZ2F0ZSBtZXRob2QgaW4gX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbERlbGVnYXRlIHRvIHRlbGwgVUkgY2xpZW50cyB0bworICAgICAgICBzZWxlY3Qg
YW4gYXNzZXJ0aW9uIHJlc3BvbnNlIHdoZW4gbXVsdGlwbGUgYXJlIHJldHVybmVkIGZyb20gYW4g
YXV0aGVudGljYXRvci4gSGVyZSBpcyB0aGUgU1BJOgorICAgICAgICBAcHJvdG9jb2wgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDxOU09iamVjdD4KKyAgICAgICAgQG9wdGlvbmFs
CisgICAgICAgIC4uLgorICAgICAgICAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzOihOU0FycmF5IDwgX1dLV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3BvbnNlcyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAq
KSljb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgLi4uCisgICAgICAgIEBlbmQKKworICAgICAg
ICBBIG5ldyBpbnRlcmZhY2UgaXMgaW50cm9kdWNlZCB0byByZXByZXNlbnQgYW4gYXV0aGVudGlj
YXRvciBhc3NlcnRpb24gcmVzcG9uc2U6CisgICAgICAgIEBpbnRlcmZhY2UgX1dLV2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSA6IE5TT2JqZWN0CisgICAgICAgIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7CisgICAgICAgIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOwor
ICAgICAgICBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqdXNl
ckhhbmRsZTsKKyAgICAgICAgQGVuZAorICAgICAgICBPbmx5IG1lbWJlcnMgdGhhdCBjYW4gYXNz
aXN0IHVzZXJzIHRvIG1ha2UgYSBkZWNpc2lvbiBhcmUgZXhwb3NlZCB0byBVSSBjbGllbnRzLgor
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAgICAgIChBUEk6OldlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmgu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaC4KKyAgICAgICAgKC1b
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBkZWFsbG9jXSk6CisgICAgICAg
ICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgbmFtZV0pOgorICAgICAg
ICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIGRpc3BsYXlOYW1lXSk6
CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgdXNlckhh
bmRsZV0pOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
IF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXMgY29uc3QpOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTAxLTEwICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBT
dXBwb3J0IGF1dGhlbnRpY2F0b3JHZXROZXh0QXNzZXJ0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJT2JqZWN0LmgKaW5kZXggZmRiODFmNDEzNTUxZmZjMmNiZDFlMjdmMGI0MGQyNGI4NGRkODli
Zi4uOGRhMTNjNGIzM2M3MDg5NDRhYjIxOGIzNjcwOGU3MTZjMDg0NTk5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTgzLDYgKzE4Myw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICAgICAgV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZSwKICAgICAgICAgV2ViQXV0aGVudGljYXRpb25QYW5lbCwKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggNjQyZjZlZjRiZGM3
YjM0MWY4MmJkNDY2M2VhM2QxOTMxZTg1MjBlNy4uYmYyNGRiNmFiOTU2MDY5MGRjODM1NDVlYzk5
NjM4MTFlZTYyZDc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpA
QCAtODgsNiArODgsNyBAQAogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tW
aXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbkludGVybmFsLmgiCiAKQEAgLTM4OSw2ICszOTAsOSBAQCB2b2lkKiBPYmplY3Q6Om5ld09i
amVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZTo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbDoKICAgICAgICAgd3JhcHBlciA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
IGFsbG9jXTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlOgorICAgICAgICB3cmFwcGVyID0gW19XS1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UgYWxsb2NdOworICAgICAgICBicmVhazsKICNlbmRpZgogCiAg
ICAgY2FzZSBUeXBlOjpCdW5kbGVGcmFtZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDMwNmNkMWU2OTM1NjYx
YWQ0MWMwNjA5Mjg0OGJmOWFmMzZiMWI3MjYuLmJlMzc0YzJhOTRlMjJlZTQ3ZDZiNDRlMzY3M2Qx
ODlkMjE2MWM3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzM4LDYgKzMzOCw3IEBAIFVJUHJvY2Vzcy9B
UEkvQVBJVVJMU2NoZW1lVGFzay5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3Js
ZC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJ
VXNlclN0eWxlU2hlZXQuY3BwCitVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKIFVJUHJvY2Vzcy9B
UEkvQVBJV2luZG93RmVhdHVyZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTlmYjRk
NWUwZThiN2IxZTAzYTQ5OTNjYzk2OTZkODUyMDQ0YWE1YS4uZDU5MWZkNzQ3MjQ5ODU4ZTE2NzU4
OWIxMDk0Njk5ODVmODE3MDY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjc4LDYgKzI3
OCw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VySW5pdGlhdGVkQWN0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Zpc2l0ZWRM
aW5rU3RvcmUubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU2l6ZS5tbQogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFmZTY0NjBhZjUyODk0ODdlODMy
MGIyYWE5YWJlYjVhMDMwMWVkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAt
MCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCIKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKK25hbWVzcGFjZSBBUEkgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K1JlZjxXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlPiBXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4mJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKSk7Cit9
CisKK1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OldlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4mJiByZXNwb25zZSkKKyAgICA6IG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCit7
Cit9CisKK1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6On5XZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OworCit9IC8vIG5hbWVzcGFjZSBBUEkK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjcxYTA2YTFmNDBmZjJiMmQ3M2QwNDViNzNlNjQ0MTI2
MjJlODVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5
cGU6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKyAgICB+V2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSgpOworCisgICAgV1RGOjpTdHJpbmcgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UtPm5hbWUoKTsgfQorICAgIFdURjo6U3RyaW5nIGRp
c3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS0+ZGlzcGxheU5hbWUoKTsgfQor
ICAgIEFycmF5QnVmZmVyKiB1c2VySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS0+
dXNlckhhbmRsZSgpOyB9CisKKyAgICBjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiYgcmVzcG9uc2UoKSB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CisKK3By
aXZhdGU6CisgICAgV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZShSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKworICAgIFJlZjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IG1fcmVzcG9uc2U7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTJmNWFm
MDJkNDRlZGFhYzIwZTljODk0MmExYjUwMTE4Y2ZkNzM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBf
V0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIDogTlNPYmplY3QKKworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7CisK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNjE2ODgwMjg5YjJlN2YxNzBl
OTk1ZTk2MjhmZjMzMDljY2U0MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5t
bQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKKwor
QGltcGxlbWVudGF0aW9uIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Ugewor
ICAgIFJldGFpblB0cjxOU0RhdGE+IF91c2VySGFuZGxlOworfQorCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX3Jlc3BvbnNlLT5+V2ViQXV0aGVudGlj
YXRpb25Bc3NlcnRpb25SZXNwb25zZSgpOworCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
IChOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gX3Jlc3BvbnNlLT5uYW1lKCk7Cit9CisK
Ky0gKE5TU3RyaW5nICopZGlzcGxheU5hbWUKK3sKKyAgICByZXR1cm4gX3Jlc3BvbnNlLT5kaXNw
bGF5TmFtZSgpOworfQorCistIChOU0RhdGEgKil1c2VySGFuZGxlCit7CisgICAgaWYgKF91c2Vy
SGFuZGxlKQorICAgICAgICByZXR1cm4gX3VzZXJIYW5kbGUuZ2V0KCk7CisKKyAgICBpZiAoYXV0
byogdXNlckhhbmRsZSA9IF9yZXNwb25zZS0+dXNlckhhbmRsZSgpKQorICAgICAgICBfdXNlckhh
bmRsZSA9IFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnVzZXJIYW5kbGUtPmRhdGEoKSBs
ZW5ndGg6dXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpXTsKKyAgICByZXR1cm4gX3VzZXJIYW5kbGUu
Z2V0KCk7Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlv
bgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX3Jlc3BvbnNl
OworfQorI2VuZGlmCisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjM2MDBmYzlmMzBjNDhl
N2RmMjZlZDlkMDNhYWU5NTA0OTIxYTdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2VJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIgorCisj
aWYgRU5BQkxFKFdFQl9BVVRITikKKworI2ltcG9ydCAiQVBJV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTsKK307CisKK30KKworQGludGVyZmFjZSBf
V0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICgpIDxXS09iamVjdD4geworQHBh
Y2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlPiBfcmVzcG9uc2U7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggODY4MDYyM2ZjNDllMDdhZmMz
MWFhYzc2MGU1YjZhNDRlYmYyZDMwOC4uOWIxOTZiNjU1MzA3YTI0MmMwYmEzNjVlMjI2MTU2MzM3
ZTViNTRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC0zMSw2ICszMSw3IEBACiAK
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlOwogQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CiAKIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQp
IHsKQEAgLTY5LDYgKzcwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0
aGVudGljYXRpb25UeXBlKSB7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsICopcGFuZWwgdXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZSl1cGRhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgKilwYW5lbCBkaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KF9X
S1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KXJlc3VsdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczooTlNV
SW50ZWdlcilyZXRyaWVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAq
KXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlczooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDQ0NzRi
YWM2NDI3ZDIwOTZiNGQxMmFkNDVlMDg3MGE1Y2EwMDlmZDkuLjJlYjMxZTgxMmM5NTk4ZTg5ODg0
MGI5NTU4Y2UzMzJmMmVkNjc5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0y
NCwxMCArMjQsMTAgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0
YW50cy5oPgogCisjaW1wb3J0ICJXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgiCisjaW1w
b3J0IDxXZWJDb3JlL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQuaAppbmRleCAzYjBjODkxNmRjMDkyMTA3NTg0ZGQ3MGJhMDEwMjQ5MDU3NDc0Y2M2Li4xOGI2
NWU0OThjNjZkZjE4MDFhMjAxMDYxOTQxNmVlNWM0ZGRhODE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCkBAIC00OSw2ICs0OSw3
IEBAIHByaXZhdGU6CiAgICAgLy8gQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50CiAg
ICAgdm9pZCB1cGRhdGVQYW5lbChXZWJBdXRoZW50aWNhdGlvblN0YXR1cykgY29uc3QgZmluYWw7
CiAgICAgdm9pZCBkaXNtaXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IGZp
bmFsOworICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNvbnN0IEhhc2hTZXQ8UmVm
PFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiYpPiYmKSBjb25zdCBmaW5hbDsKIAogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
Km1fcGFuZWw7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxE
ZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOwpAQCAtNTYsNiArNTcsNyBAQCBwcml2YXRlOgogICAgIHN0
cnVjdCB7CiAgICAgICAgIGJvb2wgcGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsIDog
MTsKICAgICAgICAgYm9vbCBwYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJl
c3VsdCA6IDE7CisgICAgICAgIGJvb2wgcGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZXNDb21w
bGV0aW9uSGFuZGxlciA6IDE7CiAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCmlu
ZGV4IDM1ZWY2NWJlZWY2MWJiZTVlYTUxMzllODMzMGNhNzM5ODVmZTQxMmMuLmZiMWJhNjE5Zjgx
ZDMzN2RhMjA4NzJjODY1NzI4ZDViYmJiMWMxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQpAQCAtMjgsNyArMjgsMTEgQEAK
IAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNpbXBvcnQgIkFQSVdlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UuaCIKKyNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXIuaCIKKyNpbXBvcnQgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2ltcG9ydCAiV2ViQXV0aGVudGlj
YXRpb25GbGFncy5oIgorI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgiCiAj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCkBAIC00MCw2ICs0NCw3IEBAIFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxDbGllbnQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQoX1dLV2ViQXV0aGVu
dGljYXRpb25QCiB7CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxVcGRhdGVXZWJBdXRoZW50
aWNhdGlvblBhbmVsID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFu
ZWw6dXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9k
cy5wYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOmRpc21pc3NXZWJBdXRoZW50aWNh
dGlvblBhbmVsV2l0aFJlc3VsdDopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFNlbGVj
dEFzc2VydGlvblJlc3BvbnNlc0NvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzOmNvbXBs
ZXRpb25IYW5kbGVyOildOwogfQogCiBSZXRhaW5QdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxEZWxlZ2F0ZT4gPiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkZWxlZ2F0ZSgp
CkBAIC0xMDcsNiArMTEyLDQxIEBAIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
ZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0IHJlc3VsdCkKICAgICB9KTsKIH0K
IAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNw
b25zZXMoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPj4mIHJlc3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZWY8V2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdAoreworICAgIGF1dG8gbnNSZXNwb25zZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6cmVzcG9uc2VzLnNpemUoKV0pOworICAgIGZv
ciAoYXV0byYgcmVzcG9uc2UgOiByZXNwb25zZXMpCisgICAgICAgIFtuc1Jlc3BvbnNlcyBhZGRP
YmplY3Q6d3JhcHBlcihBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OmNy
ZWF0ZShyZXNwb25zZS5jb3B5UmVmKCkpKV07CisKKyAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0
aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3Vs
ZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCisgICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVu
IGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgorICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIG5zUmVzcG9uc2VzID0gV1RGTW92
ZShuc1Jlc3BvbnNlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSku
cmVzcG9uc2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzQ29tcGxl
dGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSY+KFtbbnNSZXNwb25zZXMg
Zmlyc3RPYmplY3RdIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgp
OworICAgICAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UmPihb
W25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSkucmVzcG9uc2UoKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNoZWNrZXIgPSBDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rv
cihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXM6Y29tcGxldGlvbkhhbmRsZXI6KSk7Cisg
ICAgICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlczpu
c1Jlc3BvbnNlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3Zl
KGNoZWNrZXIpXShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25z
ZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UmPihbcmVzcG9uc2UgX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAgICAgICB9KS5nZXQo
KV07CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDk3NjRjNmY3ZDcwYjUzNzA0YTM3NjZlZWU3M2FlM2EwMWE0NDNlNzcu
LjYzMGM5MWIwODY2YjQzZTM4YmI4YjQwODE0ZjFiYTIzYTAyODgzNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Myw2ICsxMDkz
LDkgQEAKIAkJNTc3RkY3ODIyMzQ2RTgxQzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3N0ZGNzgxMjM0NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50LmggKi87IH07CiAJCTU3N0ZGNzg1MjM0NkVDQUEwMDRFREZCOSAvKiBXZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzdGRjc4MzIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oICovOyB9OwogCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxB
dXRoZW50aWNhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzhEQzI5NzIxNTVBMDAxMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNh
dGlvblNvZnRMaW5rLmggKi87IH07CisJCTU3OUYxQkY2MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzlGMUJGNDIzQzgwREI2MDBDN0Q0QjQgLyogX1dL
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3OUYxQkY5MjNDODBFQzYwMEM3RDRCNCAv
KiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OUYxQkY4MjNDODBFQzYw
MEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwu
aCAqLzsgfTsKKwkJNTc5RjFCRkMyM0M4MTFDRjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3OUYxQkZBMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi87IH07CiAJCTU3QUM4RjUwMjE3RkVFRDkwMDU1NDM4
QyAvKiBIaWRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0FDOEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5oICov
OyB9OwogCQk1N0I0QjQ2MDIwQjUwNEFDMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRo
ZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTdCNEI0NUUyMEI1MDRBQjAwRDRBRDc5IC8qIENsaWVudENlcnRpZmlj
YXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaCAqLzsgfTsKIAkJNTdCODI2NDEyMzA0RUIz
RTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQ
SS5oICovOyB9OwpAQCAtMzc0OSw2ICszNzUyLDExIEBACiAJCTU3N0ZGNzgzMjM0NkVDQUEwMDRF
REZCOSAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc3RkY3ODQyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzhEQzI5NzIxNTVBMDAxMDA3NEU4
MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2Fs
QXV0aGVudGljYXRpb25Tb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzlGMUJGNDIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3OUYxQkY1MjNDODBEQjYw
MEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRjgyM0M4MEVDNjAwQzdENEI0
IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRkEyM0M4MTFDRjAwQzdENEI0
IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzlGMUJGQjIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTdBQzhGNEUyMTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGlkQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1N0FDOEY0RjIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEhpZENvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3QjRCNDVEMjBCNTA0QUIwMEQ0QUQ3OSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0
aW9uTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjgzOSw2
ICs2ODQ3LDkgQEAKIAkJCQkxQTgxQjM3RjE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExp
bmtTdG9yZS5oICovLAogCQkJCTFBODFCMzdFMThCRDY2QUQwMDA3RkRBQyAvKiBfV0tWaXNpdGVk
TGlua1N0b3JlLm1tICovLAogCQkJCTFBODFCMzg0MThCRDY3M0EwMDA3RkRBQyAvKiBfV0tWaXNp
dGVkTGlua1N0b3JlSW50ZXJuYWwuaCAqLywKKwkJCQk1NzlGMUJGNDIzQzgwREI2MDBDN0Q0QjQg
LyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovLAorCQkJCTU3OUYx
QkY1MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLm1tICovLAorCQkJCTU3OUYxQkY4MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCAqLywKIAkJCQk1NzQ3MjhDRjIzNDU2
RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovLAogCQkJCTU3NDcy
OEQwMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tICovLAog
CQkJCTU3NDcyOEQzMjM0NTcwQUUwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
SW50ZXJuYWwuaCAqLywKQEAgLTg1MjAsNiArODUzMSw4IEBACiAJCQkJN0M4OUQyOTIxQTY3MTIy
RjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLywKIAkJCQkyRDg3ODYyMTFCREI1OEZGMDBE
MDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3BwICovLAogCQkJCTJEODc4NjIyMUJEQjU4RkYw
MEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oICovLAorCQkJCTU3OUYxQkZCMjNDODExQ0Yw
MEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCAqLywK
KwkJCQk1NzlGMUJGQTIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oICovLAogCQkJCTU3RUJFMjY5MjM0Njc2QzUwMDhEOEFGOSAvKiBBUElX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcCAqLywKIAkJCQk1N0VCRTI2ODIzNDY3NkM1MDA4RDhB
RjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovLAogCQkJCTU3N0ZGNzgxMjM0NkU4
MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi8sCkBAIC05
ODg2LDYgKzk4OTksOCBAQAogCQkJCTJEODc4NjIwMUJEQjU3RjUwMEQwMkFCQiAvKiBfV0tVc2Vy
U3R5bGVTaGVldEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTgxQjM4MTE4QkQ2NkFE
MDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4
MUIzODUxOEJENjczQTAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTc5RjFCRjYyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3OUYxQkY5
MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NDcyOEQxMjM0NTZFOTgwMDE3MDBBRiAv
KiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzQ3MjhE
NDIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUUyODY3ODFDN0U3NjUxMDA2OUFDNEYgLyogX1dLV2Vic2l0
ZURhdGFTaXplLmggaW4gSGVhZGVycyAqLywKQEAgLTk5NjgsNiArOTk4Myw3IEBACiAJCQkJMkQ4
Nzg2MjQxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDNUUxQUZFRDE2QjIxMDE3MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzVFMUFGRUYxNkIyMTAyOTAwNkNDMUYyIC8qIEFQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc5RjFCRkMyM0M4MTFDRjAwQzdENEI0IC8q
IEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3RUJFMjZBMjM0Njc2QzUwMDhEOEFGOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzdGRjc4MjIzNDZFODFDMDA0RURGQjkgLyogQVBJV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2ODQx
QzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YjQ1
MmUyMDA3OTA2YjA1NjFjNDQwYTRlMGViOWU4MWYyYTM1ZThkLi5hODY5MmVlNmIyYjU0MzBkYmY5
MWMxNmZiYjllYzY5ZDNhMDk3MDFhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDEtMTAgIEppZXdlbiBUYW4g
IDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBT
UEkgdG8gdGVsbCBVSSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMTIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDk1NzMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAoLVtUZXN0V2Vi
QXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNl
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9u
LW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbDoKKwogMjAyMC0wMS0xMCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgYnVp
bGRzIHdpdGhvdXQgbGlid2VicnRjJ3MgQm9yaW5nU1NMLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA0NzA5MWMzZGMwZDI5M2MwMzk2M2I3NzliMWQzZTczMTM5ODkyOWU5Li5lNjU4NDdiMzVj
YzFmYjlmZDAzMTdkM2ViZGNlMjk5YWQ0MmE2ZGJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMzYzLDYgKzM2Myw3IEBACiAJCTU3OTdGRTMzMUVCMTVBQjEwMEIyRjRBMCAvKiBuYXZpZ2F0
aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0by5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OTdGRTMyMUVCMTVBODkwMEIyRjRBMCAvKiBu
YXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0by5odG1sICovOyB9OwogCQk1Nzk4MzM3RTIz
NjAxOUE0MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1oaWQuaHRtbCAqLzsgfTsKIAkJNTc5ODMzOTIyMzY4RkEzNzAwOEU1NTQ3IC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5ODMz
N0IyMzVFQjY1QzAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5m
Yy1tdWx0aXBsZS10YWdzLmh0bWwgKi87IH07CisJCTU3OUYxQzAxMjNDOTNBRjUwMEM3RDRCNCAv
KiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzlGMUJGRjIzQzkyRkQzMDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgKi87IH07CiAJCTU3QTc5ODU3MjI0QUIz
NEUwMEE3RjZGMSAvKiBXZWJDcnlwdG9NYXN0ZXJLZXkubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0E3OTg1NjIyNEFCMzRFMDBBN0Y2RjEgLyogV2Vi
Q3J5cHRvTWFzdGVyS2V5Lm1tICovOyB9OwogCQk1N0MzRkE2NjFGN0MyNDhGMDA5RDRCODAgLyog
V2Vha1B0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0I5QkMzNzFBNjc0ODIzMDBGRTU2NzggLyogV2Vha1B0ci5jcHAgKi87IH07CiAJCTU3QzYy
NDRFMjM0NkJDRkEwMDM4M0ZFNyAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdDNjI0NEQyMzQ2QkNG
QTAwMzgzRkU3IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gKi87IH07CkBAIC0xNDc5
LDYgKzE0ODAsNyBAQAogCQkJCTJFQkQ5RDBBMjEzNDczMEQwMDJEQTc1OCAvKiB2aWRlby5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNENTc3Nzk5MjExQ0UwRTQwMDFCMzcxRSAvKiB3
ZWItYXVkaW8tb25seS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NjYzREYzMjM1
N0U0ODkwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2Fu
Y2VsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTc5RjFDMDEyM0M5M0FGNTAwQzdE
NEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2Nv
dW50cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NzQ1NEQwMjM1OUIzNzgwMDhF
MUVENyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbm8tY3JlZGVudGlh
bHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RFQzIzNEYxRjkzMDBFODVF
MDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJNTc5ODMzOTIyMzY4RkEzNzAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCkBAIC0xOTM0LDYgKzE5MzYsNyBAQAogCQk1Nzk4MzM3QjIzNUVCNjVDMDA4RTU1
NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3Mu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTc5ODMzN0QyMzYwMTk2RDAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVS
TE5vdENoYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBy
b3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzlGMUJGRjIzQzkyRkQzMDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1N0E3OTg1NjIyNEFCMzRFMDBBN0Y2RjEgLyogV2ViQ3J5cHRv
TWFzdGVyS2V5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ3J5cHRvTWFzdGVyS2V5Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0M2MjQ0RDIzNDZCQ0ZBMDAzODNGRTcg
LyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3QzYyNDRGMjM0NkMxRUMwMDM4M0ZFNyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlv
bi1nZXQtYXNzZXJ0aW9uLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ4
NSw2ICszNDg4LDcgQEAKIAkJCQlDRDU3Nzc5QjIxMUNFNkNFMDAxQjM3MUUgLyogdmlkZW8td2l0
aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgKi8sCiAJCQkJQ0Q1Nzc3OTgyMTFDREU4RjAwMUIz
NzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgKi8sCiAJCQkJNTc2NjNERjIyMzU3RTQ1RDAwRTg1
RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbCAq
LywKKwkJCQk1NzlGMUJGRjIzQzkyRkQzMDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgKi8sCiAJCQkJNTc3NDU0Q0Yy
MzU5QjMzODAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1u
by1jcmVkZW50aWFscy5odG1sICovLAogCQkJCTU3NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3
ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCAqLywKIAkJCQk1Nzk4MzM3
QjIzNUVCNjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZj
LW11bHRpcGxlLXRhZ3MuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQppbmRleCA2NmY3NGQzODJkYzRkMGRjYmVjNWE2ZmE0MDZkNGM0NDc5ZWY5YzhjLi4zZWU1ZTQ3
ODAyZGU5YjA3NTljMjU1NjljNjQzOWVmNTRkN2M1ZThkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCkBAIC0zNSw4ICszNSwxMSBAQAogI2ltcG9ydCA8V2ViS2l0L1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZlYXR1cmUuaD4KKyNpbXBvcnQgPFdl
YktpdC9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CisjaW1wb3J0IDx3dGYvUmFuZG9tTnVtYmVyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9CYXNl
NjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBz
dGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuID0gZmFsc2U7CkBAIC00NSw2ICs0
OCw3IEBAIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTdWNjZWRlZCA9IGZhbHNl
Owogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZU11bHRpcGxlTkZDVGFn
c1ByZXNlbnQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGVOb0NyZWRlbnRpYWxzRm91bmQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxDYW5jZWxJbW1lZGlhdGVseSA9IGZhbHNlOworc3RhdGljIEJPT0wgd2ViQXV0aGVu
dGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gTk87CiAKIEBpbnRlcmZhY2UgVGVzdFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsRGVsZWdhdGU+CiBAZW5kCkBAIC04Myw2ICs4NywxOSBAQCAtICh2b2lkKXBhbmVsOihf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxXaQogICAgIH0KIH0KIAorLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlczooTlNBcnJheSA8IF9XS1dlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBFWFBFQ1RfRVEocmVzcG9uc2VzLmNvdW50LCAydWwp
OworICAgIGZvciAoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqcmVzcG9u
c2UgaW4gcmVzcG9uc2VzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXNwb25zZS5uYW1lIGlz
RXF1YWw6QCJqb2hucHNtaXRoQGV4YW1wbGUuY29tIl0gfHwgW3Jlc3BvbnNlLm5hbWUgaXNFcXVh
bDpAIiJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNlLmRpc3BsYXlOYW1lIGlzRXF1
YWw6QCJKb2huIFAuIFNtaXRoIl0gfHwgW3Jlc3BvbnNlLmRpc3BsYXlOYW1lIGlzRXF1YWw6QCIi
XSk7CisgICAgfQorCisgICAgYXV0byBpbmRleCA9IHdlYWtSYW5kb21VaW50MzIoKSAlIDI7Cisg
ICAgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gcmVzcG9uc2VzW2luZGV4
XS51c2VySGFuZGxlID8gTk8gOiBZRVM7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2Vz
W2luZGV4XSk7Cit9CisKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25Q
YW5lbEZha2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVs
ZWdhdGU+CkBAIC03NDAsNiArNzU3LDQwIEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
UGFuZWxIaWRDdGFwTm9DcmVkZW50aWFsc0ZvdW5kQ2FuY2VsTm9DcmFzaCkKICAgICBVdGlsOjpy
dW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQpOwogfQog
CitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE11bHRpcGxlQWNjb3VudHNOdWxsRGVsZWdh
dGUpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNv
bmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9u
V2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIg
Y29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGlj
YXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rl
c3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtk
ZWxlZ2F0ZSBzZXRJc051bGw6dHJ1ZV07CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2Fn
ZTpAIlN1Y2NlZWRlZCEiXTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNdWx0
aXBsZUFjY291bnRzKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cyIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAg
ICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29u
ZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJ
bnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndl
YkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1Jl
Y3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5n
ZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOworICAg
IEVYUEVDVF9FUShbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVzZXJI
YW5kbGUiXSBpc0VxdWFsVG9TdHJpbmc6QCI8bnVsbD4iXSwgd2ViQXV0aGVudGljYXRpb25QYW5l
bE51bGxVc2VySGFuZGxlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlk
LW11bHRpcGxlLWFjY291bnRzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2Nv
dW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MzdlNDIwNzk1ZmQ1Njc3YmQ1MGYxMWRkNTRlYTYwNDI0
OWFlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2Nv
dW50cy5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQi
PgorPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUxvbmdCYXNlNjQgPQor
ICAgICAgICAiQUtVQm9tSnBaRmhBS0FpdHp1aitUc2x6ZWxmMy92WndJR3REUU5nb0tlRmQ1b0Vp
ZVl6aHl6QTY1c2FmMHRLMiIgKworICAgICAgICAidy9tb29hN3RRdEdnRGR3WklqT2hqY3VaMHBR
MWFqb0U0R1IwZVhCbGFuQjFZbXhwWXkxclpYa0NXQ1ZHekgrNSIgKworICAgICAgICAiWjUxVnN0
dVFrdUhJMmVYaDBDdDFnUEMwZ1N4M0NXTGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NGVHV1Qldn
QiIgKworICAgICAgICAiNC9GMFZCN0RsVVZNMDlJSFBteGUxTXpIVXdSb0NSWmJDQUlnR0tvdjZ4
b0F4Mk1FZjYvNnFOczhPdXR6aFAyQyIgKworICAgICAgICAiUW9KMUw3RmU2NEc5dUJjRXBHSnBa
RmdnTUlJQmt6Q0NBVGlnQXdJQkFqQ0NBWk13Z2dFNG9BTUNBUUl3Z2dHVCIgKworICAgICAgICAi
TUlKa2FXTnZibmdvYUhSMGNITTZMeTl3YVdOekxtRmpiV1V1WTI5dEx6QXdMM0F2WVVKcWFtcHdj
VkJpTG5CdSIgKworICAgICAgICAiWjJSdVlXMWxkbXB2YUc1d2MyMXBkR2hBWlhoaGJYQnNaUzVq
YjIxclpHbHpjR3hoZVU1aGJXVnRTbTlvYmlCUSIgKworICAgICAgICAiTGlCVGJXbDBhQVVDIjsK
KyAgICBjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NCA9CisgICAgICAgICJBS01Cb21K
cFpGaEFLQWl0enVqK1RzbHplbGYzL3Zad0lHdERRTmdvS2VGZDVvRWllWXpoeXpBNjVzYWYwdEsy
IiArCisgICAgICAgICJ3L21vb2E3dFF0R2dEZHdaSWpPaGpjdVowcFExYWpvRTRHUjBlWEJsYW5C
MVlteHBZeTFyWlhrQ1dDVkd6SCs1IiArCisgICAgICAgICJaNTFWc3R1UWt1SEkyZVhoMEN0MWdQ
QzBnU3gzQ1dMaDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiArCisgICAgICAgICI0
L0YwVkI3RGxVVk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82cU5zOE91
dHpoUDJDIiArCisgICAgICAgICJRb0oxTDdGZTY0Rzl1QmM9IjsKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBwYXlsb2FkQmFzZTY0OiBb
dGVzdEFzc2VydGlvbk1lc3NhZ2VMb25nQmFzZTY0LCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2
NF0gfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0
LmZvY3VzKCk7IH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGJ5dGVzVG9IZXhTdHJpbmcoYnl0
ZXMpCisgICAgeworICAgICAgICBpZiAoIWJ5dGVzKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShieXRlcyk7CisgICAgICAgIHZhciBo
ZXhCeXRlcyA9IFtdOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIHZhciBieXRlU3RyaW5nID0gYnl0ZXNbaV0udG9TdHJpbmco
MTYpOworICAgICAgICAgICAgaWYgKGJ5dGVTdHJpbmcubGVuZ3RoIDwgMikKKyAgICAgICAgICAg
ICAgICBieXRlU3RyaW5nID0gIjAiICsgYnl0ZVN0cmluZzsKKyAgICAgICAgICAgIGhleEJ5dGVz
LnB1c2goYnl0ZVN0cmluZyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaGV4Qnl0ZXMu
am9pbigiIik7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGlj
S2V5OiB7CisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAg
ICAgICAgIHRpbWVvdXQ6IDEwMDAKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgIHVz
ZXJIYW5kbGUgPSBieXRlc1RvSGV4U3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRs
ZSk7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAgIHdpbmRv
dy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVk
ZWQhIik7CisgICAgfSwgZXJyb3IgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnJvci5t
ZXNzYWdlKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRs
ZXIucG9zdE1lc3NhZ2UoZXJyb3IubWVzc2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRt
bAppbmRleCA1YjZhZWJlYmYxMjRiMTAzOWVkMDc5NGVkMjJkM2RiNjhlYTM0YWZjLi5lOTgxYTcw
Zjk5NzE5MTU1ZDBmYjNlNzk4ZTU2MTUyYWYzYjg2ODc4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtaGlkLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sCkBAIC0zOSw3ICsz
OSw3IEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhB
cnJheSgxNiksCiAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgICAg
IHRpbWVvdXQ6IDEwMCwKICAgICAgICAgfQogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387552</attachid>
            <date>2020-01-13 11:59:51 -0800</date>
            <delta_ts>2020-01-13 12:23:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206112-20200113115950.patch</filename>
            <type>text/plain</type>
            <size>48762</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ0MzEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTAxLTEzICBKaWV3ZW4gVGFu
ICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQg
U1BJIHRvIHRlbGwgVUkgY2xpZW50cyB0byBzZWxlY3QgYXNzZXJ0aW9uIHJlc3BvbnNlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTEyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5NTczMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYSBuZXcgZGVsZWdhdGUgbWV0aG9kIGluIF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxEZWxlZ2F0ZSB0byB0ZWxsIFVJIGNsaWVudHMgdG8KKyAgICAgICAgc2VsZWN0IGFu
IGFzc2VydGlvbiByZXNwb25zZSB3aGVuIG11bHRpcGxlIGFyZSByZXR1cm5lZCBmcm9tIGFuIGF1
dGhlbnRpY2F0b3IuIEhlcmUgaXMgdGhlIFNQSToKKyAgICAgICAgQHByb3RvY29sIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA8TlNPYmplY3Q+CisgICAgICAgIEBvcHRpb25hbAor
ICAgICAgICAuLi4KKyAgICAgICAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlczooTlNBcnJheSA8IF9XS1dlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikp
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIC4uLgorICAgICAgICBAZW5kCisKKyAgICAgICAg
QSBuZXcgaW50ZXJmYWNlIGlzIGludHJvZHVjZWQgdG8gcmVwcmVzZW50IGFuIGF1dGhlbnRpY2F0
b3IgYXNzZXJ0aW9uIHJlc3BvbnNlOgorICAgICAgICBAaW50ZXJmYWNlIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgOiBOU09iamVjdAorICAgICAgICBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOworICAgICAgICBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsKKyAg
ICAgICAgQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVzZXJI
YW5kbGU7CisgICAgICAgIEBlbmQKKyAgICAgICAgT25seSBtZW1iZXJzIHRoYXQgY2FuIGFzc2lz
dCB1c2VycyB0byBtYWtlIGEgZGVjaXNpb24gYXJlIGV4cG9zZWQgdG8gVUkgY2xpZW50cy4KKwor
ICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29h
L0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oLgorICAgICAgICAoQVBJOjpXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAgICAgICgtW19X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgZGVhbGxvY10pOgorICAgICAgICAo
LVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIG5hbWVdKToKKyAgICAgICAg
KC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBkaXNwbGF5TmFtZV0pOgor
ICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIHVzZXJIYW5k
bGVdKToKKyAgICAgICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBf
YXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMS0xMyAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIEVuYWJsZSBMRkMgaW50ZWdyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjU0
NDMxKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzM4
LDYgKzMzOCw3IEBAIFVJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lVGFzay5jcHAKIFVJUHJvY2Vz
cy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCitVSVByb2Nlc3MvQVBJ
L0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCiBVSVByb2Nlc3MvQVBJ
L0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQ
b2xpY2llcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2luZG93RmVhdHVyZXMuY3BwCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTQ0MzEpCisrKyBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI3OCw2ICsyNzgsNyBAQCBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQuCiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJJbml0aWF0ZWRBY3Rpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxl
U2hlZXQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVmlzaXRlZExpbmtTdG9yZS5tbQorVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1t
CiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTaXplLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYnNpdGVEYXRhU3RvcmUubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgJKHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDYgKzE4Myw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICAgICAgV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZSwKICAgICAgICAgV2ViQXV0aGVudGljYXRpb25QYW5lbCwKICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCShyZXZpc2lvbiAy
NTQ0MzEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHdvcmtp
bmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAKICNpbXBvcnQgIl9XS1VzZXJJbml0aWF0ZWRBY3Rp
b25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogCkBAIC0zODksNiArMzkwLDkgQEAgdm9pZCogT2Jq
ZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogICAgIGNhc2UgVHlwZTo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbDoKICAgICAgICAgd3JhcHBlciA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlOgorICAgICAgICB3cmFwcGVyID0gW19XS1dlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgYWxsb2NdOworICAgICAgICBicmVhazsKICNlbmRpZgog
CiAgICAgY2FzZSBUeXBlOjpCdW5kbGVGcmFtZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50LmgJKHJldmlzaW9uIDI1NDQz
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBzdHJ1Y3QgUmVzb3VyY2VMb2Fk
SW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikK
KworbmFtZXNwYWNlIEFQSSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFdlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2U6OmNyZWF0ZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiYmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpKTsKK30KKworV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmIHJl
c3BvbnNlKQorICAgIDogbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKK3sKK30KKworV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6fldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVVRITikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJf
QVVUSE4pCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oPgorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3Mg
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBmaW5hbCA6IHB1YmxpYyBPYmplY3RJ
bXBsPE9iamVjdDo6VHlwZTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYp
OworICAgIH5XZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlKCk7CisKKyAgICBXVEY6
OlN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS0+bmFtZSgpOyB9CisgICAg
V1RGOjpTdHJpbmcgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLT5kaXNw
bGF5TmFtZSgpOyB9CisgICAgQXJyYXlCdWZmZXIqIHVzZXJIYW5kbGUoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlLT51c2VySGFuZGxlKCk7IH0KKworICAgIGNvbnN0IFJlZjxXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiByZXNwb25zZSgpIHsgcmV0dXJuIG1fcmVz
cG9uc2U7IH0KKworcHJpdmF0ZToKKyAgICBXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlKFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworCisg
ICAgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gbV9yZXNwb25z
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Uu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8V2ViS2l0
L1dLRm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKwor
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UgOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU1N0cmluZyAqZGlzcGxheU5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqdXNlckhhbmRsZTsKKworQGVuZAorCitOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5o
IgorCitAaW1wbGVtZW50YXRpb24gX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZSB7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gX3VzZXJIYW5kbGU7Cit9CisKKyNpZiBFTkFCTEUo
V0VCX0FVVEhOKQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfcmVzcG9uc2UtPn5XZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKy0gKE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBfcmVzcG9uc2UtPm5hbWUoKTsK
K30KKworLSAoTlNTdHJpbmcgKilkaXNwbGF5TmFtZQoreworICAgIHJldHVybiBfcmVzcG9uc2Ut
PmRpc3BsYXlOYW1lKCk7Cit9CisKKy0gKE5TRGF0YSAqKXVzZXJIYW5kbGUKK3sKKyAgICBpZiAo
X3VzZXJIYW5kbGUpCisgICAgICAgIHJldHVybiBfdXNlckhhbmRsZS5nZXQoKTsKKworICAgIGlm
IChhdXRvKiB1c2VySGFuZGxlID0gX3Jlc3BvbnNlLT51c2VySGFuZGxlKCkpCisgICAgICAgIF91
c2VySGFuZGxlID0gW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6dXNlckhhbmRsZS0+ZGF0
YSgpIGxlbmd0aDp1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCldOworICAgIHJldHVybiBfdXNlckhh
bmRsZS5nZXQoKTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVu
dGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfcmVz
cG9uc2U7Cit9CisjZW5kaWYKKworQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1w
b3J0ICJBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCisjaW1wb3J0ICJX
S09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3Jh
cHBlclRyYWl0czxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IHsKKyAg
ICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlOworfTsKKworfQorCitAaW50ZXJmYWNlIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFn
ZTxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IF9yZXNwb25zZTsKK30K
K0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLmgJKHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIF9XS1dl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xhc3MgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbDsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbFJlc3VsdCkgewpAQCAtNjksNiArNzAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tXZWJBdXRoZW50CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsICopcGFuZWwgdXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbFVwZGF0ZSl1cGRhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKilwYW5lbCBkaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6
KF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KXJlc3VsdCBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczoo
TlNVSW50ZWdlcilyZXRyaWVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAq
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlczooTlNBcnJheSA8IF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIAogQGVuZAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQko
cmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsyNCwx
MSBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5oIgorCiAjaW1wb3J0ICJXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmgi
CiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCIKICNpbXBvcnQg
PFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KLQogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiBAaW1wbGVtZW50YXRpb24gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNl
TG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8d3RmL1dlYWtPYmpD
UHRyLmg+CiAKK0BjbGFzcyBXS1dlYlZpZXc7CiBAcHJvdG9jb2wgX1dLUmVzb3VyY2VMb2FkRGVs
ZWdhdGU7CiAKIG5hbWVzcGFjZSBBUEkgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDI1NDQz
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMyBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgogCisjaW1wb3J0ICJBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCIKICNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJf
V0tSZXNvdXJjZUxvYWRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VF
cnJvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtODAs
NyArODUsNyBAQCB2b2lkIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDCiAgICAg
aWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2RlbGVnYXRlIHdlYlZpZXc6
bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2Fk
OndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2FkSW5mbykp
LmdldCgpKSBkaWRTZW5kUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0
ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1f
cmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgpIHJlc291cmNlTG9hZDp3
cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRlKFdURk1vdmUobG9hZEluZm8pKS5n
ZXQoKSkgZGlkU2VuZFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJv
ZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
IGNvbnN0CkBAIC05Miw3ICs5Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291
cmNlTG9hZEMKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbZGVs
ZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQo
KSByZXNvdXJjZUxvYWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShXVEZN
b3ZlKGxvYWRJbmZvKSkuZ2V0KCkpIGRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246cmVzcG9uc2Uu
bnNVUkxSZXNwb25zZSgpIG5ld1JlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlV
cGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKKyAgICBbZGVsZWdhdGUgd2ViVmll
dzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXNvdXJjZUxv
YWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShXVEZNb3ZlKGxvYWRJbmZv
KSkuZ2V0KCkpIGRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246cmVzcG9uc2UubnNVUkxSZXNwb25z
ZSgpIG5ld1JlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRh
dGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYktpdDo6
UmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkmIGNoYWxsZW5nZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgJKHJldmlzaW9uIDI1NDQzMSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBw
cml2YXRlOgogICAgIC8vIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudAogICAgIHZv
aWQgdXBkYXRlUGFuZWwoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGNvbnN0IGZpbmFsOwogICAg
IHZvaWQgZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlcyhjb25zdCBIYXNoU2V0PFJlZjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4m
KT4mJikgY29uc3QgZmluYWw7CiAKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICptX3Bh
bmVsOwogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdh
dGU+ID4gbV9kZWxlZ2F0ZTsKQEAgLTU2LDYgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
ewogICAgICAgICBib29sIHBhbmVsVXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbCA6IDE7CiAg
ICAgICAgIGJvb2wgcGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQg
OiAxOworICAgICAgICBib29sIHBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzQ29tcGxldGlv
bkhhbmRsZXIgOiAxOwogICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0J
KHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDExIEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW1wb3J0
ICJBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCisjaW1wb3J0ICJDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJXS1NoYXJlZEFQSUNhc3QuaCIK
ICNpbXBvcnQgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCIKKyNpbXBvcnQgIl9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oIgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIApAQCAtNDAsNiAr
NDQsNyBAQCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50CiB7CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6dXBkYXRlV2ViQXV0aGVu
dGljYXRpb25QYW5lbDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbERpc21pc3NXZWJB
dXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHBhbmVsOmRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3Vs
dDopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFNlbGVjdEFzc2VydGlvblJlc3BvbnNl
c0NvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzOmNvbXBsZXRpb25IYW5kbGVyOildOwog
fQogCiBSZXRhaW5QdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4gPiBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkZWxlZ2F0ZSgpCkBAIC0xMDcsNiArMTEyLDQx
IEBAIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGlzbWkKICAgICB9KTsKIH0K
IAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNw
b25zZXMoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPj4mIHJlc3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZWY8V2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdAoreworICAgIGF1dG8gbnNSZXNwb25zZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6cmVzcG9uc2VzLnNpemUoKV0pOworICAgIGZv
ciAoYXV0byYgcmVzcG9uc2UgOiByZXNwb25zZXMpCisgICAgICAgIFtuc1Jlc3BvbnNlcyBhZGRP
YmplY3Q6d3JhcHBlcihBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OmNy
ZWF0ZShyZXNwb25zZS5jb3B5UmVmKCkpKV07CisKKyAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0
aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3Vs
ZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCisgICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVu
IGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgorICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIG5zUmVzcG9uc2VzID0gV1RGTW92
ZShuc1Jlc3BvbnNlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSku
cmVzcG9uc2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzQ29tcGxl
dGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSY+KFtbbnNSZXNwb25zZXMg
Zmlyc3RPYmplY3RdIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgp
OworICAgICAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UmPihb
W25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSkucmVzcG9uc2UoKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNoZWNrZXIgPSBDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rv
cihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXM6Y29tcGxldGlvbkhhbmRsZXI6KSk7Cisg
ICAgICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlczpu
c1Jlc3BvbnNlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3Zl
KGNoZWNrZXIpXShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25z
ZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UmPihbcmVzcG9uc2UgX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAgICAgICB9KS5nZXQo
KV07CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA5NSw2ICsx
MDk1LDkgQEAKIAkJNTc3RkY3ODIyMzQ2RTgxQzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3N0ZGNzgxMjM0NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50LmggKi87IH07CiAJCTU3N0ZGNzg1MjM0NkVDQUEwMDRFREZCOSAvKiBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzdGRjc4MzIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5oICovOyB9OwogCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9j
YWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzhEQzI5NzIxNTVBMDAxMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50
aWNhdGlvblNvZnRMaW5rLmggKi87IH07CisJCTU3OUYxQkY2MjNDODBEQjYwMEM3RDRCNCAvKiBf
V0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzlGMUJGNDIzQzgwREI2MDBDN0Q0QjQgLyog
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3OUYxQkY5MjNDODBFQzYwMEM3RDRC
NCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OUYxQkY4MjNDODBF
QzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJu
YWwuaCAqLzsgfTsKKwkJNTc5RjFCRkMyM0M4MTFDRjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3OUYxQkZBMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi87IH07CiAJCTU3QUM4RjUwMjE3RkVFRDkwMDU1
NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0FDOEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5o
ICovOyB9OwogCQk1N0I0QjQ2MDIwQjUwNEFDMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVB
dXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTdCNEI0NUUyMEI1MDRBQjAwRDRBRDc5IC8qIENsaWVudENlcnRp
ZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaCAqLzsgfTsKIAkJNTdCODI2NDEyMzA0
RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVs
ZFNQSS5oICovOyB9OwpAQCAtMzc1NSw2ICszNzU4LDExIEBACiAJCTU3N0ZGNzgzMjM0NkVDQUEw
MDRFREZCOSAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTc3RkY3ODQyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzhEQzI5NzIxNTVBMDAxMDA3
NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
Y2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1NzlGMUJGNDIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3OUYxQkY1MjNDODBE
QjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRjgyM0M4MEVDNjAwQzdE
NEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRkEyM0M4MTFDRjAwQzdE
NEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJGQjIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTdBQzhGNEUyMTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGlkQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1N0FDOEY0RjIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEhpZENvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3QjRCNDVEMjBCNTA0QUIwMEQ0QUQ3OSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRp
Y2F0aW9uTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg0
NSw2ICs2ODUzLDkgQEAKIAkJCQkxQTgxQjM3RjE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRl
ZExpbmtTdG9yZS5oICovLAogCQkJCTFBODFCMzdFMThCRDY2QUQwMDA3RkRBQyAvKiBfV0tWaXNp
dGVkTGlua1N0b3JlLm1tICovLAogCQkJCTFBODFCMzg0MThCRDY3M0EwMDA3RkRBQyAvKiBfV0tW
aXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCAqLywKKwkJCQk1NzlGMUJGNDIzQzgwREI2MDBDN0Q0
QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovLAorCQkJCTU3
OUYxQkY1MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tICovLAorCQkJCTU3OUYxQkY4MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCAqLywKIAkJCQk1NzQ3MjhDRjIz
NDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovLAogCQkJCTU3
NDcyOEQwMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tICov
LAogCQkJCTU3NDcyOEQzMjM0NTcwQUUwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsSW50ZXJuYWwuaCAqLywKQEAgLTg1MjYsNiArODUzNyw4IEBACiAJCQkJN0M4OUQyOTIxQTY3
MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLywKIAkJCQkyRDg3ODYyMTFCREI1OEZG
MDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3BwICovLAogCQkJCTJEODc4NjIyMUJEQjU4
RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oICovLAorCQkJCTU3OUYxQkZCMjNDODEx
Q0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCAq
LywKKwkJCQk1NzlGMUJGQTIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZS5oICovLAogCQkJCTU3RUJFMjY5MjM0Njc2QzUwMDhEOEFGOSAvKiBB
UElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcCAqLywKIAkJCQk1N0VCRTI2ODIzNDY3NkM1MDA4
RDhBRjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovLAogCQkJCTU3N0ZGNzgxMjM0
NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi8sCkBA
IC05ODk2LDYgKzk5MDksOCBAQAogCQkJCTJEODc4NjIwMUJEQjU3RjUwMEQwMkFCQiAvKiBfV0tV
c2VyU3R5bGVTaGVldEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTgxQjM4MTE4QkQ2
NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE4MUIzODUxOEJENjczQTAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTc5RjFCRjYyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3OUYx
QkY5MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NDcyOEQxMjM0NTZFOTgwMDE3MDBB
RiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzQ3
MjhENDIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyODY3ODFDN0U3NjUxMDA2OUFDNEYgLyogX1dLV2Vi
c2l0ZURhdGFTaXplLmggaW4gSGVhZGVycyAqLywKQEAgLTk5NzgsNiArOTk5Myw3IEBACiAJCQkJ
MkQ4Nzg2MjQxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNUUxQUZFRDE2QjIxMDE3MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzVFMUFGRUYxNkIyMTAyOTAwNkNDMUYyIC8qIEFQSVdlYkFyY2hp
dmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc5RjFCRkMyM0M4MTFDRjAwQzdENEI0
IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RUJFMjZBMjM0Njc2QzUwMDhEOEFGOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBh
bmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzdGRjc4MjIzNDZFODFDMDA0RURGQjkgLyogQVBJ
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2
ODQxQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI1NDQzMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE4IEBACisyMDIwLTAxLTEzICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgU1BJIHRvIHRlbGwgVUkgY2xpZW50
cyB0byBzZWxlY3QgYXNzZXJ0aW9uIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
ODQ5NTczMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxE
ZWxlZ2F0ZSBwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXM6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhp
ZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlk
Lmh0bWw6CisKIDIwMjAtMDEtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBFeHBvc2UgZnJhbWUgaW5mb3JtYXRpb24gb24gX1dLUmVzb3Vy
Y2VMb2FkSW5mbwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1NDQzMSkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMsNiArMzYzLDcgQEAKIAkJNTc5N0ZFMzMxRUIx
NUFCMTAwQjJGNEEwIC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5N0ZF
MzIxRUIxNUE4OTAwQjJGNEEwIC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0
bWwgKi87IH07CiAJCTU3OTgzMzdFMjM2MDE5QTQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRp
b24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWIt
YXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sICovOyB9OwogCQk1Nzk4MzM5
MjIzNjhGQTM3MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZj
LW11bHRpcGxlLXRhZ3MuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Nzk4MzM3QjIzNUVCNjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCAqLzsgfTsKKwkJNTc5
RjFDMDEyM0M5M0FGNTAwQzdENEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9u
LWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OUYxQkZGMjNDOTJGRDMwMEM3RDRCNCAvKiB3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCAq
LzsgfTsKIAkJNTdBNzk4NTcyMjRBQjM0RTAwQTdGNkYxIC8qIFdlYkNyeXB0b01hc3RlcktleS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QTc5ODU2
MjI0QUIzNEUwMEE3RjZGMSAvKiBXZWJDcnlwdG9NYXN0ZXJLZXkubW0gKi87IH07CiAJCTU3QzNG
QTY2MUY3QzI0OEYwMDlENEI4MCAvKiBXZWFrUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQjlCQzM3MUE2NzQ4MjMwMEZFNTY3OCAvKiBXZWFr
UHRyLmNwcCAqLzsgfTsKIAkJNTdDNjI0NEUyMzQ2QkNGQTAwMzgzRkU3IC8qIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0M2MjQ0RDIzNDZCQ0ZBMDAzODNGRTcgLyogX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbSAqLzsgfTsKQEAgLTE0NzksNiArMTQ4MCw3IEBACiAJCQkJMkVCRDlEMEEyMTM0NzMw
RDAwMkRBNzU4IC8qIHZpZGVvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0Q1Nzc3
OTkyMTFDRTBFNDAwMUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJNTc2NjNERjMyMzU3RTQ4OTAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJ
CQk1NzlGMUMwMTIzQzkzQUY1MDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJNTc3NDU0RDAyMzU5QjM3ODAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWhpZC1uby1jcmVkZW50aWFscy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTU3NjYzREVDMjM0RjFGOTMwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1Nzk4MzM5MjIzNjhGQTM3
MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxl
LXRhZ3MuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE5MzQsNiArMTkzNiw3IEBACiAJ
CTU3OTgzMzdCMjM1RUI2NUMwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
IndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhp
ZC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc5OEUyQUYxQ0FGNUMyODAw
QzVDQkEwIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3OUYxQkZGMjNDOTJGRDMwMEM3RDRCNCAvKiB3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNj
b3VudHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QTc5ODU2MjI0QUIz
NEUwMEE3RjZGMSAvKiBXZWJDcnlwdG9NYXN0ZXJLZXkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJDcnlwdG9NYXN0ZXJLZXkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3
QzYyNDREMjM0NkJDRkEwMDM4M0ZFNyAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDNjI0NEYyMzQ2QzFFQzAwMzgzRkU3IC8qIHdlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24uaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zNDg2LDYgKzM0ODksNyBAQAogCQkJCUNENTc3NzlCMjExQ0U2
Q0UwMDFCMzcxRSAvKiB2aWRlby13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbCAqLywKIAkJ
CQlDRDU3Nzc5ODIxMUNERThGMDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCAqLywKIAkJ
CQk1NzY2M0RGMjIzNTdFNDVEMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24taGlkLWNhbmNlbC5odG1sICovLAorCQkJCTU3OUYxQkZGMjNDOTJGRDMwMEM3RDRCNCAv
KiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMu
aHRtbCAqLywKIAkJCQk1Nzc0NTRDRjIzNTlCMzM4MDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24taGlkLW5vLWNyZWRlbnRpYWxzLmh0bWwgKi8sCiAJCQkJNTc2NjNE
RUIyMzRGMUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhp
ZC5odG1sICovLAogCQkJCTU3OTgzMzdCMjM1RUI2NUMwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sICovLApAQCAtNDg1MCw3
ICs0ODU0LDYgQEAKIAkJCQkyRDJCRUIyRDIyMzI0RTVGMDA1NTQ0Q0EgLyogUmVxdWVzdFRleHRJ
bnB1dENvbnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBDNDFEMEE2NTQyMDBGRUJD
RjMgLyogUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0YwRTFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZp
ZXcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0QyN0ExQzEyM0M2NjFFRDAwNkUxMUREIC8qIFdL
V2ViVmlld1BhdXNlUGxheWluZ0F1ZGlvVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0YwRjFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0I3QUZEQzIzQzQ1Mjk3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUM4RTFBNTFGMjZBRjRDMDBCRjczMUIgLyog
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBpbiBTb3VyY2VzICovLApAQCAtNTAzMiw2ICs1MDM1
LDcgQEAKIAkJCQlEMzRFMDg3NjFFNEU0MkUxMDA1RkYxNEEgLyogV0tXZWJWaWV3R2V0Q29udGVu
dHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEZBOTE4MTFFNjE4NDlCMDA3QjhDMUQgLyogV0tX
ZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBQ0FEQTEyMzA2
MjBBRTAwMDdENTRDIC8qIFdLV2ViVmlld09wYXF1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNE
MjdBMUMxMjNDNjYxRUQwMDZFMTFERCAvKiBXS1dlYlZpZXdQYXVzZVBsYXlpbmdBdWRpb1Rlc3Rz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQwMUQwNkUyMzIxOEZFRTAwMzlBQTNBIC8qIFdLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdBOURCRTkyMTNCNEM5
MzAwRDI2MUEyIC8qIFdLV2ViVmlld1NlcnZlclRydXN0S1ZDLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCShyZXZp
c2lvbiAyNTQ0MzEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDEx
IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVu
dGFsRmVhdHVyZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSYW4gPSBmYWxzZTsKQEAgLTQ1LDYgKzQ4LDcgQEAgc3RhdGljIGJvb2wgd2ViQXV0aGVudGlj
YXRpb25QYW5lbFN1Y2NlZAogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZU11bHRpcGxlTkZDVGFnc1ByZXNlbnQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQgPSBmYWxzZTsKIHN0YXRpYyBib29s
IHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYW5jZWxJbW1lZGlhdGVseSA9IGZhbHNlOworc3RhdGlj
IEJPT0wgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gTk87CiAKIEBpbnRl
cmZhY2UgVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CiBAZW5kCkBAIC04Myw2ICs4NywxOSBAQCAt
ICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsCiAgICAgfQogfQogCistICh2
b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2VzOihOU0FycmF5IDwgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZSAqPiAqKXJlc3BvbnNlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IEVYUEVDVF9FUShyZXNwb25zZXMuY291bnQsIDJ1bCk7CisgICAgZm9yIChfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25zZSBpbiByZXNwb25zZXMpIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNlLm5hbWUgaXNFcXVhbDpAImpvaG5wc21pdGhAZXhhbXBs
ZS5jb20iXSB8fCBbcmVzcG9uc2UubmFtZSBpc0VxdWFsOkAiIl0pOworICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzcG9uc2UuZGlzcGxheU5hbWUgaXNFcXVhbDpAIkpvaG4gUC4gU21pdGgiXSB8fCBb
cmVzcG9uc2UuZGlzcGxheU5hbWUgaXNFcXVhbDpAIiJdKTsKKyAgICB9CisKKyAgICBhdXRvIGlu
ZGV4ID0gd2Vha1JhbmRvbVVpbnQzMigpICUgMjsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
TnVsbFVzZXJIYW5kbGUgPSByZXNwb25zZXNbaW5kZXhdLnVzZXJIYW5kbGUgPyBOTyA6IFlFUzsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbaW5kZXhdKTsKK30KKwogQGVuZAogCiBA
aW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRmFrZURlbGVnYXRlIDogTlNPYmpl
Y3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4KQEAgLTc0MCw2ICs3NTcsNDAg
QEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbEhpZEN0YQogICAgIFV0aWw6OnJ1
bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZU5vQ3JlZGVudGlhbHNGb3VuZCk7CiB9CiAK
K1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTXVsdGlwbGVBY2NvdW50c051bGxEZWxlZ2F0
ZSkKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29u
ZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25X
aXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBj
b25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVu
Y2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNh
dGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVz
dFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2Rl
bGVnYXRlIHNldElzTnVsbDp0cnVlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdl
OkAiU3VjY2VlZGVkISJdOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE11bHRp
cGxlQWNjb3VudHMpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAg
IGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25m
aWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aElu
dGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlv
biBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2Vi
QXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVj
dCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpXV07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CisgICAg
RVhQRUNUX0VRKFtbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlckhh
bmRsZSJdIGlzRXF1YWxUb1N0cmluZzpAIjxudWxsPiJdLCB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
TnVsbFVzZXJIYW5kbGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlw
bGUtYWNjb3VudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBs
ZS1hY2NvdW50cy5odG1sCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRp
cGxlLWFjY291bnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorPGlucHV0
IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+Cis8c2NyaXB0PgorICAgIGNvbnN0IHRlc3RBc3NlcnRp
b25NZXNzYWdlTG9uZ0Jhc2U2NCA9CisgICAgICAgICJBS1VCb21KcFpGaEFLQWl0enVqK1RzbHpl
bGYzL3Zad0lHdERRTmdvS2VGZDVvRWllWXpoeXpBNjVzYWYwdEsyIiArCisgICAgICAgICJ3L21v
b2E3dFF0R2dEZHdaSWpPaGpjdVowcFExYWpvRTRHUjBlWEJsYW5CMVlteHBZeTFyWlhrQ1dDVkd6
SCs1IiArCisgICAgICAgICJaNTFWc3R1UWt1SEkyZVhoMEN0MWdQQzBnU3gzQ1dMaDVJOWEyQUVB
QUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiArCisgICAgICAgICI0L0YwVkI3RGxVVk0wOUlIUG14
ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82cU5zOE91dHpoUDJDIiArCisgICAgICAg
ICJRb0oxTDdGZTY0Rzl1QmNFcEdKcFpGZ2dNSUlCa3pDQ0FUaWdBd0lCQWpDQ0FaTXdnZ0U0b0FN
Q0FRSXdnZ0dUIiArCisgICAgICAgICJNSUprYVdOdmJuZ29hSFIwY0hNNkx5OXdhV056TG1GamJX
VXVZMjl0THpBd0wzQXZZVUpxYW1wd2NWQmlMbkJ1IiArCisgICAgICAgICJaMlJ1WVcxbGRtcHZh
RzV3YzIxcGRHaEFaWGhoYlhCc1pTNWpiMjFyWkdsemNHeGhlVTVoYldWdFNtOW9iaUJRIiArCisg
ICAgICAgICJMaUJUYldsMGFBVUMiOworICAgIGNvbnN0IHRlc3RBc3NlcnRpb25NZXNzYWdlQmFz
ZTY0ID0KKyAgICAgICAgIkFLTUJvbUpwWkZoQUtBaXR6dWorVHNsemVsZjMvdlp3SUd0RFFOZ29L
ZUZkNW9FaWVZemh5ekE2NXNhZjB0SzIiICsKKyAgICAgICAgIncvbW9vYTd0UXRHZ0Rkd1pJak9o
amN1WjBwUTFham9FNEdSMGVYQmxhbkIxWW14cFl5MXJaWGtDV0NWR3pIKzUiICsKKyAgICAgICAg
Ilo1MVZzdHVRa3VISTJlWGgwQ3QxZ1BDMGdTeDNDV0xoNUk5YTJBRUFBQUJRQTFoSE1FVUNJUUNT
RlR1dUJXZ0IiICsKKyAgICAgICAgIjQvRjBWQjdEbFVWTTA5SUhQbXhlMU16SFV3Um9DUlpiQ0FJ
Z0dLb3Y2eG9BeDJNRWY2LzZxTnM4T3V0emhQMkMiICsKKyAgICAgICAgIlFvSjFMN0ZlNjRHOXVC
Yz0iOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
aGlkOiB7IHBheWxvYWRCYXNlNjQ6IFt0ZXN0QXNzZXJ0aW9uTWVzc2FnZUxvbmdCYXNlNjQsIHRl
c3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVz
ZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gYnl0ZXNUb0hleFN0cmluZyhieXRlcykKKyAgICB7CisgICAgICAgIGlmICghYnl0ZXMpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5
KGJ5dGVzKTsKKyAgICAgICAgdmFyIGhleEJ5dGVzID0gW107CisKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGJ5dGVTdHJp
bmcgPSBieXRlc1tpXS50b1N0cmluZygxNik7CisgICAgICAgICAgICBpZiAoYnl0ZVN0cmluZy5s
ZW5ndGggPCAyKQorICAgICAgICAgICAgICAgIGJ5dGVTdHJpbmcgPSAiMCIgKyBieXRlU3RyaW5n
OworICAgICAgICAgICAgaGV4Qnl0ZXMucHVzaChieXRlU3RyaW5nKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBoZXhCeXRlcy5qb2luKCIiKTsKKyAgICB9CisKKyAgICBjb25zdCBvcHRp
b25zID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3
IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgdGltZW91dDogMTAwMAorICAgICAgICB9Cisg
ICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKKyAgICAgICAgdXNlckhhbmRsZSA9IGJ5dGVzVG9IZXhTdHJpbmcoY3JlZGVu
dGlhbC5yZXNwb25zZS51c2VySGFuZGxlKTsKKyAgICAgICAgLy8gY29uc29sZS5sb2coIlN1Y2Nl
ZWRlZCEiKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRs
ZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKKyAgICB9LCBlcnJvciA9PiB7CisgICAgICAg
IC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOworICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShlcnJvci5tZXNzYWdlKTsKKyAg
ICB9KTsKKzwvc2NyaXB0PgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbAkocmV2aXNpb24gMjU0NDMxKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWhpZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiks
CiAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFs
ZzogLTcgfV0sCi0gICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgICAgIHRpbWVvdXQ6
IDEwMCwKICAgICAgICAgfQogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387555</attachid>
            <date>2020-01-13 12:23:47 -0800</date>
            <delta_ts>2020-01-13 14:57:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206112-20200113122346.patch</filename>
            <type>text/plain</type>
            <size>51425</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwZDVmOTAwODJkZjZhNjUx
YjY4N2I0ODJlODc0NDFiZTZhYzkyNTIuLjY3NGE5MGJmY2IxZTBlNTVjZGM0OTFlZDYyYzIwODY1
NmFjNDMxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDEtMTAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBTUEkgdG8gdGVsbCBVSSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDk1NzMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBkZWxlZ2F0ZSBtZXRob2QgaW4gX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbERlbGVnYXRlIHRvIHRlbGwgVUkgY2xpZW50cyB0bworICAgICAgICBzZWxlY3Qg
YW4gYXNzZXJ0aW9uIHJlc3BvbnNlIHdoZW4gbXVsdGlwbGUgYXJlIHJldHVybmVkIGZyb20gYW4g
YXV0aGVudGljYXRvci4gSGVyZSBpcyB0aGUgU1BJOgorICAgICAgICBAcHJvdG9jb2wgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDxOU09iamVjdD4KKyAgICAgICAgQG9wdGlvbmFs
CisgICAgICAgIC4uLgorICAgICAgICAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzOihOU0FycmF5IDwgX1dLV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3BvbnNlcyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAq
KSljb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgLi4uCisgICAgICAgIEBlbmQKKworICAgICAg
ICBBIG5ldyBpbnRlcmZhY2UgaXMgaW50cm9kdWNlZCB0byByZXByZXNlbnQgYW4gYXV0aGVudGlj
YXRvciBhc3NlcnRpb24gcmVzcG9uc2U6CisgICAgICAgIEBpbnRlcmZhY2UgX1dLV2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSA6IE5TT2JqZWN0CisgICAgICAgIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7CisgICAgICAgIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOwor
ICAgICAgICBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqdXNl
ckhhbmRsZTsKKyAgICAgICAgQGVuZAorICAgICAgICBPbmx5IG1lbWJlcnMgdGhhdCBjYW4gYXNz
aXN0IHVzZXJzIHRvIG1ha2UgYSBkZWNpc2lvbiBhcmUgZXhwb3NlZCB0byBVSSBjbGllbnRzLgor
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAgICAgIChBUEk6OldlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmgu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaC4KKyAgICAgICAgKC1b
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBkZWFsbG9jXSk6CisgICAgICAg
ICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgbmFtZV0pOgorICAgICAg
ICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIGRpc3BsYXlOYW1lXSk6
CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgdXNlckhh
bmRsZV0pOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
IF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXMgY29uc3QpOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTAxLTA2ICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBT
dXBwb3J0IENUQVAgQ2xpZW50IFBpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmlu
ZGV4IGZkYjgxZjQxMzU1MWZmYzJjYmQxZTI3ZjBiNDBkMjRiODRkZDg5YmYuLjhkYTEzYzRiMzNj
NzA4OTQ0YWIyMThiMzY3MDhlNzE2YzA4NDU5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKQEAgLTE4Myw2ICsxODMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCisgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Us
CiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDY0MmY2ZWY0YmRjN2IzNDFmODJiZDQ2NjNl
YTNkMTkzMWU4NTIwZTcuLmJmMjRkYjZhYjk1NjA2OTBkYzgzNTQ1ZWM5OTYzODExZWU2MmQ3OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTg4LDYgKzg4LDcg
QEAKICNpbXBvcnQgIl9XS1VzZXJJbml0aWF0ZWRBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9y
ZUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5o
IgogCkBAIC0zODksNiArMzkwLDkgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNp
emUsIFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGU6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6CiAg
ICAgICAgIHdyYXBwZXIgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBhbGxvY107CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZToKKyAgICAgICAgd3JhcHBlciA9IFtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAogICAgIGNhc2UgVHlwZTo6
QnVuZGxlRnJhbWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzMDZjZDFlNjkzNTY2MWFkNDFjMDYwOTI4NDhi
ZjlhZjM2YjFiNzI2Li5iZTM3NGMyYTk0ZTIyZWU0N2Q2YjQ0ZTM2NzNkMTg5ZDIxNjFjN2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKQEAgLTMzOCw2ICszMzgsNyBAQCBVSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVt
ZVRhc2suY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCiBVSVByb2Nl
c3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0
LmNwcAorVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcAogVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdpbmRvd0Zl
YXR1cmVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA4NzZhZGQxMzU0M2VlOGZjZWVi
YTYzNWJhOTk5MzZlZDdjODZjNTYuLmU5OTI3ODIyNGZhY2U2NDI3MjllZmFhNzY1ZGMxZmNiZjYx
MGZjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI3OCw2ICsyNzgsNyBAQCBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVXNlckluaXRpYXRlZEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5
bGVTaGVldC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tWaXNpdGVkTGlua1N0b3JlLm1tCitV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Uu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVNpemUubW0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oCmluZGV4IDIxODFkOGQ1NzRkM2Y1NGE2ZmI4
NzU2OTNhMDI3MmJhNGMyZTU0YmMuLmEzMGRkOTUyMzFkZjRmOGIxYzZhOGExY2JiNTZlMjU2OGQ3
MDFiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJj
ZUxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3Vy
Y2VMb2FkQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Owogc3Ry
dWN0IFJlc291cmNlTG9hZEluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjFmZTY0NjBhZjUyODk0ODdlODMyMGIyYWE5YWJlYjVhMDMwMWVk
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKK25hbWVz
cGFjZSBBUEkgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlPiBXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
OjpjcmVhdGUoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJiBy
ZXNwb25zZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKSk7Cit9CisKK1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Uo
UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJiByZXNwb25zZSkK
KyAgICA6IG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCit7Cit9CisKK1dlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6On5XZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlKCkgPSBkZWZhdWx0OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iZjcxYTA2YTFmNDBmZjJiMmQ3M2QwNDViNzNlNjQ0MTI2MjJlODVjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaD4KKwor
bmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OldlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKyAgICB+V2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZSgpOworCisgICAgV1RGOjpTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzcG9uc2UtPm5hbWUoKTsgfQorICAgIFdURjo6U3RyaW5nIGRpc3BsYXlOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNwb25zZS0+ZGlzcGxheU5hbWUoKTsgfQorICAgIEFycmF5QnVmZmVyKiB1
c2VySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS0+dXNlckhhbmRsZSgpOyB9CisK
KyAgICBjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYg
cmVzcG9uc2UoKSB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CisKK3ByaXZhdGU6CisgICAgV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiYmKTsKKworICAgIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+IG1fcmVzcG9uc2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTJmNWFmMDJkNDRlZGFhYzIwZTljODk0
MmExYjUwMTE4Y2ZkNzM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisK
K05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlIDogTlNPYmplY3QKKworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7CisKK0BlbmQKKworTlNfQVNTVU1F
X05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBiNjE2ODgwMjg5YjJlN2YxNzBlOTk1ZTk2MjhmZjMzMDljY2U0
MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQpAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9uIF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgeworICAgIFJldGFpblB0cjxOU0Rh
dGE+IF91c2VySGFuZGxlOworfQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgX3Jlc3BvbnNlLT5+V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZSgpOworCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChOU1N0cmluZyAqKW5hbWUK
K3sKKyAgICByZXR1cm4gX3Jlc3BvbnNlLT5uYW1lKCk7Cit9CisKKy0gKE5TU3RyaW5nICopZGlz
cGxheU5hbWUKK3sKKyAgICByZXR1cm4gX3Jlc3BvbnNlLT5kaXNwbGF5TmFtZSgpOworfQorCist
IChOU0RhdGEgKil1c2VySGFuZGxlCit7CisgICAgaWYgKF91c2VySGFuZGxlKQorICAgICAgICBy
ZXR1cm4gX3VzZXJIYW5kbGUuZ2V0KCk7CisKKyAgICBpZiAoYXV0byogdXNlckhhbmRsZSA9IF9y
ZXNwb25zZS0+dXNlckhhbmRsZSgpKQorICAgICAgICBfdXNlckhhbmRsZSA9IFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJ5dGVzOnVzZXJIYW5kbGUtPmRhdGEoKSBsZW5ndGg6dXNlckhhbmRsZS0+
Ynl0ZUxlbmd0aCgpXTsKKyAgICByZXR1cm4gX3VzZXJIYW5kbGUuZ2V0KCk7Cit9CisKKyNwcmFn
bWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX3Jlc3BvbnNlOworfQorI2VuZGlmCisKK0Bl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjM2MDBmYzlmMzBjNDhlN2RmMjZlZDlkMDNhYWU5NTA0
OTIxYTdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiX1dLV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRI
TikKKworI2ltcG9ydCAiQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIgor
I2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4g
c3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZTsKK307CisKK30KKworQGludGVyZmFjZSBfV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9i
amVjdFN0b3JhZ2U8QVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlPiBfcmVz
cG9uc2U7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmgKaW5kZXggODY4MDYyM2ZjNDllMDdhZmMzMWFhYzc2MGU1YjZhNDRlYmYy
ZDMwOC4uOWIxOTZiNjU1MzA3YTI0MmMwYmEzNjVlMjI2MTU2MzM3ZTViNTRhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oCkBAIC0zMSw2ICszMSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKK0BjbGFzcyBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOwog
QGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpIHsKQEAgLTY5LDYgKzcwLDcg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlKSB7
CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdXBkYXRl
V2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSl1
cGRhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkaXNt
aXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhlbnRpY2F0aW9u
UmVzdWx0KXJlc3VsdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBh
bmVsIHJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczooTlNVSW50ZWdlcilyZXRyaWVzIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAo
dm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2Vy
dGlvblJlc3BvbnNlczooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDQ0NzRiYWM2NDI3ZDIwOTZiNGQxMmFk
NDVlMDg3MGE1Y2EwMDlmZDkuLjJlYjMxZTgxMmM5NTk4ZTg5ODg0MGI5NTU4Y2UzMzJmMmVkNjc5
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNCwxMCArMjQsMTAgQEAKICAq
LwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oIgot
I2ltcG9ydCA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgogCisjaW1wb3J0
ICJXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgiCisjaW1wb3J0IDxXZWJDb3JlL1dlYkF1
dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBp
bXBsZW1lbnRhdGlvbiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCmluZGV4IGU4
MzUzMDQxM2IxZGVlNWQ4YWQwNGVmMmMxNWY3N2M2MTE2ZDJmMmEuLmE0N2IyOTI2YzFkMzY3MjVh
YzMyODExMWJjZGZkZDVmMWE2ZTQwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUuaApAQCAtMjksNiArMjksOCBAQAogI2lt
cG9ydCAiV0tGb3VuZGF0aW9uLmgiCiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAorQGNs
YXNzIFdLV2ViVmlldzsKKwogQHByb3RvY29sIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlOwogCiBu
YW1lc3BhY2UgQVBJIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1Jlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KaW5kZXggNmI3ODAwYmM5OTAwZmU2MDkwMzFhMTNmNWEw
ZWQ5YWRjNGY2ZWIyMC4uZDQyNjI4NTNjNTBhNjBmYmFiNzE1MzA3ZDI1MGYwYzhlMDFlMzU5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0KQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKIAorI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eS5oIgorI2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgi
CiAjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLUmVzb3Vy
Y2VMb2FkSW5mb0ludGVybmFsLmgiCiAKQEAgLTgwLDcgKzgyLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRTZW5kUmVxdWVzdChXZWJLaXQ6OlJl
c291cmNlTG8KICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbZGVs
ZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQo
KSByZXNvdXJjZUxvYWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShXVEZN
b3ZlKGxvYWRJbmZvKSkuZ2V0KCkpIGRpZFNlbmRSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0
KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CisgICAgW2RlbGVn
YXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkg
cmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92
ZShsb2FkSW5mbykpLmdldCgpKSBkaWRTZW5kUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChX
ZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkgY29uc3QKQEAgLTkyLDcgKzk0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YktpdDoKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbZGVsZWdh
dGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSBy
ZXNvdXJjZUxvYWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShXVEZNb3Zl
KGxvYWRJbmZvKSkuZ2V0KCkpIGRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246cmVzcG9uc2UubnNV
UkxSZXNwb25zZSgpIG5ld1JlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRh
dGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzpt
X3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXNvdXJjZUxvYWQ6
d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShXVEZNb3ZlKGxvYWRJbmZvKSku
Z2V0KCkpIGRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246cmVzcG9uc2UubnNVUkxSZXNwb25zZSgp
IG5ld1JlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQ
b2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWREZWxl
Z2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYktpdDo6UmVz
b3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkmIGNoYWxsZW5nZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCAxNDk5NDY2YTFjZWNhOGU5ZmQ5MGY5Y2Y2
MTQyNTY1OTAyYTg4ZmJmLi5mZjU5MTQyZTdiN2NhNWRlMWE5Y2Y4MGZhNjk2MWY4OWZmNjM1YTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENs
aWVudC5oCkBAIC01MCw2ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQYW5lbChX
ZWJBdXRoZW50aWNhdGlvblN0YXR1cykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkaXNtaXNzUGFu
ZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVxdWVz
dFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYp
PiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlcyhjb25z
dCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4mKT4mJikgY29uc3QgZmluYWw7CiAKICAgICBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsICptX3BhbmVsOwogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKQEAgLTU4LDYgKzU5LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBwYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwgOiAx
OwogICAgICAgICBib29sIHBhbmVsRGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVz
dWx0IDogMTsKICAgICAgICAgYm9vbCBwYW5lbFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0cmll
c0NvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbFNlbGVjdEFzc2VydGlv
blJlc3BvbnNlc0NvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICB9IG1fZGVsZWdhdGVNZXRob2Rz
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQubW0KaW5kZXggN2YxNTdiZDk4NDY5Y2Q2NjkxZmUxMDBmM2UzNWE0MTk3MzhmNWU5
MS4uZTE4MjkzY2Q1MTA5OWUxMWExYzYzNGU1YWM5MzA5MDg5ZDVmOGUxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCkBAIC0y
OCw4ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAorI2ltcG9ydCAiQVBJV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgor
I2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgiCiAjaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CkBAIC00Myw2ICs0NSw3IEBAIFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQoX1dL
V2ViQXV0aGVudGljYXRpb25QCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxVcGRhdGVXZWJB
dXRoZW50aWNhdGlvblBhbmVsID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IocGFuZWw6dXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDopXTsKICAgICBtX2RlbGVnYXRl
TWV0aG9kcy5wYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOmRpc21pc3NXZWJBdXRo
ZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5l
bFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0cmllc0NvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6cmVxdWVzdFBJTldpdGhSZW1h
aW5pbmdSZXRyaWVzOmNvbXBsZXRpb25IYW5kbGVyOildOworICAgIG1fZGVsZWdhdGVNZXRob2Rz
LnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNw
b25zZXM6Y29tcGxldGlvbkhhbmRsZXI6KV07CiB9CiAKIFJldGFpblB0cjxpZCA8X1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiA+IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6
OmRlbGVnYXRlKCkKQEAgLTE0MSw2ICsxNDQsNDEgQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGUK
ICAgICB9KTsKIH0KIAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RB
c3NlcnRpb25SZXNwb25zZXMoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGF1dG8gbnNSZXNwb25zZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6cmVzcG9uc2VzLnNpemUo
KV0pOworICAgIGZvciAoYXV0byYgcmVzcG9uc2UgOiByZXNwb25zZXMpCisgICAgICAgIFtuc1Jl
c3BvbnNlcyBhZGRPYmplY3Q6d3JhcHBlcihBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZS5jb3B5UmVmKCkpKV07CisKKyAgICAvLyBDYWxsIGRl
bGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFu
Y2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCisgICAgLy8gb2YgdGhl
IGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgorICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIG5zUmVzcG9u
c2VzID0gV1RGTW92ZShuc1Jlc3BvbnNlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBf
YXBpT2JqZWN0XSkucmVzcG9uc2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2VzQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSY+KFtb
bnNSZXNwb25zZXMgZmlyc3RPYmplY3RdIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBtX2Rl
bGVnYXRlLmdldCgpOworICAgICAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSkucmVzcG9u
c2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNo
ZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXM6Y29tcGxldGlvbkhh
bmRsZXI6KSk7CisgICAgICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHNlbGVjdEFzc2VydGlv
blJlc3BvbnNlczpuc1Jlc3BvbnNlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlICpyZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UmPihbcmVzcG9uc2UgX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAg
ICAgICB9KS5nZXQoKV07CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0
b3IuaAppbmRleCAyNWZlOTAzMmY4ZTQwNGViZjdiNWE5MTdiZGQ4MmRkZmQ0N2JjYjlmLi42ZTNk
ZTAxMWNjNDA1ODdiYWZkODhhZGFlYzU2ZWQ2NjQ3ZWJlZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9y
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwQXV0aGVudGljYXRvci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBn
ZXRSZXRyaWVzKCk7CiAgICAgdm9pZCBjb250aW51ZUdldEtleUFncmVlbWVudEFmdGVyR2V0UmV0
cmllcyhWZWN0b3I8dWludDhfdD4mJik7CiAgICAgdm9pZCBjb250aW51ZVJlcXVlc3RQaW5BZnRl
ckdldEtleUFncmVlbWVudChWZWN0b3I8dWludDhfdD4mJiwgdWludDY0X3QgcmV0cmllcyk7Ci0g
ICAgdm9pZCBjb250aW51ZUdldFBpblRva2VuQWZ0ZXJSZXF1ZXN0UGluKGNvbnN0IFN0cmluZyYg
cGluLCBjb25zdCBDcnlwdG9LZXlFQyYpOworICAgIHZvaWQgY29udGludWVHZXRQaW5Ub2tlbkFm
dGVyUmVxdWVzdFBpbihjb25zdCBTdHJpbmcmIHBpbiwgY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5
RUMmKTsKICAgICB2b2lkIGNvbnRpbnVlUmVxdWVzdEFmdGVyR2V0UGluVG9rZW4oVmVjdG9yPHVp
bnQ4X3Q+JiYsIGNvbnN0IGZpZG86OnBpbjo6VG9rZW5SZXF1ZXN0Jik7CiAKICAgICBib29sIHRy
eURvd25ncmFkZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYWZiZGMyNTc1ZTQ0ODE4NWU0YmNiYzg0MmU0ZjdhNTQ0MzEzYjQzOS4u
Y2VlMjIyYTNmYTQ3Y2E5MGQwYjFiZGM1NjgwZTE4YTQ4YzQxMmE4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDk1LDYgKzEwOTUs
OSBAQAogCQk1NzdGRjc4MjIzNDZFODFDMDA0RURGQjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc3RkY3ODEyMzQ2RTgxQzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQuaCAqLzsgfTsKIAkJNTc3RkY3ODUyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3N0ZGNzgzMjM0NkVDQUEwMDRFREZCOSAvKiBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50LmggKi87IH07CiAJCTU3OERDMjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2NhbEF1
dGhlbnRpY2F0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3OERDMjk3MjE1NUEwMDEwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0
aW9uU29mdExpbmsuaCAqLzsgfTsKKwkJNTc5RjFCRjYyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OUYxQkY0MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTc5RjFCRjkyM0M4MEVDNjAwQzdENEI0IC8q
IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5RjFCRjgyM0M4MEVDNjAw
QzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5o
ICovOyB9OworCQk1NzlGMUJGQzIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTc5RjFCRkEyM0M4MTFDRjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLzsgfTsKIAkJNTdBQzhGNTAyMTdGRUVEOTAwNTU0MzhD
IC8qIEhpZENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3QUM4RjRFMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggKi87
IH07CiAJCTU3QjRCNDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhl
bnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0I0QjQ1RTIwQjUwNEFCMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNh
dGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oICovOyB9OwogCQk1N0I4MjY0MTIzMDRFQjNF
MDBCNzJFQjAgLyogTmVhckZpZWxkU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0MDIzMDRFQjNFMDBCNzJFQjAgLyogTmVhckZpZWxkU1BJ
LmggKi87IH07CkBAIC0zNzU1LDYgKzM3NTgsMTEgQEAKIAkJNTc3RkY3ODMyMzQ2RUNBQTAwNEVE
RkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzdGRjc4NDIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OERDMjk3MjE1NUEwMDEwMDc0RTgx
NSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxB
dXRoZW50aWNhdGlvblNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
OUYxQkY0MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRjUyM0M4MERCNjAw
QzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJGODIzQzgwRUM2MDBDN0Q0QjQg
LyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJGQTIzQzgxMUNGMDBDN0Q0QjQg
LyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU3OUYxQkZCMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVdlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1N0FDOEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIaWRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3QUM4RjRGMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSGlkQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTdCNEI0NUQyMEI1MDRBQjAwRDRBRDc5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0aGVudGljYXRp
b25NYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODQ1LDYg
KzY4NTMsOSBAQAogCQkJCTFBODFCMzdGMThCRDY2QUQwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlu
a1N0b3JlLmggKi8sCiAJCQkJMUE4MUIzN0UxOEJENjZBRDAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRM
aW5rU3RvcmUubW0gKi8sCiAJCQkJMUE4MUIzODQxOEJENjczQTAwMDdGREFDIC8qIF9XS1Zpc2l0
ZWRMaW5rU3RvcmVJbnRlcm5hbC5oICovLAorCQkJCTU3OUYxQkY0MjNDODBEQjYwMEM3RDRCNCAv
KiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi8sCisJCQkJNTc5RjFC
RjUyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UubW0gKi8sCisJCQkJNTc5RjFCRjgyM0M4MEVDNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oICovLAogCQkJCTU3NDcyOENGMjM0NTZF
OTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggKi8sCiAJCQkJNTc0NzI4
RDAyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gKi8sCiAJ
CQkJNTc0NzI4RDMyMzQ1NzBBRTAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJ
bnRlcm5hbC5oICovLApAQCAtODUyNiw2ICs4NTM3LDggQEAKIAkJCQk3Qzg5RDI5MjFBNjcxMjJG
MDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5oICovLAogCQkJCTJEODc4NjIxMUJEQjU4RkYwMEQw
MkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5jcHAgKi8sCiAJCQkJMkQ4Nzg2MjIxQkRCNThGRjAw
RDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0LmggKi8sCisJCQkJNTc5RjFCRkIyM0M4MTFDRjAw
QzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwICovLAor
CQkJCTU3OUYxQkZBMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmggKi8sCiAJCQkJNTdFQkUyNjkyMzQ2NzZDNTAwOEQ4QUY5IC8qIEFQSVdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwICovLAogCQkJCTU3RUJFMjY4MjM0Njc2QzUwMDhEOEFG
OSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggKi8sCiAJCQkJNTc3RkY3ODEyMzQ2RTgx
QzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCAqLywKQEAgLTk4
OTYsNiArOTkwOSw4IEBACiAJCQkJMkQ4Nzg2MjAxQkRCNTdGNTAwRDAyQUJCIC8qIF9XS1VzZXJT
dHlsZVNoZWV0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODFCMzgxMThCRDY2QUQw
MDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTgx
QjM4NTE4QkQ2NzNBMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1NzlGMUJGNjIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc5RjFCRjky
M0M4MEVDNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc0NzI4RDEyMzQ1NkU5ODAwMTcwMEFGIC8q
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NDcyOEQ0
MjM0NTcwQUUwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBRTI4Njc4MUM3RTc2NTEwMDY5QUM0RiAvKiBfV0tXZWJzaXRl
RGF0YVNpemUuaCBpbiBIZWFkZXJzICovLApAQCAtOTk3OCw2ICs5OTkzLDcgQEAKIAkJCQkyRDg3
ODYyNDFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM1RTFBRkVEMTZCMjEwMTcwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDNUUxQUZFRjE2QjIxMDI5MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZVJl
c291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzlGMUJGQzIzQzgxMUNGMDBDN0Q0QjQgLyog
QVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdFQkUyNkEyMzQ2NzZDNTAwOEQ4QUY5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3N0ZGNzgyMjM0NkU4MUMwMDRFREZCOSAvKiBBUElXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyODY4NDFD
N0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhOTZi
MjA0ZGFiY2Y2NGI2MDY4NTZjNWU2MzJhNGRiMzFmNjFjMDkuLjM2ZWQ3ZWZhY2E0ZmExMzdmZjcy
MmZmMDg5ZjliN2Q0OGFiNjU2NDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wMS0xMCAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQ
SSB0byB0ZWxsIFVJIGNsaWVudHMgdG8gc2VsZWN0IGFzc2VydGlvbiByZXNwb25zZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjExMgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTg0OTU3MzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICgtW1Rlc3RXZWJB
dXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Vz
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWhpZC5odG1sOgorCiAyMDIwLTAxLTA2ICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0IENUQVAgQ2xp
ZW50IFBpbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MWViZWVkNWQ5MWM1MTAzMGE5NmNj
NzEzMjQ5OWMzZjkzY2YyOTgwLi5kZTMxYjFlZmNkOTcyZDkyYmIwNDNlNzg4NDc0YjMyYWY3ZTU5
NTBiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzY4LDYgKzM2OCw3IEBACiAJCTU3OTdG
RTMzMUVCMTVBQjEwMEIyRjRBMCAvKiBuYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0by5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3OTdGRTMyMUVCMTVBODkwMEIyRjRBMCAvKiBuYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNy
eXB0by5odG1sICovOyB9OwogCQk1Nzk4MzM3RTIzNjAxOUE0MDA4RTU1NDcgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCAqLzsgfTsKIAkJ
NTc5ODMzOTIyMzY4RkEzNzAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5ODMzN0IyMzVFQjY1QzAwOEU1NTQ3IC8qIHdlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwgKi87IH07
CisJCTU3OUYxQzAxMjNDOTNBRjUwMEM3RDRCNCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzlGMUJGRjIzQzkyRkQzMDBDN0Q0QjQg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRz
Lmh0bWwgKi87IH07CiAJCTU3QTc5ODU3MjI0QUIzNEUwMEE3RjZGMSAvKiBXZWJDcnlwdG9NYXN0
ZXJLZXkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0E3OTg1NjIyNEFCMzRFMDBBN0Y2RjEgLyogV2ViQ3J5cHRvTWFzdGVyS2V5Lm1tICovOyB9Owog
CQk1N0MzRkE2NjFGN0MyNDhGMDA5RDRCODAgLyogV2Vha1B0ci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I5QkMzNzFBNjc0ODIzMDBGRTU2Nzgg
LyogV2Vha1B0ci5jcHAgKi87IH07CiAJCTU3QzYyNDRFMjM0NkJDRkEwMDM4M0ZFNyAvKiBfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTdDNjI0NEQyMzQ2QkNGQTAwMzgzRkU3IC8qIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0gKi87IH07CkBAIC0xNDg0LDYgKzE0ODUsNyBAQAogCQkJCTJFQkQ5RDBB
MjEzNDczMEQwMDJEQTc1OCAvKiB2aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CUNENTc3Nzk5MjExQ0UwRTQwMDFCMzcxRSAvKiB3ZWItYXVkaW8tb25seS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTU3NjYzREYzMjM1N0U0ODkwMEU4NUUwOSAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCisJCQkJNTc5RjFDMDEyM0M5M0FGNTAwQzdENEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1n
ZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTU3NzQ1NEQwMjM1OUIzNzgwMDhFMUVENyAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtbm8tY3JlZGVudGlhbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQk1NzBEMjZGQzIzQzNGODcwMDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24taGlkLXBpbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NjYz
REVDMjM0RjFGOTMwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1o
aWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE5NDksNiArMTk1MSw3IEBACiAJCTU3
OTgzMzdCMjM1RUI2NUMwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1uZmMtbXVsdGlwbGUtdGFncy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc5OEUyQUYxQ0FGNUMyODAwQzVD
QkEwIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU3OUYxQkZGMjNDOTJGRDMwMEM3RDRCNCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3Vu
dHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QTc5ODU2MjI0QUIzNEUw
MEE3RjZGMSAvKiBXZWJDcnlwdG9NYXN0ZXJLZXkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJDcnlwdG9NYXN0ZXJLZXkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QzYy
NDREMjM0NkJDRkEwMDM4M0ZFNyAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDNjI0NEYyMzQ2QzFFQzAwMzgzRkU3IC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24uaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zNTAxLDYgKzM1MDQsNyBAQAogCQkJCUNENTc3NzlCMjExQ0U2Q0Uw
MDFCMzcxRSAvKiB2aWRlby13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbCAqLywKIAkJCQlD
RDU3Nzc5ODIxMUNERThGMDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCAqLywKIAkJCQk1
NzY2M0RGMjIzNTdFNDVEMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24taGlkLWNhbmNlbC5odG1sICovLAorCQkJCTU3OUYxQkZGMjNDOTJGRDMwMEM3RDRCNCAvKiB3
ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRt
bCAqLywKIAkJCQk1Nzc0NTRDRjIzNTlCMzM4MDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LWdldC1hc3NlcnRpb24taGlkLW5vLWNyZWRlbnRpYWxzLmh0bWwgKi8sCiAJCQkJNTcwRDI2RkIy
M0MzRjg2NTAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1w
aW4uaHRtbCAqLywKIAkJCQk1NzY2M0RFQjIzNEYxRjgwMDBFODVFMDkgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgKi8sCkBAIC00ODcwLDcgKzQ4NzQsNiBAQAog
CQkJCTJEMkJFQjJEMjIzMjRFNUYwMDU1NDRDQSAvKiBSZXF1ZXN0VGV4dElucHV0Q29udGV4dC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEM0MUQwQTY1NDIwMEZFQkNGMyAvKiBSZXF1aXJl
c1VzZXJBY3Rpb25Gb3JQbGF5YmFjay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBFMUE0
MTFBRTYwMDQ0N0M0QyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlDRDI3QTFDMTIzQzY2MUVEMDA2RTExREQgLyogV0tXZWJWaWV3UGF1c2VQ
bGF5aW5nQXVkaW9UZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBGMUE0MTFBRTYw
MDQ0N0M0QyAvKiBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVDQjdBRkRDMjNDNDUyOTcwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxQzhFMUE1MUYyNkFGNEMwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC01MDUyLDYgKzUwNTUsNyBAQAogCQkJCUQz
NEUwODc2MUU0RTQyRTEwMDVGRjE0QSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUY0RkE5MTgxMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNFZGl0
aW5nVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0FDQURBMTIzMDYyMEFFMDAwN0Q1NEMg
LyogV0tXZWJWaWV3T3BhcXVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyN0ExQzEyM0M2NjFF
RDAwNkUxMUREIC8qIFdLV2ViVmlld1BhdXNlUGxheWluZ0F1ZGlvVGVzdHMubW0gaW4gU291cmNl
cyAqLywKIAkJCQkyRDAxRDA2RTIzMjE4RkVFMDAzOUFBM0EgLyogV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzN0E5REJFOTIxM0I0QzkzMDBEMjYxQTIgLyog
V0tXZWJWaWV3U2VydmVyVHJ1c3RLVkMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0Y1NkRBOTFF
NUY5MTlEMDAzRURFODQgLyogV0tXZWJWaWV3U25hcHNob3QubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAwY2IyNDc4ZGM5YjE5YzdhYWEy
MTRjODM4YWZmYmIzYzFjMmFmZDNkLi5mYzU2ZDU3OTFmOWY4ODlkNTcxYzcxZjk2OTM1MDc5ZDg1
YWM1YjIxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0zNSw4ICsz
NSwxMCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVy
aW1lbnRhbEZlYXR1cmUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvUmFuZG9tTnVt
YmVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAog
c3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbiA9IGZhbHNlOwpAQCAtNDYsNiAr
NDgsNyBAQCBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTXVsdGlwbGVO
RkNUYWdzUHJlc2VudCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5l
bFVwZGF0ZU5vQ3JlZGVudGlhbHNGb3VuZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVu
dGljYXRpb25QYW5lbENhbmNlbEltbWVkaWF0ZWx5ID0gZmFsc2U7CiBzdGF0aWMgU3RyaW5nIHdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxQaW47CitzdGF0aWMgQk9PTCB3ZWJBdXRoZW50aWNhdGlvblBh
bmVsTnVsbFVzZXJIYW5kbGUgPSBOTzsKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRp
b25QYW5lbERlbGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxl
Z2F0ZT4KIEBlbmQKQEAgLTkxLDYgKzk0LDIwIEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIod2ViQXV0aGVudGljYXRpb25QYW5lbFBpbik7CiB9CiAKKy0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3Nl
cnRpb25SZXNwb25zZXM6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlICo+ICopcmVzcG9uc2VzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgRVhQRUNUX0VRKHJlc3BvbnNlcy5jb3VudCwgMnVsKTsKKyAgICBmb3IgKF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKnJlc3BvbnNlIGluIHJlc3BvbnNlcykgeworICAg
ICAgICBFWFBFQ1RfVFJVRShbcmVzcG9uc2UubmFtZSBpc0VxdWFsOkAiam9obnBzbWl0aEBleGFt
cGxlLmNvbSJdIHx8IFtyZXNwb25zZS5uYW1lIGlzRXF1YWw6QCIiXSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKFtyZXNwb25zZS5kaXNwbGF5TmFtZSBpc0VxdWFsOkAiSm9obiBQLiBTbWl0aCJdIHx8
IFtyZXNwb25zZS5kaXNwbGF5TmFtZSBpc0VxdWFsOkAiIl0pOworICAgICAgICBFWFBFQ1RfVFJV
RShbW3Jlc3BvbnNlLnVzZXJIYW5kbGUgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBd
IGlzRXF1YWw6QCJNSUlCa3pDQ0FUaWdBd0lCQWpDQ0FaTXdnZ0U0b0FNQ0FRSXdnZ0dUTUlJPSJd
IHx8ICFyZXNwb25zZS51c2VySGFuZGxlKTsKKyAgICB9CisKKyAgICBhdXRvIGluZGV4ID0gd2Vh
a1JhbmRvbVVpbnQzMigpICUgMjsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJI
YW5kbGUgPSByZXNwb25zZXNbaW5kZXhdLnVzZXJIYW5kbGUgPyBOTyA6IFlFUzsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXNwb25zZXNbaW5kZXhdKTsKK30KKwogQGVuZAogCiBAaW50ZXJmYWNl
IFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRmFrZURlbGVnYXRlIDogTlNPYmplY3QgPF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4KQEAgLTg3Miw2ICs4ODksNDAgQEAgVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBc3NlcnRpb25QaW4pCiAgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CiB9CiAKK1RFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgTXVsdGlwbGVBY2NvdW50c051bGxEZWxlZ2F0ZSkKK3sKKyAgICByZXNldCgpOworICAg
IFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUt
YWNjb3VudHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllF
U107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9y
RXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUo
KV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxV
SURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2RlbGVnYXRlIHNldElzTnVsbDp0cnVlXTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQo
KV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOworfQorCitU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE11bHRpcGxlQWNjb3VudHMpCit7CisgICAgcmVz
ZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlk
LW11bHRpcGxlLWFjY291bnRzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5D
bGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9y
VGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJs
ZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50
YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNh
dGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CisgICAgRVhQRUNUX0VRKFtbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlckhhbmRsZSJdIGlzRXF1YWxUb1N0cmluZzpA
IjxudWxsPiJdLCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9u
LWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYz
N2U0MjA3OTVmZDU2NzdiZDUwZjExZGQ1NGVhNjA0MjQ5YWU0OQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9u
LWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwKQEAgLTAsMCArMSw1NiBA
QAorPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+Cis8c2NyaXB0PgorICAgIGNvbnN0IHRl
c3RBc3NlcnRpb25NZXNzYWdlTG9uZ0Jhc2U2NCA9CisgICAgICAgICJBS1VCb21KcFpGaEFLQWl0
enVqK1RzbHplbGYzL3Zad0lHdERRTmdvS2VGZDVvRWllWXpoeXpBNjVzYWYwdEsyIiArCisgICAg
ICAgICJ3L21vb2E3dFF0R2dEZHdaSWpPaGpjdVowcFExYWpvRTRHUjBlWEJsYW5CMVlteHBZeTFy
WlhrQ1dDVkd6SCs1IiArCisgICAgICAgICJaNTFWc3R1UWt1SEkyZVhoMEN0MWdQQzBnU3gzQ1dM
aDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiArCisgICAgICAgICI0L0YwVkI3RGxV
Vk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82cU5zOE91dHpoUDJDIiAr
CisgICAgICAgICJRb0oxTDdGZTY0Rzl1QmNFcEdKcFpGZ2dNSUlCa3pDQ0FUaWdBd0lCQWpDQ0Fa
TXdnZ0U0b0FNQ0FRSXdnZ0dUIiArCisgICAgICAgICJNSUprYVdOdmJuZ29hSFIwY0hNNkx5OXdh
V056TG1GamJXVXVZMjl0THpBd0wzQXZZVUpxYW1wd2NWQmlMbkJ1IiArCisgICAgICAgICJaMlJ1
WVcxbGRtcHZhRzV3YzIxcGRHaEFaWGhoYlhCc1pTNWpiMjFyWkdsemNHeGhlVTVoYldWdFNtOW9i
aUJRIiArCisgICAgICAgICJMaUJUYldsMGFBVUMiOworICAgIGNvbnN0IHRlc3RBc3NlcnRpb25N
ZXNzYWdlQmFzZTY0ID0KKyAgICAgICAgIkFLTUJvbUpwWkZoQUtBaXR6dWorVHNsemVsZjMvdlp3
SUd0RFFOZ29LZUZkNW9FaWVZemh5ekE2NXNhZjB0SzIiICsKKyAgICAgICAgIncvbW9vYTd0UXRH
Z0Rkd1pJak9oamN1WjBwUTFham9FNEdSMGVYQmxhbkIxWW14cFl5MXJaWGtDV0NWR3pIKzUiICsK
KyAgICAgICAgIlo1MVZzdHVRa3VISTJlWGgwQ3QxZ1BDMGdTeDNDV0xoNUk5YTJBRUFBQUJRQTFo
SE1FVUNJUUNTRlR1dUJXZ0IiICsKKyAgICAgICAgIjQvRjBWQjdEbFVWTTA5SUhQbXhlMU16SFV3
Um9DUlpiQ0FJZ0dLb3Y2eG9BeDJNRWY2LzZxTnM4T3V0emhQMkMiICsKKyAgICAgICAgIlFvSjFM
N0ZlNjRHOXVCYz0iOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVy
ZTogdHJ1ZSwgaGlkOiB7IHBheWxvYWRCYXNlNjQ6IFt0ZXN0QXNzZXJ0aW9uTWVzc2FnZUxvbmdC
YXNlNjQsIHRlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOworICAgICAgICBpbnRlcm5h
bHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gYnl0ZXNUb0hleFN0cmluZyhieXRlcykKKyAgICB7CisgICAgICAgIGlmICgh
Ynl0ZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBieXRlcyA9IG5ldyBV
aW50OEFycmF5KGJ5dGVzKTsKKyAgICAgICAgdmFyIGhleEJ5dGVzID0gW107CisKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFy
IGJ5dGVTdHJpbmcgPSBieXRlc1tpXS50b1N0cmluZygxNik7CisgICAgICAgICAgICBpZiAoYnl0
ZVN0cmluZy5sZW5ndGggPCAyKQorICAgICAgICAgICAgICAgIGJ5dGVTdHJpbmcgPSAiMCIgKyBi
eXRlU3RyaW5nOworICAgICAgICAgICAgaGV4Qnl0ZXMucHVzaChieXRlU3RyaW5nKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBoZXhCeXRlcy5qb2luKCIiKTsKKyAgICB9CisKKyAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgIGNoYWxs
ZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgdGltZW91dDogMTAwMAorICAg
ICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyku
dGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgdXNlckhhbmRsZSA9IGJ5dGVzVG9IZXhTdHJp
bmcoY3JlZGVudGlhbC5yZXNwb25zZS51c2VySGFuZGxlKTsKKyAgICAgICAgLy8gY29uc29sZS5s
b2coIlN1Y2NlZWRlZCEiKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
dGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKKyAgICB9LCBlcnJvciA9PiB7
CisgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOworICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShlcnJvci5tZXNz
YWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhp
ZC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sCmluZGV4IDViNmFlYmViZjEyNGIxMDM5
ZWQwNzk0ZWQyMmQzZGI2OGVhMzRhZmMuLmU5ODFhNzBmOTk3MTkxNTVkMGZiM2U3OThlNTYxNTJh
ZjNiODY4NzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtl
LWNyZWRlbnRpYWwtaGlkLmh0bWwKQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKICAgICAgICAgICAgIHB1
YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAg
ICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICAgICAgdGltZW91dDogMTAwLAogICAgICAgICB9
CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387572</attachid>
            <date>2020-01-13 14:57:48 -0800</date>
            <delta_ts>2020-01-13 16:41:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206112-20200113145748.patch</filename>
            <type>text/plain</type>
            <size>58873</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwZDVmOTAwODJkZjZhNjUx
YjY4N2I0ODJlODc0NDFiZTZhYzkyNTIuLjY3NGE5MGJmY2IxZTBlNTVjZGM0OTFlZDYyYzIwODY1
NmFjNDMxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDEtMTAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBTUEkgdG8gdGVsbCBVSSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDk1NzMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBkZWxlZ2F0ZSBtZXRob2QgaW4gX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbERlbGVnYXRlIHRvIHRlbGwgVUkgY2xpZW50cyB0bworICAgICAgICBzZWxlY3Qg
YW4gYXNzZXJ0aW9uIHJlc3BvbnNlIHdoZW4gbXVsdGlwbGUgYXJlIHJldHVybmVkIGZyb20gYW4g
YXV0aGVudGljYXRvci4gSGVyZSBpcyB0aGUgU1BJOgorICAgICAgICBAcHJvdG9jb2wgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDxOU09iamVjdD4KKyAgICAgICAgQG9wdGlvbmFs
CisgICAgICAgIC4uLgorICAgICAgICAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzOihOU0FycmF5IDwgX1dLV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3BvbnNlcyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAq
KSljb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgLi4uCisgICAgICAgIEBlbmQKKworICAgICAg
ICBBIG5ldyBpbnRlcmZhY2UgaXMgaW50cm9kdWNlZCB0byByZXByZXNlbnQgYW4gYXV0aGVudGlj
YXRvciBhc3NlcnRpb24gcmVzcG9uc2U6CisgICAgICAgIEBpbnRlcmZhY2UgX1dLV2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSA6IE5TT2JqZWN0CisgICAgICAgIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7CisgICAgICAgIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOwor
ICAgICAgICBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqdXNl
ckhhbmRsZTsKKyAgICAgICAgQGVuZAorICAgICAgICBPbmx5IG1lbWJlcnMgdGhhdCBjYW4gYXNz
aXN0IHVzZXJzIHRvIG1ha2UgYSBkZWNpc2lvbiBhcmUgZXhwb3NlZCB0byBVSSBjbGllbnRzLgor
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAgICAgIChBUEk6OldlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmgu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaC4KKyAgICAgICAgKC1b
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBkZWFsbG9jXSk6CisgICAgICAg
ICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgbmFtZV0pOgorICAgICAg
ICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIGRpc3BsYXlOYW1lXSk6
CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgdXNlckhh
bmRsZV0pOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
IF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXMgY29uc3QpOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTAxLTA2ICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBT
dXBwb3J0IENUQVAgQ2xpZW50IFBpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKaW5k
ZXggZGM0YzgwMzdhMzU2ODEzYmU1MmJjMzc5ZjQ4N2Y1YjU3OTFjOGU1Mi4uZDcwYTljY2Y4ZjM5
MWIwZGQ2MmMyYTExNGUxMTUyZjlmNmMwZDZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5oCkBAIC00Miw5ICs0Miw5IEBAIHB1YmxpYzoKICAgICBBcnJheUJ1ZmZlciogdXNlckhh
bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckhhbmRsZS5nZXQoKTsgfQogCiAgICAgdm9pZCBz
ZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9Ci0gICAgU3RyaW5n
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2b2lkIHNldERpc3BsYXlOYW1lKGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUpIHsgbV9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOyB9Ci0g
ICAgU3RyaW5nIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQor
ICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlO
YW1lOyB9CiAgICAgdm9pZCBzZXROdW1iZXJPZkNyZWRlbnRpYWxzKHNpemVfdCBudW1iZXJPZkNy
ZWRlbnRpYWxzKSB7IG1fbnVtYmVyT2ZDcmVkZW50aWFscyA9IG51bWJlck9mQ3JlZGVudGlhbHM7
IH0KICAgICBzaXplX3QgbnVtYmVyT2ZDcmVkZW50aWFscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
YmVyT2ZDcmVkZW50aWFsczsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5k
ZXggZmRiODFmNDEzNTUxZmZjMmNiZDFlMjdmMGI0MGQyNGI4NGRkODliZi4uOGRhMTNjNGIzM2M3
MDg5NDRhYjIxOGIzNjcwOGU3MTZjMDg0NTk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElP
YmplY3QuaApAQCAtMTgzLDYgKzE4Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKKyAgICAgICAgV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSwK
ICAgICAgICAgV2ViQXV0aGVudGljYXRpb25QYW5lbCwKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggNjQyZjZlZjRiZGM3YjM0MWY4MmJkNDY2M2Vh
M2QxOTMxZTg1MjBlNy4uYmYyNGRiNmFiOTU2MDY5MGRjODM1NDVlYzk5NjM4MTFlZTYyZDc4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtODgsNiArODgsNyBA
QAogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1N0b3Jl
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgi
CiAKQEAgLTM4OSw2ICszOTAsOSBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6
ZSwgVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDoKICAg
ICAgICAgd3JhcHBlciA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGFsbG9jXTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlOgorICAgICAgICB3cmFwcGVyID0gW19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UgYWxsb2NdOworICAgICAgICBicmVhazsKICNlbmRpZgogCiAgICAgY2FzZSBUeXBlOjpC
dW5kbGVGcmFtZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDMwNmNkMWU2OTM1NjYxYWQ0MWMwNjA5Mjg0OGJm
OWFmMzZiMWI3MjYuLmJlMzc0YzJhOTRlMjJlZTQ3ZDZiNDRlMzY3M2QxODlkMjE2MWM3YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dApAQCAtMzM4LDYgKzMzOCw3IEBAIFVJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1l
VGFzay5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKIFVJUHJvY2Vz
cy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
Y3BwCitVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Uu
Y3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCiBVSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2luZG93RmVh
dHVyZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg3NmFkZDEzNTQzZWU4ZmNlZWJh
NjM1YmE5OTkzNmVkN2M4NmM1Ni4uZTk5Mjc4MjI0ZmFjZTY0MjcyOWVmYWE3NjVkYzFmY2JmNjEw
ZmMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjc4LDYgKzI3OCw3IEBAIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VySW5pdGlhdGVkQWN0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHls
ZVNoZWV0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Zpc2l0ZWRMaW5rU3RvcmUubW0KK1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5t
bQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU2l6ZS5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50LmgKaW5kZXggMjE4MWQ4ZDU3NGQzZjU0YTZmYjg3
NTY5M2EwMjcyYmE0YzJlNTRiYy4uYTMwZGQ5NTIzMWRmNGY4YjFjNmE4YTFjYmI1NmUyNTY4ZDcw
MWI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNl
TG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJj
ZUxvYWRDbGllbnQuaApAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBzdHJ1
Y3QgUmVzb3VyY2VMb2FkSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NmI3YThmMWQzMjlhZTdjZTA2MWEyNmY4OGRlYTg3YTg1ZjYzODE3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1
ZGUgIkFQSURhdGEuaCIKKworbmFtZXNwYWNlIEFQSSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworUmVmPFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IFdlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkp
KTsKK30KKworV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6V2ViQXV0aGVudGlj
YXRpb25Bc3NlcnRpb25SZXNwb25zZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPiYmIHJlc3BvbnNlKQorICAgIDogbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNl
KSkKK3sKK30KKworV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6fldlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CisKK3N0YXRpYyB2b2lkIHJl
bGVhc2VVc2VySGFuZGxlKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAg
IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2U6OnVzZXJIYW5kbGUoKS4KKyAgICBzdGF0aWNfY2FzdDxBcnJheUJ1ZmZlcio+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKK30KKworUmVmUHRyPERhdGE+IFdlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OnVzZXJIYW5kbGUoKSBjb25zdAoreworICAgIFJlZlB0
cjxBUEk6OkRhdGE+IGRhdGE7CisgICAgaWYgKGF1dG8qIHVzZXJIYW5kbGUgPSBtX3Jlc3BvbnNl
LT51c2VySGFuZGxlKCkpIHsKKyAgICAgICAgdXNlckhhbmRsZS0+cmVmKCk7IC8vIEJhbGFuY2Vk
IGJ5IHJlbGVhc2VVc2VySGFuZGxlKCkKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXVzZXJIYW5kbGUtPmRhdGEoKSwg
dXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpLCByZWxlYXNlVXNlckhhbmRsZSwgdXNlckhhbmRsZSk7
CisgICAgfQorICAgIHJldHVybiBkYXRhOworfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40MTc2MjA4MDVkNDNkZjdkMDc2YjQ5ZTAwOGMyMTFjODYxZjUyOGNk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIERhdGE7CisKK2NsYXNzIFdlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxP
YmplY3Q6OlR5cGU6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IGNy
ZWF0ZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKyAg
ICB+V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSgpOworCisgICAgY29uc3QgV1RG
OjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLT5uYW1lKCk7IH0KKyAg
ICBjb25zdCBXVEY6OlN0cmluZyYgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3Bv
bnNlLT5kaXNwbGF5TmFtZSgpOyB9CisgICAgUmVmUHRyPERhdGE+IHVzZXJIYW5kbGUoKSBjb25z
dDsKKworICAgIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYg
cmVzcG9uc2UoKSB7IHJldHVybiBtX3Jlc3BvbnNlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZShSZWY8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKworICAgIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+IG1fcmVzcG9uc2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
UEkKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQu
aAppbmRleCAwMDYyZjlhN2Q5NzQ3MjY2ZjdmNjIyMWY0ZTc5ZDU4NTdmZmMyMzFjLi5iNzdlN2Vm
ODY4OThiZmEyZDY5MDc0M2Q2YzliYzA0ZGQ4NDU0NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50LmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVBhbmVsKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGNvbnN0IHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaXNtaXNzUGFuZWwoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkg
Y29uc3QgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlcyhjb25z
dCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYg
cmVzcG9uc2VzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlZjxXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0
IHsgY29tcGxldGlvbkhhbmRsZXIoKnJlc3BvbnNlcy5iZWdpbigpKTsgfQogICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdU
Rjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRs
ZXIoZW1wdHlTdHJpbmcoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2VzKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4+JiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhhbmRsZXIo
KnJlc3BvbnNlcy5iZWdpbigpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTJm
NWFmMDJkNDRlZGFhYzIwZTljODk0MmExYjUwMTE4Y2ZkNzM5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNT
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFj
ZSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIDogTlNPYmplY3QKKworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7
CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3MWYyMzY2NDAzMDU4Mzkw
MzRlMDkxODQ4NDdiOTdjZTFkOWFhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5tbQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCIK
KworI2ltcG9ydCAiV0tOU0RhdGEuaCIKKworQGltcGxlbWVudGF0aW9uIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKy0gKHZv
aWQpZGVhbGxvYworeworICAgIF9yZXNwb25zZS0+fldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoTlNTdHJpbmcgKilu
YW1lCit7CisgICAgcmV0dXJuIF9yZXNwb25zZS0+bmFtZSgpOworfQorCistIChOU1N0cmluZyAq
KWRpc3BsYXlOYW1lCit7CisgICAgcmV0dXJuIF9yZXNwb25zZS0+ZGlzcGxheU5hbWUoKTsKK30K
KworLSAoTlNEYXRhICopdXNlckhhbmRsZQoreworICAgIHJldHVybiB3cmFwcGVyKF9yZXNwb25z
ZS0+dXNlckhhbmRsZSgpKTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGlt
cGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJu
ICpfcmVzcG9uc2U7Cit9CisjZW5kaWYKKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmMzYw
MGZjOWYzMGM0OGU3ZGYyNmVkOWQwM2FhZTk1MDQ5MjFhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZUludGVybmFsLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJBUElXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xh
c3MgPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOworfTsKKworfQorCitA
aW50ZXJmYWNlIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKCkgPFdLT2Jq
ZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IF9yZXNwb25zZTsKK30KK0BlbmQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAppbmRleCA4NjgwNjIz
ZmM0OWUwN2FmYzMxYWFjNzYwZTViNmE0NGViZjJkMzA4Li45YjE5NmI2NTUzMDdhMjQyYzBiYTM2
NWUyMjYxNTYzMzdlNWI1NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTMxLDYg
KzMxLDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xhc3MgX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbDsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdCkgewpAQCAtNjksNiArNzAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwgKilwYW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOihfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKXVwZGF0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0
aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRpb25SZXN1bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKXBhbmVsOihf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdS
ZXRyaWVzOihOU1VJbnRlZ2VyKXJldHJpZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
U3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzOihOU0FycmF5IDwgX1dL
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3BvbnNlcyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZSAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
aW5kZXggNDQ3NGJhYzY0MjdkMjA5NmI0ZDEyYWQ0NWUwODcwYTVjYTAwOWZkOS4uMmViMzFlODEy
Yzk1OThlODk4ODQwYjk1NThjZTMzMmYyZWQ2NzlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0KQEAgLTI0LDEwICsyNCwxMCBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIgogI2ltcG9ydCAiX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbEludGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkF1dGhlbnRp
Y2F0aW9uQ29uc3RhbnRzLmg+CiAKKyNpbXBvcnQgIldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQuaCIKKyNpbXBvcnQgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGltcGxlbWVudGF0aW9uIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UmVzb3VyY2VMb2FkRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jl
c291cmNlTG9hZERlbGVnYXRlLmgKaW5kZXggZTgzNTMwNDEzYjFkZWU1ZDhhZDA0ZWYyYzE1Zjc3
YzYxMTZkMmYyYS4uYTQ3YjI5MjZjMWQzNjcyNWFjMzI4MTExYmNkZmRkNWYxYTZlNDBkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCitAY2xhc3MgV0tXZWJWaWV3OworCiBAcHJvdG9jb2wg
X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBBUEkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRl
eCA2Yjc4MDBiYzk5MDBmZTYwOTAzMWExM2Y1YTBlZDlhZGM0ZjZlYjIwLi5kNDI2Mjg1M2M1MGE2
MGZiYWI3MTUzMDdkMjUwZjBjOGUwMWUzNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpAQCAtMjYsNiArMjYsOCBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgog
CisjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW1wb3J0ICJXS05T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZERl
bGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRJbmZvSW50ZXJuYWwuaCIKIApAQCAt
ODAsNyArODIsNyBAQCB2b2lkIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGll
bnQ6OmRpZFNlbmRSZXF1ZXN0KFdlYktpdDo6UmVzb3VyY2VMbwogICAgIGlmICghZGVsZWdhdGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2Fk
RGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6
UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRlKFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkU2Vu
ZFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpXTsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERl
bGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXNvdXJjZUxvYWQ6d3JhcHBlcihBUEk6OlJl
c291cmNlTG9hZEluZm86OmNyZWF0ZShXVEZNb3ZlKGxvYWRJbmZvKSkuZ2V0KCkpIGRpZFNlbmRS
ZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5
OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6
OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6OlJl
c291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBjb25zdApAQCAtOTIs
NyArOTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6
OmRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViS2l0OgogICAgIGlmICghZGVsZWdhdGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVs
ZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVz
b3VyY2VMb2FkSW5mbzo6Y3JlYXRlKFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbjpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgbmV3UmVxdWVzdDpyZXF1
ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9k
eSldOworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJW
aWV3LmdldCgpLmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5m
bzo6Y3JlYXRlKFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbjpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVx
dWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSld
OwogfQogCiB2b2lkIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvci5oCmluZGV4IDMyZmM3ZDJkN2ZmY2Q5MzE2ZmE2NjNjNjBhMjVmYjZkYzFiYTEx
MDYuLmQzODIyZTUzMDU5NWYzODEwNTY4MmE5NjU0MzUyYzgzZGNlNjRkN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVzcG9uZFJlY2VpdmVkKFJlc3BvbmQmJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZG93
bmdyYWRlKEF1dGhlbnRpY2F0b3IqIGlkLCBSZWY8QXV0aGVudGljYXRvcj4mJiBkb3duZ3JhZGVk
QXV0aGVudGljYXRvcikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRvclN0
YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlcyhjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mKT4m
JikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNv
bnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UmKT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBp
bih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3Ry
aW5nJik+JiYpID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5j
cHAKaW5kZXggOWNkNDU0N2M4OGFlODQ2ZTlmNTdmODlhNThjM2ZjNWJlYzJiNjE1MS4uNzk1M2Y2
NTAwNWFhNDk2NGUxZGI3NGNiN2JiNTBiYWQxOTc1YTRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1h
bmFnZXI6OmF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVz
IHN0CiAgICAgICAgIHBhbmVsLT5jbGllbnQoKS51cGRhdGVQYW5lbChzdGF0dXMpOwogfQogCi12
b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXMoY29uc3Qg
SGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJl
c3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNvbnN0IEhhc2hT
ZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25z
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8q
IHBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWwuZ2V0KCkpCiAgICAgICAgIHBhbmVs
LT5jbGllbnQoKS5zZWxlY3RBc3NlcnRpb25SZXNwb25zZXMocmVzcG9uc2VzLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRleCA5
ZmQ1MjNkNDA3MWYxNzg3MjJjNGZmMWY5ZDUyNjQ3MTE4Njg3OWZlLi44OGY4YWE1NTdiYzIxNzgy
MzVkNGEyNmIwNzNkNGEyNzEwMWU0OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbmRSZWNlaXZlZChS
ZXNwb25kJiYpIGZpbmFsOwogICAgIHZvaWQgZG93bmdyYWRlKEF1dGhlbnRpY2F0b3IqIGlkLCBS
ZWY8QXV0aGVudGljYXRvcj4mJiBkb3duZ3JhZGVkQXV0aGVudGljYXRvcikgZmluYWw7CiAgICAg
dm9pZCBhdXRoZW50aWNhdG9yU3RhdHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1cykg
ZmluYWw7Ci0gICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZXMoY29uc3QgSGFzaFNldDxS
ZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U+Jik+JiYpIGZpbmFsOworICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNv
bnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UmKT4mJikgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90
IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikg
ZmluYWw7CiAKICAgICAvLyBPdmVycmlkZW4gYnkgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
CmluZGV4IDE0OTk0NjZhMWNlY2E4ZTlmZDkwZjljZjYxNDI1NjU5MDJhODhmYmYuLjc5NTgyZTVl
NjUxZWIxNDc5OTEzOGRkMDU1YjYyNjRiZWIyYTA4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVBhbmVsKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIGRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3Vs
dCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgY29uc3Qg
ZmluYWw7CiAKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICptX3BhbmVsOwogICAgIFdl
YWtPYmpDUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gbV9kZWxl
Z2F0ZTsKQEAgLTU4LDYgKzU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBwYW5lbFVwZGF0
ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwgOiAxOwogICAgICAgICBib29sIHBhbmVsRGlzbWlzc1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0IDogMTsKICAgICAgICAgYm9vbCBwYW5lbFJl
cXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0cmllc0NvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAg
ICAgYm9vbCBwYW5lbFNlbGVjdEFzc2VydGlvblJlc3BvbnNlc0NvbXBsZXRpb25IYW5kbGVyIDog
MTsKICAgICB9IG1fZGVsZWdhdGVNZXRob2RzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KaW5kZXggN2YxNTdiZDk4NDY5
Y2Q2NjkxZmUxMDBmM2UzNWE0MTk3MzhmNWU5MS4uMjVhMDAyZjU2NmVhYzFlM2ZjODY4NTcyOWJk
OTc0MTk0MzAxZWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50Lm1tCkBAIC0yOCw4ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKFdF
Ql9BVVRITikKIAorI2ltcG9ydCAiQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAi
V2ViQXV0aGVudGljYXRpb25GbGFncy5oIgorI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29w
Lmg+CkBAIC00Myw2ICs0NSw3IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQoX1dLV2ViQXV0aGVudGljYXRpb25QCiAgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMucGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6dXBkYXRlV2ViQXV0aGVudGljYXRp
b25QYW5lbDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbERpc21pc3NXZWJBdXRoZW50
aWNhdGlvblBhbmVsV2l0aFJlc3VsdCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHBhbmVsOmRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDopXTsK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0cmll
c0NvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IocGFuZWw6cmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOmNvbXBsZXRpb25IYW5kbGVy
OildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Vz
Q29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXM6Y29tcGxldGlvbkhhbmRsZXI6KV07CiB9
CiAKIFJldGFpblB0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiA+IFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRlbGVnYXRlKCkKQEAgLTE0MSw2ICsxNDQsNDIg
QEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpyZXF1ZXN0UGluKHVpbnQ2NF90
IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGUKICAgICB9KTsKIH0KIAordm9pZCBXZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXMoY29uc3QgSGFzaFNl
dDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNl
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBBU1NF
UlQoIXJlc3BvbnNlcy5pc0VtcHR5KCkpOworICAgIGF1dG8gbnNSZXNwb25zZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6cmVzcG9uc2VzLnNpemUo
KV0pOworICAgIGZvciAoYXV0byYgcmVzcG9uc2UgOiByZXNwb25zZXMpCisgICAgICAgIFtuc1Jl
c3BvbnNlcyBhZGRPYmplY3Q6d3JhcHBlcihBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZS5jb3B5UmVmKCkpKV07CisKKyAgICAvLyBDYWxsIGRl
bGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFu
Y2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCisgICAgLy8gb2YgdGhl
IGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgorICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIG5zUmVzcG9u
c2VzID0gV1RGTW92ZShuc1Jlc3BvbnNlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBf
YXBpT2JqZWN0XSkucmVzcG9uc2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2VzQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSY+KFtb
bnNSZXNwb25zZXMgZmlyc3RPYmplY3RdIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBtX2Rl
bGVnYXRlLmdldCgpOworICAgICAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSkucmVzcG9u
c2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNo
ZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXM6Y29tcGxldGlvbkhh
bmRsZXI6KSk7CisgICAgICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHNlbGVjdEFzc2VydGlv
blJlc3BvbnNlczpuc1Jlc3BvbnNlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlICpyZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UmPihbcmVzcG9uc2UgX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAg
ICAgICB9KS5nZXQoKV07CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGlj
YXRvci5jcHAKaW5kZXggM2MzZjk2MjE4YWJiZTVmNmMxMjIxMDk5NzQ5ZGU5NzRjZWVhODE2OC4u
YjI0YzM0NWEyZjZmNGI2ZDMxYTA2ZTg2OGUzZmRkNmJkYjlmZjQ0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGlj
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKQEAgLTE1MSwxMSArMTUxLDExIEBAIHZvaWQgQ3Rh
cEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0TmV4dEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNl
aXZlZChWZWN0b3I8dWluCiAKICAgICBpZiAoIW1fcmVtYWluaW5nQXNzZXJ0aW9uUmVzcG9uc2Vz
KSB7CiAgICAgICAgIGlmIChhdXRvKiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKLSAg
ICAgICAgICAgIG9ic2VydmVyLT5zZWxlY3RBc3NlcnRpb25SZXNwb25zZXMobV9hc3NlcnRpb25S
ZXNwb25zZXMsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGNvbnN0IFJl
ZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiByZXNwb25zZSkgeworICAgICAgICAg
ICAgb2JzZXJ2ZXItPnNlbGVjdEFzc2VydGlvblJlc3BvbnNlcyhtX2Fzc2VydGlvblJlc3BvbnNl
cywgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlJiByZXNwb25zZSkgewogICAgICAgICAgICAgICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuUmVz
cG9uc2UgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy50YWtlKHJlc3BvbnNlKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIHJldHVyblJlc3BvbnNlID0gbV9hc3NlcnRpb25SZXNwb25zZXMudGFrZShjb25z
dF9jYXN0PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSo+KCZyZXNwb25zZSkpOwogICAg
ICAgICAgICAgICAgIGlmICghcmV0dXJuUmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXR1cm5SZXNw
b25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCmluZGV4IDI1ZmU5MDMy
ZjhlNDA0ZWJmN2I1YTkxN2JkZDgyZGRmZDQ3YmNiOWYuLjZlM2RlMDExY2M0MDU4N2JhZmQ4OGFk
YWVjNTZlZDY2NDdlYmVkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgK
QEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFJldHJpZXMoKTsKICAgICB2
b2lkIGNvbnRpbnVlR2V0S2V5QWdyZWVtZW50QWZ0ZXJHZXRSZXRyaWVzKFZlY3Rvcjx1aW50OF90
PiYmKTsKICAgICB2b2lkIGNvbnRpbnVlUmVxdWVzdFBpbkFmdGVyR2V0S2V5QWdyZWVtZW50KFZl
Y3Rvcjx1aW50OF90PiYmLCB1aW50NjRfdCByZXRyaWVzKTsKLSAgICB2b2lkIGNvbnRpbnVlR2V0
UGluVG9rZW5BZnRlclJlcXVlc3RQaW4oY29uc3QgU3RyaW5nJiBwaW4sIGNvbnN0IENyeXB0b0tl
eUVDJik7CisgICAgdm9pZCBjb250aW51ZUdldFBpblRva2VuQWZ0ZXJSZXF1ZXN0UGluKGNvbnN0
IFN0cmluZyYgcGluLCBjb25zdCBXZWJDb3JlOjpDcnlwdG9LZXlFQyYpOwogICAgIHZvaWQgY29u
dGludWVSZXF1ZXN0QWZ0ZXJHZXRQaW5Ub2tlbihWZWN0b3I8dWludDhfdD4mJiwgY29uc3QgZmlk
bzo6cGluOjpUb2tlblJlcXVlc3QmKTsKIAogICAgIGJvb2wgdHJ5RG93bmdyYWRlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZmJk
YzI1NzVlNDQ4MTg1ZTRiY2JjODQyZTRmN2E1NDQzMTNiNDM5Li5jZWUyMjJhM2ZhNDdjYTkwZDBi
MWJkYzU2ODBlMThhNDhjNDEyYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTUsNiArMTA5NSw5IEBACiAJCTU3N0ZGNzgyMjM0
NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzdGRjc4MTIzNDZFODFD
MDA0RURGQjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oICovOyB9OwogCQk1
NzdGRjc4NTIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc3RkY3ODMy
MzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCAqLzsgfTsK
IAkJNTc4REMyOTgyMTU1QTAwMjAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc4REMy
OTcyMTU1QTAwMTAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oICovOyB9
OworCQk1NzlGMUJGNjIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTc5RjFCRjQyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1NzlGMUJGOTIzQzgwRUM2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzlGMUJGODIzQzgwRUM2MDBDN0Q0QjQgLyogX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmggKi87IH07CisJCTU3OUYxQkZD
MjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzlGMUJG
QTIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5oICovOyB9OwogCQk1N0FDOEY1MDIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdBQzhGNEUy
MTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTdCNEI0NjAyMEI1
MDRBQzAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjRC
NDVFMjBCNTA0QUIwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBD
Q29uc3RhbnRzLmggKi87IH07CiAJCTU3QjgyNjQxMjMwNEVCM0UwMEI3MkVCMCAvKiBOZWFyRmll
bGRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
QjgyNjQwMjMwNEVCM0UwMEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCAqLzsgfTsKQEAgLTM3NTUs
NiArMzc1OCwxMSBAQAogCQk1NzdGRjc4MzIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3N0ZGNzg0MjM0NkVDQUEw
MDRFREZCOSAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTc4REMyOTcyMTU1QTAwMTAwNzRFODE1IC8qIExvY2FsQXV0aGVudGlj
YXRpb25Tb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExp
bmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRjQyM0M4MERCNjAwQzdE
NEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJGNTIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU3OUYxQkY4MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU3OUYxQkZBMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5
RjFCRkIyM0M4MTFDRjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QUM4RjRFMjE3
RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZENvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdBQzhGNEYyMTdGRUVEOTAw
NTU0MzhDIC8qIEhpZENvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIaWRDb25u
ZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I0QjQ1RDIwQjUwNEFC
MDBENEFENzkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4NDUsNiArNjg1Myw5IEBACiAJCQkJMUE4
MUIzN0YxOEJENjZBRDAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCAqLywKIAkJCQkx
QTgxQjM3RTE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZS5tbSAqLywKIAkJ
CQkxQTgxQjM4NDE4QkQ2NzNBMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFs
LmggKi8sCisJCQkJNTc5RjFCRjQyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLywKKwkJCQk1NzlGMUJGNTIzQzgwREI2MDBDN0Q0QjQg
LyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbSAqLywKKwkJCQk1NzlG
MUJGODIzQzgwRUM2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZUludGVybmFsLmggKi8sCiAJCQkJNTc0NzI4Q0YyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwuaCAqLywKIAkJCQk1NzQ3MjhEMDIzNDU2RTk4MDAxNzAwQUYg
LyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSAqLywKIAkJCQk1NzQ3MjhEMzIzNDU3MEFF
MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFsLmggKi8sCkBAIC04
NTI2LDYgKzg1MzcsOCBAQAogCQkJCTdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2Vy
U2NyaXB0LmggKi8sCiAJCQkJMkQ4Nzg2MjExQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHls
ZVNoZWV0LmNwcCAqLywKIAkJCQkyRDg3ODYyMjFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0
eWxlU2hlZXQuaCAqLywKKwkJCQk1NzlGMUJGQjIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAgKi8sCisJCQkJNTc5RjFCRkEyM0M4MTFD
RjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLywK
IAkJCQk1N0VCRTI2OTIzNDY3NkM1MDA4RDhBRjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bC5jcHAgKi8sCiAJCQkJNTdFQkUyNjgyMzQ2NzZDNTAwOEQ4QUY5IC8qIEFQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaCAqLywKIAkJCQk1NzdGRjc4MTIzNDZFODFDMDA0RURGQjkgLyogQVBJV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oICovLApAQCAtOTg5Niw2ICs5OTA5LDggQEAKIAkJ
CQkyRDg3ODYyMDFCREI1N0Y1MDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4MUIzODExOEJENjZBRDAwMDdGREFDIC8qIF9XS1Zpc2l0
ZWRMaW5rU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODFCMzg1MThCRDY3M0EwMDA3RkRB
QyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3
OUYxQkY2MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzlGMUJGOTIzQzgwRUM2MDBDN0Q0QjQgLyog
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NzQ3MjhEMTIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc0NzI4RDQyMzQ1NzBBRTAwMTcwMEFGIC8q
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFFMjg2NzgxQzdFNzY1MTAwNjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC05OTc4LDYgKzk5OTMsNyBAQAogCQkJCTJEODc4NjI0MUJEQjU4RkYwMEQwMkFC
QiAvKiBBUElVc2VyU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVFMUFGRUQxNkIy
MTAxNzAwNkNDMUYyIC8qIEFQSVdlYkFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1RTFB
RkVGMTZCMjEwMjkwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTU3OUYxQkZDMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0VCRTI2QTIzNDY3NkM1
MDA4RDhBRjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTc3RkY3ODIyMzQ2RTgxQzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTI4Njg0MUM3RjkzODYwMDY5QUM0RiAvKiBB
UElXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGE5NmIyMDRkYWJjZjY0YjYwNjg1NmM1
ZTYzMmE0ZGIzMWY2MWMwOS4uMzZlZDdlZmFjYTRmYTEzN2ZmNzIyZmYwODlmOWI3ZDQ4YWI2NTY0
MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIwLTAxLTEwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgU1BJIHRvIHRlbGwgVUkgY2xpZW50
cyB0byBzZWxlY3QgYXNzZXJ0aW9uIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
ODQ5NTczMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxE
ZWxlZ2F0ZSBwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXM6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhp
ZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlk
Lmh0bWw6CisKIDIwMjAtMDEtMDYgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgQ1RBUCBDbGllbnQgUGluCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDkxZWJlZWQ1ZDkxYzUxMDMwYTk2Y2M3MTMyNDk5YzNmOTNjZjI5ODAu
LmRlMzFiMWVmY2Q5NzJkOTJiYjA0M2U3ODg0NzRiMzJhZjdlNTk1MGIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zNjgsNiArMzY4LDcgQEAKIAkJNTc5N0ZFMzMxRUIxNUFCMTAwQjJGNEEw
IC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5N0ZFMzIxRUIxNUE4OTAw
QjJGNEEwIC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwgKi87IH07CiAJ
CTU3OTgzMzdFMjM2MDE5QTQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRp
b24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sICovOyB9OwogCQk1Nzk4MzM5MjIzNjhGQTM3MDA4
RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRh
Z3MuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Nzk4MzM3QjIzNUVCNjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCAqLzsgfTsKKwkJNTc5RjFDMDEyM0M5M0FG
NTAwQzdENEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBs
ZS1hY2NvdW50cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3OUYxQkZGMjNDOTJGRDMwMEM3RDRCNCAvKiB3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCAqLzsgfTsKIAkJNTdB
Nzk4NTcyMjRBQjM0RTAwQTdGNkYxIC8qIFdlYkNyeXB0b01hc3RlcktleS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QTc5ODU2MjI0QUIzNEUwMEE3
RjZGMSAvKiBXZWJDcnlwdG9NYXN0ZXJLZXkubW0gKi87IH07CiAJCTU3QzNGQTY2MUY3QzI0OEYw
MDlENEI4MCAvKiBXZWFrUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDQjlCQzM3MUE2NzQ4MjMwMEZFNTY3OCAvKiBXZWFrUHRyLmNwcCAqLzsg
fTsKIAkJNTdDNjI0NEUyMzQ2QkNGQTAwMzgzRkU3IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0M2
MjQ0RDIzNDZCQ0ZBMDAzODNGRTcgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSAqLzsg
fTsKQEAgLTE0ODQsNiArMTQ4NSw3IEBACiAJCQkJMkVCRDlEMEEyMTM0NzMwRDAwMkRBNzU4IC8q
IHZpZGVvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0Q1Nzc3OTkyMTFDRTBFNDAw
MUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
NTc2NjNERjMyMzU3RTQ4OTAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLWhpZC1jYW5jZWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk1NzlGMUMwMTIz
QzkzQUY1MDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11
bHRpcGxlLWFjY291bnRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc3NDU0RDAy
MzU5QjM3ODAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1u
by1jcmVkZW50aWFscy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3MEQyNkZDMjND
M0Y4NzAwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGlu
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2NjNERUMyMzRGMUY5MzAwRTg1RTA5
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLApAQCAtMTk0OSw2ICsxOTUxLDcgQEAKIAkJNTc5ODMzN0IyMzVFQjY1QzAwOEU1
NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdz
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWhpZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndl
Yi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Nzk4RTJBRjFDQUY1QzI4MDBDNUNCQTAgLyogUHJvdmlzaW9uYWxV
UkxOb3RDaGFuZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
cm92aXNpb25hbFVSTE5vdENoYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTc5RjFCRkYyM0M5MkZEMzAwQzdENEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNh
dGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdBNzk4NTYyMjRBQjM0RTAwQTdGNkYxIC8qIFdlYkNyeXB0
b01hc3RlcktleS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNyeXB0b01hc3RlcktleS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDNjI0NEQyMzQ2QkNGQTAwMzgzRkU3
IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1N0M2MjQ0RjIzNDZDMUVDMDAzODNGRTcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1
MDEsNiArMzUwNCw3IEBACiAJCQkJQ0Q1Nzc3OUIyMTFDRTZDRTAwMUIzNzFFIC8qIHZpZGVvLXdp
dGgtYXVkaW8tYW5kLXdlYi1hdWRpby5odG1sICovLAogCQkJCUNENTc3Nzk4MjExQ0RFOEYwMDFC
MzcxRSAvKiB3ZWItYXVkaW8tb25seS5odG1sICovLAogCQkJCTU3NjYzREYyMjM1N0U0NUQwMEU4
NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsLmh0bWwg
Ki8sCisJCQkJNTc5RjFCRkYyM0M5MkZEMzAwQzdENEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1n
ZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sICovLAogCQkJCTU3NzQ1NENG
MjM1OUIzMzgwMDhFMUVENyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQt
bm8tY3JlZGVudGlhbHMuaHRtbCAqLywKIAkJCQk1NzBEMjZGQjIzQzNGODY1MDBENUNGNjcgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sICovLAogCQkJCTU3
NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1oaWQuaHRtbCAqLywKQEAgLTQ4NzAsNyArNDg3NCw2IEBACiAJCQkJMkQyQkVCMkQyMjMyNEU1
RjAwNTU0NENBIC8qIFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0UwQzQxRDBBNjU0MjAwRkVCQ0YzIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXli
YWNrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJl
c2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNEMjdB
MUMxMjNDNjYxRUQwMDZFMTFERCAvKiBXS1dlYlZpZXdQYXVzZVBsYXlpbmdBdWRpb1Rlc3RzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEYxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVdp
bmRvd0FmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCN0FGREMyM0M0NTI5NzAw
RTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFD
OEUxQTUxRjI2QUY0QzAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gaW4gU291
cmNlcyAqLywKQEAgLTUwNTIsNiArNTA1NSw3IEBACiAJCQkJRDM0RTA4NzYxRTRFNDJFMTAwNUZG
MTRBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRGQTkx
ODExRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDQUNBREExMjMwNjIwQUUwMDA3RDU0QyAvKiBXS1dlYlZpZXdPcGFxdWUu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDI3QTFDMTIzQzY2MUVEMDA2RTExREQgLyogV0tXZWJW
aWV3UGF1c2VQbGF5aW5nQXVkaW9UZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMDFEMDZF
MjMyMThGRUUwMDM5QUEzQSAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTM3QTlEQkU5MjEzQjRDOTMwMEQyNjFBMiAvKiBXS1dlYlZpZXdTZXJ2ZXJUcnVz
dEtWQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRjU2REE5MUU1RjkxOUQwMDNFREU4NCAvKiBX
S1dlYlZpZXdTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCmluZGV4IDBjYjI0NzhkYzliMTljN2FhYTIxNGM4MzhhZmZiYjNjMWMyYWZk
M2QuLmZjNTZkNTc5MWY5Zjg4OWQ1NzFjNzFmOTY5MzUwNzlkODVhYzViMjEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTM1LDggKzM1LDEwIEBACiAjaW1wb3J0IDxX
ZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdh
dGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oPgor
I2ltcG9ydCA8V2ViS2l0L19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg+CiAjaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBzdGF0aWMgYm9vbCB3ZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmFuID0gZmFsc2U7CkBAIC00Niw2ICs0OCw3IEBAIHN0YXRpYyBib29s
IHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50ID0gZmFs
c2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTm9DcmVkZW50aWFs
c0ZvdW5kID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2Vs
SW1tZWRpYXRlbHkgPSBmYWxzZTsKIHN0YXRpYyBTdHJpbmcgd2ViQXV0aGVudGljYXRpb25QYW5l
bFBpbjsKK3N0YXRpYyBCT09MIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9
IE5POwogCiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgOiBO
U09iamVjdCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPgogQGVuZApAQCAtOTEs
NiArOTQsMjAgQEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBh
bmVsIHJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczoKICAgICBjb21wbGV0aW9uSGFuZGxl
cih3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluKTsKIH0KIAorLSAodm9pZClwYW5lbDooX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlczooTlNB
cnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25z
ZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBFWFBFQ1RfRVEocmVzcG9u
c2VzLmNvdW50LCAydWwpOworICAgIGZvciAoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZSAqcmVzcG9uc2UgaW4gcmVzcG9uc2VzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFty
ZXNwb25zZS5uYW1lIGlzRXF1YWw6QCJqb2hucHNtaXRoQGV4YW1wbGUuY29tIl0gfHwgW3Jlc3Bv
bnNlLm5hbWUgaXNFcXVhbDpAIiJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNlLmRp
c3BsYXlOYW1lIGlzRXF1YWw6QCJKb2huIFAuIFNtaXRoIl0gfHwgW3Jlc3BvbnNlLmRpc3BsYXlO
YW1lIGlzRXF1YWw6QCIiXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtbcmVzcG9uc2UudXNlckhh
bmRsZSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0gaXNFcXVhbDpAIk1JSUJrekND
QVRpZ0F3SUJBakNDQVpNd2dnRTRvQU1DQVFJd2dnR1RNSUk9Il0gfHwgIXJlc3BvbnNlLnVzZXJI
YW5kbGUpOworICAgIH0KKworICAgIGF1dG8gaW5kZXggPSB3ZWFrUmFuZG9tVWludDMyKCkgJSAy
OworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9IHJlc3BvbnNlc1tp
bmRleF0udXNlckhhbmRsZSA/IE5PIDogWUVTOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3Bv
bnNlc1tpbmRleF0pOworfQorCiBAZW5kCiAKIEBpbnRlcmZhY2UgVGVzdFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxGYWtlRGVsZWdhdGUgOiBOU09iamVjdCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bERlbGVnYXRlPgpAQCAtODcyLDYgKzg4OSw0MCBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIEdldEFzc2VydGlvblBpbikKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2Nl
ZWRlZCEiXTsKIH0KIAorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNdWx0aXBsZUFjY291
bnRzTnVsbERlbGVnYXRlKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0
ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRo
ZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cyIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisK
KyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3Rf
Y29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldp
dGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJl
OndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICBbZGVsZWdhdGUgc2V0SXNOdWxsOnRydWVdOworICAgIFt3ZWJWaWV3IHNldFVJ
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgW3dlYlZpZXcg
d2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRp
b25QYW5lbCwgTXVsdGlwbGVBY2NvdW50cykKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0
cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAg
W1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVu
dGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2Nl
ZWRlZCEiXTsKKyAgICBFWFBFQ1RfRVEoW1t3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJ1c2VySGFuZGxlIl0gaXNFcXVhbFRvU3RyaW5nOkAiPG51bGw+Il0sIHdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQt
bXVsdGlwbGUtYWNjb3VudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjM3ZTQyMDc5NWZkNTY3N2JkNTBm
MTFkZDU0ZWE2MDQyNDlhZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQt
bXVsdGlwbGUtYWNjb3VudHMuaHRtbApAQCAtMCwwICsxLDU2IEBACis8aW5wdXQgdHlwZT0idGV4
dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgY29uc3QgdGVzdEFzc2VydGlvbk1lc3NhZ2VM
b25nQmFzZTY0ID0KKyAgICAgICAgIkFLVUJvbUpwWkZoQUtBaXR6dWorVHNsemVsZjMvdlp3SUd0
RFFOZ29LZUZkNW9FaWVZemh5ekE2NXNhZjB0SzIiICsKKyAgICAgICAgIncvbW9vYTd0UXRHZ0Rk
d1pJak9oamN1WjBwUTFham9FNEdSMGVYQmxhbkIxWW14cFl5MXJaWGtDV0NWR3pIKzUiICsKKyAg
ICAgICAgIlo1MVZzdHVRa3VISTJlWGgwQ3QxZ1BDMGdTeDNDV0xoNUk5YTJBRUFBQUJRQTFoSE1F
VUNJUUNTRlR1dUJXZ0IiICsKKyAgICAgICAgIjQvRjBWQjdEbFVWTTA5SUhQbXhlMU16SFV3Um9D
UlpiQ0FJZ0dLb3Y2eG9BeDJNRWY2LzZxTnM4T3V0emhQMkMiICsKKyAgICAgICAgIlFvSjFMN0Zl
NjRHOXVCY0VwR0pwWkZnZ01JSUJrekNDQVRpZ0F3SUJBakNDQVpNd2dnRTRvQU1DQVFJd2dnR1Qi
ICsKKyAgICAgICAgIk1JSmthV052Ym5nb2FIUjBjSE02THk5d2FXTnpMbUZqYldVdVkyOXRMekF3
TDNBdllVSnFhbXB3Y1ZCaUxuQnUiICsKKyAgICAgICAgIloyUnVZVzFsZG1wdmFHNXdjMjFwZEdo
QVpYaGhiWEJzWlM1amIyMXJaR2x6Y0d4aGVVNWhiV1Z0U205b2JpQlEiICsKKyAgICAgICAgIkxp
QlRiV2wwYUFVQyI7CisgICAgY29uc3QgdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjQgPQorICAg
ICAgICAiQUtNQm9tSnBaRmhBS0FpdHp1aitUc2x6ZWxmMy92WndJR3REUU5nb0tlRmQ1b0VpZVl6
aHl6QTY1c2FmMHRLMiIgKworICAgICAgICAidy9tb29hN3RRdEdnRGR3WklqT2hqY3VaMHBRMWFq
b0U0R1IwZVhCbGFuQjFZbXhwWXkxclpYa0NXQ1ZHekgrNSIgKworICAgICAgICAiWjUxVnN0dVFr
dUhJMmVYaDBDdDFnUEMwZ1N4M0NXTGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NGVHV1QldnQiIg
KworICAgICAgICAiNC9GMFZCN0RsVVZNMDlJSFBteGUxTXpIVXdSb0NSWmJDQUlnR0tvdjZ4b0F4
Mk1FZjYvNnFOczhPdXR6aFAyQyIgKworICAgICAgICAiUW9KMUw3RmU2NEc5dUJjPSI7CisgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgcGF5
bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25NZXNzYWdlTG9uZ0Jhc2U2NCwgdGVzdEFzc2VydGlv
bk1lc3NhZ2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUo
KCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBieXRlc1Rv
SGV4U3RyaW5nKGJ5dGVzKQorICAgIHsKKyAgICAgICAgaWYgKCFieXRlcykKKyAgICAgICAgICAg
IHJldHVybiBudWxsOworCisgICAgICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpOwor
ICAgICAgICB2YXIgaGV4Qnl0ZXMgPSBbXTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgYnl0ZVN0cmluZyA9IGJ5dGVz
W2ldLnRvU3RyaW5nKDE2KTsKKyAgICAgICAgICAgIGlmIChieXRlU3RyaW5nLmxlbmd0aCA8IDIp
CisgICAgICAgICAgICAgICAgYnl0ZVN0cmluZyA9ICIwIiArIGJ5dGVTdHJpbmc7CisgICAgICAg
ICAgICBoZXhCeXRlcy5wdXNoKGJ5dGVTdHJpbmcpOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGhleEJ5dGVzLmpvaW4oIiIpOworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7Cisg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJh
eSgxNiksCisgICAgICAgICAgICB0aW1lb3V0OiAxMDAwCisgICAgICAgIH0KKyAgICB9OworCisg
ICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4g
eworICAgICAgICB1c2VySGFuZGxlID0gYnl0ZXNUb0hleFN0cmluZyhjcmVkZW50aWFsLnJlc3Bv
bnNlLnVzZXJIYW5kbGUpOworICAgICAgICAvLyBjb25zb2xlLmxvZygiU3VjY2VlZGVkISIpOwor
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZSgiU3VjY2VlZGVkISIpOworICAgIH0sIGVycm9yID0+IHsKKyAgICAgICAgLy8gY29uc29s
ZS5sb2coZXJyb3IubWVzc2FnZSk7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRs
ZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGVycm9yLm1lc3NhZ2UpOworICAgIH0pOworPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtaGlkLmh0bWwKaW5kZXggNWI2YWViZWJmMTI0YjEwMzllZDA3OTRlZDIyZDNkYjY4ZWEz
NGFmYy4uZTk4MWE3MGY5OTcxOTE1NWQwZmIzZTc5OGU1NjE1MmFmM2I4Njg3OCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRp
b24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRt
bApAQCAtMzksNyArMzksNyBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIGNoYWxsZW5n
ZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAogICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sg
dHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgdGltZW91dDogMTAw
CisgICAgICAgICAgICB0aW1lb3V0OiAxMDAsCiAgICAgICAgIH0KICAgICB9OwogCg==
</data>
<flag name="review"
          id="403356"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387689</attachid>
            <date>2020-01-14 12:22:41 -0800</date>
            <delta_ts>2020-01-14 16:23:49 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206112-20200114122241.patch</filename>
            <type>text/plain</type>
            <size>61145</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwZDVmOTAwODJkZjZhNjUx
YjY4N2I0ODJlODc0NDFiZTZhYzkyNTIuLjM1NmZlNDZlNmJlZGQyZTA4ODA4NTMxOGM3MTA3NTM3
YzQzMzA2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDEtMTAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBTUEkgdG8gdGVsbCBVSSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDk1NzMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGRlbGVnYXRlIG1ldGhvZCBpbiBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGUgdG8gdGVsbCBVSSBjbGllbnRzIHRvCisgICAgICAgIHNlbGVj
dCBhbiBhc3NlcnRpb24gcmVzcG9uc2Ugd2hlbiBtdWx0aXBsZSBhcmUgcmV0dXJuZWQgZnJvbSBh
biBhdXRoZW50aWNhdG9yLiBIZXJlIGlzIHRoZSBTUEk6CisgICAgICAgIEBwcm90b2NvbCBfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2JqZWN0PgorICAgICAgICBAb3B0aW9u
YWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Ug
KikpY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIC4uLgorICAgICAgICBAZW5kCisKKyAgICAg
ICAgQSBuZXcgaW50ZXJmYWNlIGlzIGludHJvZHVjZWQgdG8gcmVwcmVzZW50IGFuIGF1dGhlbnRp
Y2F0b3IgYXNzZXJ0aW9uIHJlc3BvbnNlOgorICAgICAgICBAaW50ZXJmYWNlIF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgOiBOU09iamVjdAorICAgICAgICBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOworICAgICAgICBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsK
KyAgICAgICAgQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVz
ZXJIYW5kbGU7CisgICAgICAgIEBlbmQKKyAgICAgICAgT25seSBtZW1iZXJzIHRoYXQgY2FuIGFz
c2lzdCB1c2VycyB0byBtYWtlIGEgZGVjaXNpb24gYXJlIGV4cG9zZWQgdG8gVUkgY2xpZW50cy4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNw
cDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oLgorICAgICAgICAoQVBJOjpXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAgICAgICgt
W19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgZGVhbGxvY10pOgorICAgICAg
ICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIG5hbWVdKToKKyAgICAg
ICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBkaXNwbGF5TmFtZV0p
OgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIHVzZXJI
YW5kbGVdKToKKyAgICAgICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMS0wNiAg
Smlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0g
U3VwcG9ydCBDVEFQIENsaWVudCBQaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmlu
ZGV4IGRjNGM4MDM3YTM1NjgxM2JlNTJiYzM3OWY0ODdmNWI1NzkxYzhlNTIuLmQ3MGE5Y2NmOGYz
OTFiMGRkNjJjMmExMTRlMTE1MmY5ZjZjMGQ2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaApAQCAtNDIsOSArNDIsOSBAQCBwdWJsaWM6CiAgICAgQXJyYXlCdWZmZXIqIHVzZXJI
YW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0KCk7IH0KIAogICAgIHZvaWQg
c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQotICAgIFN0cmlu
ZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29uc3QgU3RyaW5nJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdm9pZCBzZXREaXNwbGF5TmFtZShjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lKSB7IG1fZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsgfQot
ICAgIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0K
KyAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TmFtZTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZDcmVkZW50aWFscyhzaXplX3QgbnVtYmVyT2ZD
cmVkZW50aWFscykgeyBtX251bWJlck9mQ3JlZGVudGlhbHMgPSBudW1iZXJPZkNyZWRlbnRpYWxz
OyB9CiAgICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251
bWJlck9mQ3JlZGVudGlhbHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmlu
ZGV4IGZkYjgxZjQxMzU1MWZmYzJjYmQxZTI3ZjBiNDBkMjRiODRkZDg5YmYuLjhkYTEzYzRiMzNj
NzA4OTQ0YWIyMThiMzY3MDhlNzE2YzA4NDU5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKQEAgLTE4Myw2ICsxODMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCisgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Us
CiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDY0MmY2ZWY0YmRjN2IzNDFmODJiZDQ2NjNl
YTNkMTkzMWU4NTIwZTcuLmJmMjRkYjZhYjk1NjA2OTBkYzgzNTQ1ZWM5OTYzODExZWU2MmQ3OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTg4LDYgKzg4LDcg
QEAKICNpbXBvcnQgIl9XS1VzZXJJbml0aWF0ZWRBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9y
ZUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5o
IgogCkBAIC0zODksNiArMzkwLDkgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNp
emUsIFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGU6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6CiAg
ICAgICAgIHdyYXBwZXIgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBhbGxvY107CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZToKKyAgICAgICAgd3JhcHBlciA9IFtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAogICAgIGNhc2UgVHlwZTo6
QnVuZGxlRnJhbWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzMDZjZDFlNjkzNTY2MWFkNDFjMDYwOTI4NDhi
ZjlhZjM2YjFiNzI2Li5iZTM3NGMyYTk0ZTIyZWU0N2Q2YjQ0ZTM2NzNkMTg5ZDIxNjFjN2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKQEAgLTMzOCw2ICszMzgsNyBAQCBVSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVt
ZVRhc2suY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCiBVSVByb2Nl
c3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0
LmNwcAorVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcAogVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdpbmRvd0Zl
YXR1cmVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA4NzZhZGQxMzU0M2VlOGZjZWVi
YTYzNWJhOTk5MzZlZDdjODZjNTYuLmU5OTI3ODIyNGZhY2U2NDI3MjllZmFhNzY1ZGMxZmNiZjYx
MGZjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI3OCw2ICsyNzgsNyBAQCBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVXNlckluaXRpYXRlZEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5
bGVTaGVldC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tWaXNpdGVkTGlua1N0b3JlLm1tCitV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Uu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVNpemUubW0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oCmluZGV4IDIxODFkOGQ1NzRkM2Y1NGE2ZmI4
NzU2OTNhMDI3MmJhNGMyZTU0YmMuLmEzMGRkOTUyMzFkZjRmOGIxYzZhOGExY2JiNTZlMjU2OGQ3
MDFiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJj
ZUxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3Vy
Y2VMb2FkQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Owogc3Ry
dWN0IFJlc291cmNlTG9hZEluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzc5NzZmZjUyZWE4ZTE1YWI2ODBhNTYzZTQzMTA4NjhlY2QzMTAw
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNs
dWRlICJBUElEYXRhLmgiCisKK25hbWVzcGFjZSBBUEkgewordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK1JlZjxXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlPiBXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4mJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2Up
KSk7Cit9CisKK1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OldlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4mJiByZXNwb25zZSkKKyAgICA6IG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25z
ZSkpCit7Cit9CisKK1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6On5XZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OworCitSZWZQdHI8RGF0YT4g
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6dXNlckhhbmRsZSgpIGNvbnN0Cit7
CisgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKKyAgICBpZiAoYXV0byogdXNlckhhbmRsZSA9
IG1fcmVzcG9uc2UtPnVzZXJIYW5kbGUoKSkgeworICAgICAgICB1c2VySGFuZGxlLT5yZWYoKTsK
KyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4odXNlckhhbmRsZS0+ZGF0YSgpKSwgdXNlckhhbmRsZS0+
Ynl0ZUxlbmd0aCgpLCBbXSAodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpIHsKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEFycmF5QnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0
YSkpLT5kZXJlZigpOworICAgICAgICB9LCB1c2VySGFuZGxlKTsKKyAgICB9CisgICAgcmV0dXJu
IGRhdGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQx
NzYyMDgwNWQ0M2RmN2QwNzZiNDllMDA4YzIxMWM4NjFmNTI4Y2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oPgorCituYW1lc3Bh
Y2UgQVBJIHsKKworY2xhc3MgRGF0YTsKKworY2xhc3MgV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZSBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworICAgIH5XZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlKCk7CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UtPm5hbWUoKTsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UtPmRpc3BsYXlOYW1lKCk7
IH0KKyAgICBSZWZQdHI8RGF0YT4gdXNlckhhbmRsZSgpIGNvbnN0OworCisgICAgY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJiByZXNwb25zZSgpIHsgcmV0dXJu
IG1fcmVzcG9uc2UuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlKFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U+JiYpOworCisgICAgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZT4gbV9yZXNwb25zZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDAwNjJmOWE3ZDk3
NDcyNjZmN2Y2MjIxZjRlNzlkNTg1N2ZmYzIzMWMuLjcwMTBkNzhkODY0ZmQwZGMyNDdlNmIwMmMx
ZTkyNzgwZTdkYTg1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaApAQCAtNTAsOCArNTAs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUGFuZWwoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblN0YXR1cykgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NQ
YW5lbChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KSBjb25zdCB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxl
cigqcmVzcG9uc2VzLmJlZ2luKCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQaW4odWlu
dDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihlbXB0eVN0cmluZygpKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0
PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYgcmVzcG9uc2Vz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IEFTU0VSVCghcmVz
cG9uc2VzLmlzRW1wdHkoKSk7IGNvbXBsZXRpb25IYW5kbGVyKCpyZXNwb25zZXMuYmVnaW4oKSk7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Uu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDEyZjVhZjAyZDQ0ZWRhYWMyMGU5Yzg5
NDJhMWI1MDExOGNmZDczOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJL
aXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgor
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZSA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSwgY29weSkgTlNEYXRhICp1c2VySGFuZGxlOworCitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NzFmMjM2NjQwMzA1ODM5MDM0ZTA5MTg0ODQ3Yjk3Y2UxZDlh
YWExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0KQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLV2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmgiCisKKyNpbXBvcnQgIldLTlNEYXRh
LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBf
cmVzcG9uc2UtPn5XZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlKCk7CisKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKKy0gKE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBf
cmVzcG9uc2UtPm5hbWUoKTsKK30KKworLSAoTlNTdHJpbmcgKilkaXNwbGF5TmFtZQoreworICAg
IHJldHVybiBfcmVzcG9uc2UtPmRpc3BsYXlOYW1lKCk7Cit9CisKKy0gKE5TRGF0YSAqKXVzZXJI
YW5kbGUKK3sKKyAgICByZXR1cm4gd3JhcHBlcihfcmVzcG9uc2UtPnVzZXJIYW5kbGUoKSk7Cit9
CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChB
UEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX3Jlc3BvbnNlOworfQorI2Vu
ZGlmCisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjM2MDBmYzlmMzBjNDhlN2RmMjZlZDlk
MDNhYWU5NTA0OTIxYTdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5h
bC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9y
dCAiX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIgorCisjaWYgRU5BQkxF
KFdFQl9BVVRITikKKworI2ltcG9ydCAiQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLV2ViQXV0aGVudGlj
YXRpb25Bc3NlcnRpb25SZXNwb25zZTsKK307CisKK30KKworQGludGVyZmFjZSBfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAg
ICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlPiBfcmVzcG9uc2U7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggODY4MDYyM2ZjNDllMDdhZmMzMWFhYzc2MGU1
YjZhNDRlYmYyZDMwOC4uNDMxYzYzM2IwZmViMGI1NTJhNmI5ZDE4N2VhZDNkNmZiNWJjYzhjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC0zMSw2ICszMSw3IEBACiAKIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlOwogQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CiAKIHR5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpIHsKQEAgLTY5
LDYgKzcwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRp
b25UeXBlKSB7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFu
ZWwgdXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bFVwZGF0ZSl1cGRhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCBkaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhl
bnRpY2F0aW9uUmVzdWx0KXJlc3VsdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCAqKXBhbmVsIHJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczooTlNVSW50ZWdlcily
ZXRyaWVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNl
bGVjdEFzc2VydGlvblJlc3BvbnNlOihOU0FycmF5IDwgX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZSAqPiAqKXJlc3BvbnNlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggNDQ3NGJhYzY0MjdkMjA5
NmI0ZDEyYWQ0NWUwODcwYTVjYTAwOWZkOS4uMmViMzFlODEyYzk1OThlODk4ODQwYjk1NThjZTMz
MmYyZWQ2NzlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTI0LDEwICsyNCwx
MCBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5oIgogI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVy
bmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CiAK
KyNpbXBvcnQgIldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogQGltcGxlbWVudGF0aW9uIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLmgK
aW5kZXggZTgzNTMwNDEzYjFkZWU1ZDhhZDA0ZWYyYzE1Zjc3YzYxMTZkMmYyYS4uYTQ3YjI5MjZj
MWQzNjcyNWFjMzI4MTExYmNkZmRkNWYxYTZlNDBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCkBAIC0yOSw2ICsyOSw4
IEBACiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
PgogCitAY2xhc3MgV0tXZWJWaWV3OworCiBAcHJvdG9jb2wgX1dLUmVzb3VyY2VMb2FkRGVsZWdh
dGU7CiAKIG5hbWVzcGFjZSBBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA2Yjc4MDBiYzk5MDBmZTYwOTAz
MWExM2Y1YTBlZDlhZGM0ZjZlYjIwLi5kNDI2Mjg1M2M1MGE2MGZiYWI3MTUzMDdkMjUwZjBjOGUw
MWUzNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbQpAQCAtMjYsNiArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgogCisjaW1wb3J0ICJBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCIKICNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJf
V0tSZXNvdXJjZUxvYWRJbmZvSW50ZXJuYWwuaCIKIApAQCAtODAsNyArODIsNyBAQCB2b2lkIFJl
c291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFNlbmRSZXF1ZXN0KFdl
YktpdDo6UmVzb3VyY2VMbwogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3Lmdl
dCgpLmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3Jl
YXRlKFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkU2VuZFJlcXVlc3Q6cmVxdWVzdC5uc1VS
TFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKKyAg
ICBbZGVsZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQo
KS5nZXQoKSByZXNvdXJjZUxvYWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0
ZShXVEZNb3ZlKGxvYWRJbmZvKSkuZ2V0KCkpIGRpZFNlbmRSZXF1ZXN0OnJlcXVlc3QubnNVUkxS
ZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5
KV07CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6
ZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2Fk
SW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBjb25zdApAQCAtOTIsNyArOTQsNyBAQCB2b2lkIFJlc291
cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oV2ViS2l0OgogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgp
LmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRl
KFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpyZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQ
Qm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOworICAgIFtkZWxlZ2F0ZSB3
ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgpIHJlc291
cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRlKFdURk1vdmUobG9h
ZEluZm8pKS5nZXQoKSkgZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpyZXNwb25zZS5uc1VSTFJl
c3BvbnNlKCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9k
eVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOwogfQogCiB2b2lkIFJlc291cmNl
TG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IDMy
ZmM3ZDJkN2ZmY2Q5MzE2ZmE2NjNjNjBhMjVmYjZkYzFiYTExMDYuLmQxNmIxN2Q1ZmM2YmM3OTUy
MTRiMjdlODI1N2ZkNmYwMGJkNGM3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKQEAgLTUxLDggKzUx
LDggQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFJlY2VpdmVkKFJlc3Bv
bmQmJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZG93bmdyYWRlKEF1dGhlbnRpY2F0b3Iq
IGlkLCBSZWY8QXV0aGVudGljYXRvcj4mJiBkb3duZ3JhZGVkQXV0aGVudGljYXRvcikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVu
dGljYXRpb25TdGF0dXMpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEFzc2VydGlv
blJlc3BvbnNlcyhjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVmPFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mKT4mJikgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNl
bGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgPSAwOwogICAgIH07
CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IDljZDQ1NDdjODhhZTg0NmU5ZjU3Zjg5YTU4YzNm
YzViZWMyYjYxNTEuLjNkYjYzZWY2YmQ1ZWEzMmIyOTZhYzA0NmFhNDNhMGQxNDk3YzVlNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTI3MywxNiArMjczLDE2IEBA
IHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdl
YkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0CiAgICAgICAgIHBhbmVsLT5jbGllbnQoKS51cGRhdGVQ
YW5lbChzdGF0dXMpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZWxlY3RBc3Nl
cnRpb25SZXNwb25zZXMoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVxdWVzdFBpbih1aW50
NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHBhbmVsID0gbV9wZW5kaW5n
UmVxdWVzdERhdGEucGFuZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5jbGllbnQoKS5zZWxlY3RB
c3NlcnRpb25SZXNwb25zZXMocmVzcG9uc2VzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgICAgIHBhbmVsLT5jbGllbnQoKS5yZXF1ZXN0UGluKHJldHJpZXMsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVxdWVz
dFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6
U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYgcmVzcG9uc2VzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBwYW5lbCA9IG1fcGVuZGluZ1Jl
cXVlc3REYXRhLnBhbmVsLmdldCgpKQotICAgICAgICBwYW5lbC0+Y2xpZW50KCkucmVxdWVzdFBp
bihyZXRyaWVzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHBhbmVsLT5j
bGllbnQoKS5zZWxlY3RBc3NlcnRpb25SZXNwb25zZShyZXNwb25zZXMsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShBdXRoZW50aWNhdG9yVHJh
bnNwb3J0IHRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVy
JiBvYnNlcnZlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IDlm
ZDUyM2Q0MDcxZjE3ODcyMmM0ZmYxZjlkNTI2NDcxMTg2ODc5ZmUuLmE5YjYyOTNjNThmMTIyMDQz
MmViNzY1YmNmMmQ2YTFlZGQ5YmU1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIu
aApAQCAtODEsOCArODEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uZFJlY2VpdmVkKFJl
c3BvbmQmJikgZmluYWw7CiAgICAgdm9pZCBkb3duZ3JhZGUoQXV0aGVudGljYXRvciogaWQsIFJl
ZjxBdXRoZW50aWNhdG9yPiYmIGRvd25ncmFkZWRBdXRoZW50aWNhdG9yKSBmaW5hbDsKICAgICB2
b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSBm
aW5hbDsKLSAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlcyhjb25zdCBIYXNoU2V0PFJl
ZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4mKT4mJikgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgZmluYWw7Cisg
ICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYpIGZp
bmFsOwogCiAgICAgLy8gT3ZlcnJpZGVuIGJ5IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci4KICAg
ICB2aXJ0dWFsIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3JlYXRl
U2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCAxNDk5NDY2YTFjZWNhOGU5
ZmQ5MGY5Y2Y2MTQyNTY1OTAyYTg4ZmJmLi5mYWZhYTgxMTI4NzEyNTVhNmM0OGMzZTA5ZDExM2U5
YTczZmE0YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5oCkBAIC01MCw2ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVQYW5lbChXZWJBdXRoZW50aWNhdGlvblN0YXR1cykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBk
aXNtaXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6
OlN0cmluZyYpPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3Bv
bnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgY29uc3QgZmluYWw7CiAKICAgICBfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsICptX3BhbmVsOwogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKQEAgLTU4LDYgKzU5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgYm9vbCBwYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
OiAxOwogICAgICAgICBib29sIHBhbmVsRGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRo
UmVzdWx0IDogMTsKICAgICAgICAgYm9vbCBwYW5lbFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0
cmllc0NvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbHNlbGVjdEFzc2Vy
dGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9kZWxlZ2F0ZU1ldGhv
ZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5tbQppbmRleCA3ZjE1N2JkOTg0NjljZDY2OTFmZTEwMGYzZTM1YTQxOTczOGY1
ZTkxLi4wYzFiZDRmNWE4YzljZDJlMmM4ZTkzODcyYTdlZjMwMjI2YjI1ZWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KQEAg
LTI4LDggKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW1wb3J0ICJBUElX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCiAjaW1wb3J0ICJDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJXZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgi
CisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwu
aCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCIKICNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KQEAgLTQzLDYgKzQ1LDcgQEAgV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChf
V0tXZWJBdXRoZW50aWNhdGlvblAKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFVwZGF0ZVdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwYW5lbDp1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOildOwogICAgIG1fZGVsZWdh
dGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0ID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6ZGlzbWlzc1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBh
bmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpyZXF1ZXN0UElOV2l0aFJl
bWFpbmluZ1JldHJpZXM6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07CiB9CiAKIFJldGFpblB0cjxpZCA8X1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiA+IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6
OmRlbGVnYXRlKCkKQEAgLTYyLDYgKzY1LDcgQEAgc3RhdGljIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGUgd2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKFdlYkF1dGhlbnQKIAog
dm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp1cGRhdGVQYW5lbChXZWJBdXRoZW50
aWNhdGlvblN0YXR1cyBzdGF0dXMpIGNvbnN0CiB7CisgICAgLy8gRklYTUUoMjA2MjQ4KQogICAg
IC8vIENhbGwgZGVsZWdhdGVzIGluIHRoZSBuZXh0IHJ1biBsb29wIHRvIHByZXZlbnQgY2xpZW50
cycgcmVlbnRyYW5jZSB0aGF0IHdvdWxkIHBvdGVudGlhbGx5IG1vZGlmeSB0aGUgc3RhdGUKICAg
ICAvLyBvZiB0aGUgY3VycmVudCBydW4gbG9vcCBpbiB1bmV4cGVjdGVkIHdheXMuCiAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhp
cywgc3RhdHVzXSB7CkBAIC05Myw2ICs5Nyw3IEBAIHN0YXRpYyBfV0tXZWJBdXRoZW50aWNhdGlv
blJlc3VsdCB3a1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KFdlYkF1dGhlbnRpY2F0aW9uUmVzCiAK
IHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGlzbWlzc1BhbmVsKFdlYkF1dGhl
bnRpY2F0aW9uUmVzdWx0IHJlc3VsdCkgY29uc3QKIHsKKyAgICAvLyBGSVhNRSgyMDYyNDgpCiAg
ICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGll
bnRzJyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQog
ICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0
aGlzLCByZXN1bHRdIHsKQEAgLTExMiw2ICsxMTcsNyBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQ6OmRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdCByZXN1bHQp
CiAKIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6cmVxdWVzdFBpbih1aW50NjRf
dCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CisgICAgLy8gRklYTUUoMjA2MjQ4KQogICAgIC8v
IENhbGwgZGVsZWdhdGVzIGluIHRoZSBuZXh0IHJ1biBsb29wIHRvIHByZXZlbnQgY2xpZW50cycg
cmVlbnRyYW5jZSB0aGF0IHdvdWxkIHBvdGVudGlhbGx5IG1vZGlmeSB0aGUgc3RhdGUKICAgICAv
LyBvZiB0aGUgY3VycmVudCBydW4gbG9vcCBpbiB1bmV4cGVjdGVkIHdheXMuCiAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpcywg
cmV0cmllcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CkBAIC0xNDEsNiArMTQ3LDQzIEBAIHZvaWQgV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudDo6cmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxl
CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0
QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBBU1NFUlQoIXJlc3BvbnNlcy5pc0VtcHR5KCkpOwor
ICAgIGF1dG8gbnNSZXNwb25zZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6cmVzcG9uc2VzLnNpemUoKV0pOworICAgIGZvciAoYXV0byYgcmVzcG9u
c2UgOiByZXNwb25zZXMpCisgICAgICAgIFtuc1Jlc3BvbnNlcyBhZGRPYmplY3Q6d3JhcHBlcihB
UEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZS5j
b3B5UmVmKCkpKV07CisKKyAgICAvLyBGSVhNRSgyMDYyNDgpCisgICAgLy8gQ2FsbCBkZWxlZ2F0
ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRo
YXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQorICAgIC8vIG9mIHRoZSBjdXJy
ZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBuc1Jlc3BvbnNlcyA9
IFdURk1vdmUobnNSZXNwb25zZXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8QVBJOjpXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlJj4oW1tuc1Jlc3BvbnNlcyBmaXJzdE9iamVjdF0gX2FwaU9i
amVjdF0pLnJlc3BvbnNlKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbHNlbGVjdEFzc2VydGlvblJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSY+KFtbbnNSZXNw
b25zZXMgZmlyc3RPYmplY3RdIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRl
LmdldCgpOworICAgICAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSkucmVzcG9uc2UoKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBz
ZWxlY3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjop
KTsKKyAgICAgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9u
c2U6bnNSZXNwb25zZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKV0oX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqcmVz
cG9uc2UpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8QVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlJj4oW3Jlc3BvbnNlIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsKKyAgICAgICAgfSku
Z2V0KCldOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3Bw
CmluZGV4IDNjM2Y5NjIxOGFiYmU1ZjZjMTIyMTA5OTc0OWRlOTc0Y2VlYTgxNjguLjlhMGE4ZGIy
N2RhNWEyYTMwZDJmZTFmZDU0OWI3NzJkNmRmMmExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEF1dGhlbnRpY2F0b3IuY3BwCkBAIC0xNTEsMTEgKzE1MSwxMSBAQCB2b2lkIEN0YXBBdXRoZW50
aWNhdG9yOjpjb250aW51ZUdldE5leHRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVj
dG9yPHVpbgogCiAgICAgaWYgKCFtX3JlbWFpbmluZ0Fzc2VydGlvblJlc3BvbnNlcykgewogICAg
ICAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5vYnNlcnZlcigpKSB7Ci0gICAgICAgICAg
ICBvYnNlcnZlci0+c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKG1fYXNzZXJ0aW9uUmVzcG9uc2Vz
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBSZWY8QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYgcmVzcG9uc2UpIHsKKyAgICAgICAgICAgIG9ic2Vy
dmVyLT5zZWxlY3RBc3NlcnRpb25SZXNwb25zZShtX2Fzc2VydGlvblJlc3BvbnNlcywgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlJiByZXNwb25zZSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuUmVzcG9uc2UgPSBt
X2Fzc2VydGlvblJlc3BvbnNlcy50YWtlKHJlc3BvbnNlKTsKKyAgICAgICAgICAgICAgICBhdXRv
IHJldHVyblJlc3BvbnNlID0gbV9hc3NlcnRpb25SZXNwb25zZXMudGFrZShjb25zdF9jYXN0PEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSo+KCZyZXNwb25zZSkpOwogICAgICAgICAgICAg
ICAgIGlmICghcmV0dXJuUmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXR1cm5SZXNwb25zZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCmluZGV4IDI1ZmU5MDMyZjhlNDA0ZWJm
N2I1YTkxN2JkZDgyZGRmZDQ3YmNiOWYuLjZlM2RlMDExY2M0MDU4N2JhZmQ4OGFkYWVjNTZlZDY2
NDdlYmVkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFJldHJpZXMoKTsKICAgICB2b2lkIGNvbnRp
bnVlR2V0S2V5QWdyZWVtZW50QWZ0ZXJHZXRSZXRyaWVzKFZlY3Rvcjx1aW50OF90PiYmKTsKICAg
ICB2b2lkIGNvbnRpbnVlUmVxdWVzdFBpbkFmdGVyR2V0S2V5QWdyZWVtZW50KFZlY3Rvcjx1aW50
OF90PiYmLCB1aW50NjRfdCByZXRyaWVzKTsKLSAgICB2b2lkIGNvbnRpbnVlR2V0UGluVG9rZW5B
ZnRlclJlcXVlc3RQaW4oY29uc3QgU3RyaW5nJiBwaW4sIGNvbnN0IENyeXB0b0tleUVDJik7Cisg
ICAgdm9pZCBjb250aW51ZUdldFBpblRva2VuQWZ0ZXJSZXF1ZXN0UGluKGNvbnN0IFN0cmluZyYg
cGluLCBjb25zdCBXZWJDb3JlOjpDcnlwdG9LZXlFQyYpOwogICAgIHZvaWQgY29udGludWVSZXF1
ZXN0QWZ0ZXJHZXRQaW5Ub2tlbihWZWN0b3I8dWludDhfdD4mJiwgY29uc3QgZmlkbzo6cGluOjpU
b2tlblJlcXVlc3QmKTsKIAogICAgIGJvb2wgdHJ5RG93bmdyYWRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZmJkYzI1NzVlNDQ4
MTg1ZTRiY2JjODQyZTRmN2E1NDQzMTNiNDM5Li5jZWUyMjJhM2ZhNDdjYTkwZDBiMWJkYzU2ODBl
MThhNDhjNDEyYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEwOTUsNiArMTA5NSw5IEBACiAJCTU3N0ZGNzgyMjM0NkU4MUMwMDRF
REZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzdGRjc4MTIzNDZFODFDMDA0RURGQjkg
LyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oICovOyB9OwogCQk1NzdGRjc4NTIz
NDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc3RkY3ODMyMzQ2RUNBQTAw
NEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCAqLzsgfTsKIAkJNTc4REMy
OTgyMTU1QTAwMjAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc4REMyOTcyMTU1QTAw
MTAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oICovOyB9OworCQk1NzlG
MUJGNjIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5
RjFCRjQyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1NzlGMUJGOTIzQzgwRUM2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzlGMUJGODIzQzgwRUM2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmggKi87IH07CisJCTU3OUYxQkZDMjNDODExQ0Yw
MEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzlGMUJGQTIzQzgxMUNG
MDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovOyB9
OwogCQk1N0FDOEY1MDIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdBQzhGNEUyMTdGRUVEOTAw
NTU0MzhDIC8qIEhpZENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTdCNEI0NjAyMEI1MDRBQzAwRDRB
RDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjRCNDVFMjBCNTA0
QUIwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRz
LmggKi87IH07CiAJCTU3QjgyNjQxMjMwNEVCM0UwMEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjgyNjQwMjMw
NEVCM0UwMEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCAqLzsgfTsKQEAgLTM3NTUsNiArMzc1OCwx
MSBAQAogCQk1NzdGRjc4MzIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3N0ZGNzg0MjM0NkVDQUEwMDRFREZCOSAv
KiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTc4REMyOTcyMTU1QTAwMTAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0
TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRjQyM0M4MERCNjAwQzdENEI0IC8qIF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NzlGMUJGNTIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3OUYxQkY4MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3OUYxQkZBMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRkIyM0M4
MTFDRjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QUM4RjRFMjE3RkVFRDkwMDU1
NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZENvbm5lY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdBQzhGNEYyMTdGRUVEOTAwNTU0MzhDIC8q
IEhpZENvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIaWRDb25uZWN0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I0QjQ1RDIwQjUwNEFCMDBENEFENzkg
LyogQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4NDUsNiArNjg1Myw5IEBACiAJCQkJMUE4MUIzN0YxOEJE
NjZBRDAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCAqLywKIAkJCQkxQTgxQjM3RTE4
QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZS5tbSAqLywKIAkJCQkxQTgxQjM4
NDE4QkQ2NzNBMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmggKi8sCisJ
CQkJNTc5RjFCRjQyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UuaCAqLywKKwkJCQk1NzlGMUJGNTIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbSAqLywKKwkJCQk1NzlGMUJGODIzQzgw
RUM2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVy
bmFsLmggKi8sCiAJCQkJNTc0NzI4Q0YyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaCAqLywKIAkJCQk1NzQ3MjhEMDIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbSAqLywKIAkJCQk1NzQ3MjhEMzIzNDU3MEFFMDAxNzAwQUYg
LyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFsLmggKi8sCkBAIC04NTI2LDYgKzg1
MzcsOCBAQAogCQkJCTdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0Lmgg
Ki8sCiAJCQkJMkQ4Nzg2MjExQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0LmNw
cCAqLywKIAkJCQkyRDg3ODYyMjFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQu
aCAqLywKKwkJCQk1NzlGMUJGQjIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZS5jcHAgKi8sCisJCQkJNTc5RjFCRkEyM0M4MTFDRjAwQzdENEI0
IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLywKIAkJCQk1N0VC
RTI2OTIzNDY3NkM1MDA4RDhBRjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAgKi8s
CiAJCQkJNTdFQkUyNjgyMzQ2NzZDNTAwOEQ4QUY5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuaCAqLywKIAkJCQk1NzdGRjc4MTIzNDZFODFDMDA0RURGQjkgLyogQVBJV2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudC5oICovLApAQCAtOTg5Niw2ICs5OTA5LDggQEAKIAkJCQkyRDg3ODYy
MDFCREI1N0Y1MDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE4MUIzODExOEJENjZBRDAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3Rv
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODFCMzg1MThCRDY3M0EwMDA3RkRBQyAvKiBfV0tW
aXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3OUYxQkY2MjND
ODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1NzlGMUJGOTIzQzgwRUM2MDBDN0Q0QjQgLyogX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1NzQ3MjhEMTIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTc0NzI4RDQyMzQ1NzBBRTAwMTcwMEFGIC8qIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2Nzgx
QzdFNzY1MTAwNjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC05OTc4LDYgKzk5OTMsNyBAQAogCQkJCTJEODc4NjI0MUJEQjU4RkYwMEQwMkFCQiAvKiBBUElV
c2VyU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVFMUFGRUQxNkIyMTAxNzAwNkND
MUYyIC8qIEFQSVdlYkFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1RTFBRkVGMTZCMjEw
MjkwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU3OUYxQkZDMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0VCRTI2QTIzNDY3NkM1MDA4RDhBRjkg
LyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc3RkY3
ODIyMzQ2RTgxQzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBRTI4Njg0MUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRl
RGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGE5NmIyMDRkYWJjZjY0YjYwNjg1NmM1ZTYzMmE0ZGIz
MWY2MWMwOS4uMDk5OGIxMzk2MjRjMmFkZTMyOGE4MGNkNmIzYTViMGU2MWE3ODc5ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDIwLTAxLTEwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgU1BJIHRvIHRlbGwgVUkgY2xpZW50cyB0byBzZWxl
Y3QgYXNzZXJ0aW9uIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA2MTEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5NTczMz4K
KworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRl
IHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlczpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRp
cGxlLWFjY291bnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbDoK
KwogMjAyMC0wMS0wNiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXZWJBdXRobl0gU3VwcG9ydCBDVEFQIENsaWVudCBQaW4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOTFlYmVlZDVkOTFjNTEwMzBhOTZjYzcxMzI0OTljM2Y5M2NmMjk4MC4uZGUzMWIx
ZWZjZDk3MmQ5MmJiMDQzZTc4ODQ3NGIzMmFmN2U1OTUwYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM2OCw2ICszNjgsNyBAQAogCQk1Nzk3RkUzMzFFQjE1QUIxMDBCMkY0QTAgLyogbmF2
aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzk3RkUzMjFFQjE1QTg5MDBCMkY0QTAg
LyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCAqLzsgfTsKIAkJNTc5ODMz
N0UyMzYwMTlBNDAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
aGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTc5ODMzN0QyMzYwMTk2RDAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtl
LWNyZWRlbnRpYWwtaGlkLmh0bWwgKi87IH07CiAJCTU3OTgzMzkyMjM2OEZBMzcwMDhFNTU0NyAv
KiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
OTgzMzdCMjM1RUI2NUMwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1uZmMtbXVsdGlwbGUtdGFncy5odG1sICovOyB9OworCQk1NzlGMUMwMTIzQzkzQUY1MDBDN0Q0
QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291
bnRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTc5RjFCRkYyM0M5MkZEMzAwQzdENEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sICovOyB9OwogCQk1N0E3OTg1NzIy
NEFCMzRFMDBBN0Y2RjEgLyogV2ViQ3J5cHRvTWFzdGVyS2V5Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdBNzk4NTYyMjRBQjM0RTAwQTdGNkYxIC8q
IFdlYkNyeXB0b01hc3RlcktleS5tbSAqLzsgfTsKIAkJNTdDM0ZBNjYxRjdDMjQ4RjAwOUQ0Qjgw
IC8qIFdlYWtQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNCOUJDMzcxQTY3NDgyMzAwRkU1Njc4IC8qIFdlYWtQdHIuY3BwICovOyB9OwogCQk1
N0M2MjQ0RTIzNDZCQ0ZBMDAzODNGRTcgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QzYyNDREMjM0
NkJDRkEwMDM4M0ZFNyAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tICovOyB9OwpAQCAt
MTQ4NCw2ICsxNDg1LDcgQEAKIAkJCQkyRUJEOUQwQTIxMzQ3MzBEMDAyREE3NTggLyogdmlkZW8u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDRDU3Nzc5OTIxMUNFMEU0MDAxQjM3MUUg
Lyogd2ViLWF1ZGlvLW9ubHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RG
MzIzNTdFNDg5MDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlk
LWNhbmNlbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU3OUYxQzAxMjNDOTNBRjUw
MEM3RDRCNCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUt
YWNjb3VudHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1Nzc0NTREMDIzNTlCMzc4
MDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW5vLWNyZWRl
bnRpYWxzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTcwRDI2RkMyM0MzRjg3MDAw
RDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RFQzIzNEYxRjkzMDBFODVFMDkgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCkBAIC0xOTQ5LDYgKzE5NTEsNyBAQAogCQk1Nzk4MzM3QjIzNUVCNjVDMDA4RTU1NDcgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc5ODMzN0QyMzYwMTk2RDAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtaGlkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENo
YW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb3Zpc2lv
bmFsVVJMTm90Q2hhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJG
RjIzQzkyRkQzMDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlk
LW11bHRpcGxlLWFjY291bnRzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0E3OTg1NjIyNEFCMzRFMDBBN0Y2RjEgLyogV2ViQ3J5cHRvTWFzdGVy
S2V5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ3J5cHRvTWFzdGVyS2V5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0M2MjQ0RDIzNDZCQ0ZBMDAzODNGRTcgLyogX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QzYy
NDRGMjM0NkMxRUMwMDM4M0ZFNyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzUwMSw2ICsz
NTA0LDcgQEAKIAkJCQlDRDU3Nzc5QjIxMUNFNkNFMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRp
by1hbmQtd2ViLWF1ZGlvLmh0bWwgKi8sCiAJCQkJQ0Q1Nzc3OTgyMTFDREU4RjAwMUIzNzFFIC8q
IHdlYi1hdWRpby1vbmx5Lmh0bWwgKi8sCiAJCQkJNTc2NjNERjIyMzU3RTQ1RDAwRTg1RTA5IC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbCAqLywKKwkJ
CQk1NzlGMUJGRjIzQzkyRkQzMDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgKi8sCiAJCQkJNTc3NDU0Q0YyMzU5QjMz
ODAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1uby1jcmVk
ZW50aWFscy5odG1sICovLAogCQkJCTU3MEQyNkZCMjNDM0Y4NjUwMEQ1Q0Y2NyAvKiB3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwgKi8sCiAJCQkJNTc2NjNERUIy
MzRGMUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5o
dG1sICovLApAQCAtNDg3MCw3ICs0ODc0LDYgQEAKIAkJCQkyRDJCRUIyRDIyMzI0RTVGMDA1NTQ0
Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
RTBDNDFEMEE2NTQyMDBGRUJDRjMgLyogUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRTFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplUmV2
ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0QyN0ExQzEyM0M2
NjFFRDAwNkUxMUREIC8qIFdLV2ViVmlld1BhdXNlUGxheWluZ0F1ZGlvVGVzdHMubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0YwRjFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplV2luZG93QWZ0
ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0I3QUZEQzIzQzQ1Mjk3MDBFNDlDRjMg
LyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUM4RTFBNTFG
MjZBRjRDMDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBpbiBTb3VyY2VzICov
LApAQCAtNTA1Miw2ICs1MDU1LDcgQEAKIAkJCQlEMzRFMDg3NjFFNEU0MkUxMDA1RkYxNEEgLyog
V0tXZWJWaWV3R2V0Q29udGVudHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEZBOTE4MTFFNjE4
NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUNBQ0FEQTEyMzA2MjBBRTAwMDdENTRDIC8qIFdLV2ViVmlld09wYXF1ZS5tbSBpbiBT
b3VyY2VzICovLAorCQkJCUNEMjdBMUMxMjNDNjYxRUQwMDZFMTFERCAvKiBXS1dlYlZpZXdQYXVz
ZVBsYXlpbmdBdWRpb1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQwMUQwNkUyMzIxOEZF
RTAwMzlBQTNBIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzdBOURCRTkyMTNCNEM5MzAwRDI2MUEyIC8qIFdLV2ViVmlld1NlcnZlclRydXN0S1ZDLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8qIFdLV2ViVmll
d1NuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0KaW5kZXggMGNiMjQ3OGRjOWIxOWM3YWFhMjE0YzgzOGFmZmJiM2MxYzJhZmQzZC4uYTk3
NTgzMzA0ZTY4YTkwOWJkZDMwYjgwN2Y3OTU4ZjcyZTY0MGMyOCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMzUsOCArMzUsMTAgQEAKICNpbXBvcnQgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CisjaW1wb3J0
IDxXZWJLaXQvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oPgogI2ltcG9y
dCA8V2ViS2l0L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgorI2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgogI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSYW4gPSBmYWxzZTsKQEAgLTQ2LDYgKzQ4LDcgQEAgc3RhdGljIGJvb2wgd2ViQXV0
aGVudGljYXRpb25QYW5lbFVwZGF0ZU11bHRpcGxlTkZDVGFnc1ByZXNlbnQgPSBmYWxzZTsKIHN0
YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQg
PSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYW5jZWxJbW1lZGlh
dGVseSA9IGZhbHNlOwogc3RhdGljIFN0cmluZyB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluOwor
c3RhdGljIEJPT0wgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gTk87CiAK
IEBpbnRlcmZhY2UgVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CiBAZW5kCkBAIC05MSw2ICs5NCwy
MCBAQCAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgcmVx
dWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOgogICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxQaW4pOwogfQogCistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYXkgPCBf
V0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICo+ICopcmVzcG9uc2VzIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgRVhQRUNUX0VRKHJlc3BvbnNlcy5jb3Vu
dCwgMnVsKTsKKyAgICBmb3IgKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Ug
KnJlc3BvbnNlIGluIHJlc3BvbnNlcykgeworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzcG9uc2Uu
bmFtZSBpc0VxdWFsOkAiam9obnBzbWl0aEBleGFtcGxlLmNvbSJdIHx8IFtyZXNwb25zZS5uYW1l
IGlzRXF1YWw6QCIiXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXNwb25zZS5kaXNwbGF5TmFt
ZSBpc0VxdWFsOkAiSm9obiBQLiBTbWl0aCJdIHx8IFtyZXNwb25zZS5kaXNwbGF5TmFtZSBpc0Vx
dWFsOkAiIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbW3Jlc3BvbnNlLnVzZXJIYW5kbGUgYmFz
ZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdIGlzRXF1YWw6QCJNSUlCa3pDQ0FUaWdBd0lC
QWpDQ0FaTXdnZ0U0b0FNQ0FRSXdnZ0dUTUlJPSJdIHx8ICFyZXNwb25zZS51c2VySGFuZGxlKTsK
KyAgICB9CisKKyAgICBhdXRvIGluZGV4ID0gd2Vha1JhbmRvbVVpbnQzMigpICUgMjsKKyAgICB3
ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSByZXNwb25zZXNbaW5kZXhdLnVz
ZXJIYW5kbGUgPyBOTyA6IFlFUzsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbaW5k
ZXhdKTsKK30KKwogQGVuZAogCiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVs
RmFrZURlbGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0
ZT4KQEAgLTg3Miw2ICs4ODksNDAgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRB
c3NlcnRpb25QaW4pCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07
CiB9CiAKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTXVsdGlwbGVBY2NvdW50c051bGxE
ZWxlZ2F0ZSkKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0
byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3Vy
YXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJu
YWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRo
ZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2RlbGVnYXRlIHNldElzTnVsbDp0cnVlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JN
ZXNzYWdlOkAiU3VjY2VlZGVkISJdOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWws
IE11bHRpcGxlQWNjb3VudHMpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsK
KworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVz
dF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0lu
V2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1
cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNa
ZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0
VVJMLmdldCgpXV07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07
CisgICAgRVhQRUNUX0VRKFtbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
dXNlckhhbmRsZSJdIGlzRXF1YWxUb1N0cmluZzpAIjxudWxsPiJdLCB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsTnVsbFVzZXJIYW5kbGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxl
LWFjY291bnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYzN2U0MjA3OTVmZDU2NzdiZDUwZjExZGQ1NGVh
NjA0MjQ5YWU0OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxl
LWFjY291bnRzLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPGlucHV0IHR5cGU9InRleHQiIGlkPSJp
bnB1dCI+Cis8c2NyaXB0PgorICAgIGNvbnN0IHRlc3RBc3NlcnRpb25NZXNzYWdlTG9uZ0Jhc2U2
NCA9CisgICAgICAgICJBS1VCb21KcFpGaEFLQWl0enVqK1RzbHplbGYzL3Zad0lHdERRTmdvS2VG
ZDVvRWllWXpoeXpBNjVzYWYwdEsyIiArCisgICAgICAgICJ3L21vb2E3dFF0R2dEZHdaSWpPaGpj
dVowcFExYWpvRTRHUjBlWEJsYW5CMVlteHBZeTFyWlhrQ1dDVkd6SCs1IiArCisgICAgICAgICJa
NTFWc3R1UWt1SEkyZVhoMEN0MWdQQzBnU3gzQ1dMaDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZU
dXVCV2dCIiArCisgICAgICAgICI0L0YwVkI3RGxVVk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdH
S292NnhvQXgyTUVmNi82cU5zOE91dHpoUDJDIiArCisgICAgICAgICJRb0oxTDdGZTY0Rzl1QmNF
cEdKcFpGZ2dNSUlCa3pDQ0FUaWdBd0lCQWpDQ0FaTXdnZ0U0b0FNQ0FRSXdnZ0dUIiArCisgICAg
ICAgICJNSUprYVdOdmJuZ29hSFIwY0hNNkx5OXdhV056TG1GamJXVXVZMjl0THpBd0wzQXZZVUpx
YW1wd2NWQmlMbkJ1IiArCisgICAgICAgICJaMlJ1WVcxbGRtcHZhRzV3YzIxcGRHaEFaWGhoYlhC
c1pTNWpiMjFyWkdsemNHeGhlVTVoYldWdFNtOW9iaUJRIiArCisgICAgICAgICJMaUJUYldsMGFB
VUMiOworICAgIGNvbnN0IHRlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0ID0KKyAgICAgICAgIkFL
TUJvbUpwWkZoQUtBaXR6dWorVHNsemVsZjMvdlp3SUd0RFFOZ29LZUZkNW9FaWVZemh5ekE2NXNh
ZjB0SzIiICsKKyAgICAgICAgIncvbW9vYTd0UXRHZ0Rkd1pJak9oamN1WjBwUTFham9FNEdSMGVY
QmxhbkIxWW14cFl5MXJaWGtDV0NWR3pIKzUiICsKKyAgICAgICAgIlo1MVZzdHVRa3VISTJlWGgw
Q3QxZ1BDMGdTeDNDV0xoNUk5YTJBRUFBQUJRQTFoSE1FVUNJUUNTRlR1dUJXZ0IiICsKKyAgICAg
ICAgIjQvRjBWQjdEbFVWTTA5SUhQbXhlMU16SFV3Um9DUlpiQ0FJZ0dLb3Y2eG9BeDJNRWY2LzZx
TnM4T3V0emhQMkMiICsKKyAgICAgICAgIlFvSjFMN0ZlNjRHOXVCYz0iOworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHBheWxvYWRCYXNl
NjQ6IFt0ZXN0QXNzZXJ0aW9uTWVzc2FnZUxvbmdCYXNlNjQsIHRlc3RBc3NlcnRpb25NZXNzYWdl
QmFzZTY0XSB9IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsg
aW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYnl0ZXNUb0hleFN0cmlu
ZyhieXRlcykKKyAgICB7CisgICAgICAgIGlmICghYnl0ZXMpCisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKworICAgICAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTsKKyAgICAgICAg
dmFyIGhleEJ5dGVzID0gW107CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGJ5dGVTdHJpbmcgPSBieXRlc1tpXS50b1N0
cmluZygxNik7CisgICAgICAgICAgICBpZiAoYnl0ZVN0cmluZy5sZW5ndGggPCAyKQorICAgICAg
ICAgICAgICAgIGJ5dGVTdHJpbmcgPSAiMCIgKyBieXRlU3RyaW5nOworICAgICAgICAgICAgaGV4
Qnl0ZXMucHVzaChieXRlU3RyaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBoZXhC
eXRlcy5qb2luKCIiKTsKKyAgICB9CisKKyAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICBw
dWJsaWNLZXk6IHsKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAor
ICAgICAgICAgICAgdGltZW91dDogMTAwMAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmln
YXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAg
ICAgdXNlckhhbmRsZSA9IGJ5dGVzVG9IZXhTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS51c2Vy
SGFuZGxlKTsKKyAgICAgICAgLy8gY29uc29sZS5sb2coIlN1Y2NlZWRlZCEiKTsKKyAgICAgICAg
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1
Y2NlZWRlZCEiKTsKKyAgICB9LCBlcnJvciA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKGVy
cm9yLm1lc3NhZ2UpOworICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0
SGFuZGxlci5wb3N0TWVzc2FnZShlcnJvci5tZXNzYWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0
aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhp
ZC5odG1sCmluZGV4IDViNmFlYmViZjEyNGIxMDM5ZWQwNzk0ZWQyMmQzZGI2OGVhMzRhZmMuLmU5
ODFhNzBmOTk3MTkxNTVkMGZiM2U3OThlNTYxNTJhZjNiODY4NzggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1oaWQuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwKQEAgLTM5
LDcgKzM5LDcgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBV
aW50OEFycmF5KDE2KSwKICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJw
dWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAg
ICAgICAgdGltZW91dDogMTAwLAogICAgICAgICB9CiAgICAgfTsKIAo=
</data>
<flag name="commit-queue"
          id="403453"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387724</attachid>
            <date>2020-01-14 16:25:08 -0800</date>
            <delta_ts>2020-01-14 16:29:08 -0800</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>bug-206112-20200114162507.patch</filename>
            <type>text/plain</type>
            <size>62229</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwZDVmOTAwODJkZjZhNjUx
YjY4N2I0ODJlODc0NDFiZTZhYzkyNTIuLjM1NmZlNDZlNmJlZGQyZTA4ODA4NTMxOGM3MTA3NTM3
YzQzMzA2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDEtMTAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBTUEkgdG8gdGVsbCBVSSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDk1NzMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGRlbGVnYXRlIG1ldGhvZCBpbiBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGUgdG8gdGVsbCBVSSBjbGllbnRzIHRvCisgICAgICAgIHNlbGVj
dCBhbiBhc3NlcnRpb24gcmVzcG9uc2Ugd2hlbiBtdWx0aXBsZSBhcmUgcmV0dXJuZWQgZnJvbSBh
biBhdXRoZW50aWNhdG9yLiBIZXJlIGlzIHRoZSBTUEk6CisgICAgICAgIEBwcm90b2NvbCBfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2JqZWN0PgorICAgICAgICBAb3B0aW9u
YWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Ug
KikpY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIC4uLgorICAgICAgICBAZW5kCisKKyAgICAg
ICAgQSBuZXcgaW50ZXJmYWNlIGlzIGludHJvZHVjZWQgdG8gcmVwcmVzZW50IGFuIGF1dGhlbnRp
Y2F0b3IgYXNzZXJ0aW9uIHJlc3BvbnNlOgorICAgICAgICBAaW50ZXJmYWNlIF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgOiBOU09iamVjdAorICAgICAgICBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOworICAgICAgICBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsK
KyAgICAgICAgQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVz
ZXJIYW5kbGU7CisgICAgICAgIEBlbmQKKyAgICAgICAgT25seSBtZW1iZXJzIHRoYXQgY2FuIGFz
c2lzdCB1c2VycyB0byBtYWtlIGEgZGVjaXNpb24gYXJlIGV4cG9zZWQgdG8gVUkgY2xpZW50cy4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNw
cDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oLgorICAgICAgICAoQVBJOjpXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAgICAgICgt
W19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgZGVhbGxvY10pOgorICAgICAg
ICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIG5hbWVdKToKKyAgICAg
ICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBkaXNwbGF5TmFtZV0p
OgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIHVzZXJI
YW5kbGVdKToKKyAgICAgICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMS0wNiAg
Smlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0g
U3VwcG9ydCBDVEFQIENsaWVudCBQaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmlu
ZGV4IGRjNGM4MDM3YTM1NjgxM2JlNTJiYzM3OWY0ODdmNWI1NzkxYzhlNTIuLmQ3MGE5Y2NmOGYz
OTFiMGRkNjJjMmExMTRlMTE1MmY5ZjZjMGQ2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaApAQCAtNDIsOSArNDIsOSBAQCBwdWJsaWM6CiAgICAgQXJyYXlCdWZmZXIqIHVzZXJI
YW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0KCk7IH0KIAogICAgIHZvaWQg
c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQotICAgIFN0cmlu
ZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29uc3QgU3RyaW5nJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdm9pZCBzZXREaXNwbGF5TmFtZShjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lKSB7IG1fZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsgfQot
ICAgIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0K
KyAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TmFtZTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZDcmVkZW50aWFscyhzaXplX3QgbnVtYmVyT2ZD
cmVkZW50aWFscykgeyBtX251bWJlck9mQ3JlZGVudGlhbHMgPSBudW1iZXJPZkNyZWRlbnRpYWxz
OyB9CiAgICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251
bWJlck9mQ3JlZGVudGlhbHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmlu
ZGV4IGZkYjgxZjQxMzU1MWZmYzJjYmQxZTI3ZjBiNDBkMjRiODRkZDg5YmYuLjhkYTEzYzRiMzNj
NzA4OTQ0YWIyMThiMzY3MDhlNzE2YzA4NDU5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKQEAgLTE4Myw2ICsxODMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCisgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Us
CiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDY0MmY2ZWY0YmRjN2IzNDFmODJiZDQ2NjNl
YTNkMTkzMWU4NTIwZTcuLmJmMjRkYjZhYjk1NjA2OTBkYzgzNTQ1ZWM5OTYzODExZWU2MmQ3OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTg4LDYgKzg4LDcg
QEAKICNpbXBvcnQgIl9XS1VzZXJJbml0aWF0ZWRBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9y
ZUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5o
IgogCkBAIC0zODksNiArMzkwLDkgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNp
emUsIFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGU6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6CiAg
ICAgICAgIHdyYXBwZXIgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBhbGxvY107CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZToKKyAgICAgICAgd3JhcHBlciA9IFtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAogICAgIGNhc2UgVHlwZTo6
QnVuZGxlRnJhbWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzMDZjZDFlNjkzNTY2MWFkNDFjMDYwOTI4NDhi
ZjlhZjM2YjFiNzI2Li41MzkzMzQwOGNmNDZlZDhhNGRjOGU3ZTA0ZThlYzczYTg0NzBmYmEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKQEAgLTMzOCw2ICszMzgsNyBAQCBVSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVt
ZVRhc2suY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCiBVSVByb2Nl
c3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0
LmNwcAorVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcAogVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdpbmRvd0Zl
YXR1cmVzLmNwcApAQCAtNDAwLDcgKzQwMSw4IEBAIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCiBVSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vV2ViQ3JlZGVudGlhbC5jcHAKIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0
aW9uU3BhY2UuY3BwCiAKLVVJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0
Y2hlci5jcHAKKy8vIEZJWE1FKDIwNjI2Nik6IEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCdz
ICJuYW1lc3BhY2UgUHJvdG9jb2wiIGNvbmZsaWN0cyB3aXRoIG9iamMvcnVudGltZS5oJ3MgInR5
cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0IFByb3RvY29sIgorVUlQcm9jZXNzL0F1dG9tYXRpb24v
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAogCiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg3NmFkZDEzNTQzZWU4ZmNl
ZWJhNjM1YmE5OTkzNmVkN2M4NmM1Ni4uZTk5Mjc4MjI0ZmFjZTY0MjcyOWVmYWE3NjVkYzFmY2Jm
NjEwZmMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjc4LDYgKzI3OCw3IEBAIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VySW5pdGlhdGVkQWN0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJT
dHlsZVNoZWV0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Zpc2l0ZWRMaW5rU3RvcmUubW0K
K1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU2l6ZS5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50LmgKaW5kZXggMjE4MWQ4ZDU3NGQzZjU0YTZm
Yjg3NTY5M2EwMjcyYmE0YzJlNTRiYy4uYTMwZGQ5NTIzMWRmNGY4YjFjNmE4YTFjYmI1NmUyNTY4
ZDcwMWI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291
cmNlTG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNv
dXJjZUxvYWRDbGllbnQuaApAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBz
dHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNzk3NmZmNTJlYThlMTVhYjY4MGE1NjNlNDMxMDg2OGVjZDMx
MDBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGlj
YXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2lu
Y2x1ZGUgIkFQSURhdGEuaCIKKworbmFtZXNwYWNlIEFQSSB7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworUmVmPFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IFdlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyZXNwb25z
ZSkpKTsKK30KKworV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6V2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQorICAgIDogbV9yZXNwb25zZShXVEZNb3ZlKHJlc3Bv
bnNlKSkKK3sKK30KKworV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6fldlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CisKK1JlZlB0cjxEYXRh
PiBXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlKCkgY29uc3QK
K3sKKyAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOworICAgIGlmIChhdXRvKiB1c2VySGFuZGxl
ID0gbV9yZXNwb25zZS0+dXNlckhhbmRsZSgpKSB7CisgICAgICAgIHVzZXJIYW5kbGUtPnJlZigp
OworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPih1c2VySGFuZGxlLT5kYXRhKCkpLCB1c2VySGFuZGxl
LT5ieXRlTGVuZ3RoKCksIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgewor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QXJyYXlCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihk
YXRhKSktPmRlcmVmKCk7CisgICAgICAgIH0sIHVzZXJIYW5kbGUpOworICAgIH0KKyAgICByZXR1
cm4gZGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDE3NjIwODA1ZDQzZGY3ZDA3NmI0OWUwMDhjMjExYzg2MWY1MjhjZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg+CisKK25hbWVz
cGFjZSBBUEkgeworCitjbGFzcyBEYXRhOworCitjbGFzcyBXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJik7CisgICAgfldlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UoKTsKKworICAgIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS0+bmFtZSgpOyB9CisgICAgY29uc3QgV1RGOjpTdHJp
bmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS0+ZGlzcGxheU5hbWUo
KTsgfQorICAgIFJlZlB0cjxEYXRhPiB1c2VySGFuZGxlKCkgY29uc3Q7CisKKyAgICBjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmIHJlc3BvbnNlKCkgeyByZXR1
cm4gbV9yZXNwb25zZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4mJik7CisKKyAgICBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiBtX3Jlc3BvbnNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKaW5kZXggMDA2MmY5YTdk
OTc0NzI2NmY3ZjYyMjFmNGU3OWQ1ODU3ZmZjMjMxYy4uNzAxMGQ3OGQ4NjRmZDBkYzI0N2U2YjAy
YzFlOTI3ODBlN2RhODU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCkBAIC01MCw4ICs1
MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQYW5lbChXZWJLaXQ6Oldl
YkF1dGhlbnRpY2F0aW9uU3RhdHVzKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlz
c1BhbmVsKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZXMoY29uc3QgSGFzaFNldDxSZWY8V2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5k
bGVyKCpyZXNwb25zZXMuYmVnaW4oKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1
aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkp
OyB9CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hT
ZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25z
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgQVNTRVJUKCFy
ZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhhbmRsZXIoKnJlc3BvbnNlcy5iZWdpbigp
KTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTJmNWFmMDJkNDRlZGFhYzIwZTlj
ODk0MmExYjUwMTE4Y2ZkNzM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdl
YktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlIDogTlNPYmplY3QKKworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7CisKK0BlbmQKKworTlNfQVNT
VU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3MWYyMzY2NDAzMDU4MzkwMzRlMDkxODQ4NDdiOTdjZTFk
OWFhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQpAQCAtMCwwICsxLDY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiV0tOU0Rh
dGEuaCIKKworQGltcGxlbWVudGF0aW9uIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKy0gKHZvaWQpZGVhbGxvYworeworICAg
IF9yZXNwb25zZS0+fldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoKTsKKworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJu
IF9yZXNwb25zZS0+bmFtZSgpOworfQorCistIChOU1N0cmluZyAqKWRpc3BsYXlOYW1lCit7Cisg
ICAgcmV0dXJuIF9yZXNwb25zZS0+ZGlzcGxheU5hbWUoKTsKK30KKworLSAoTlNEYXRhICopdXNl
ckhhbmRsZQoreworICAgIHJldHVybiB3cmFwcGVyKF9yZXNwb25zZS0+dXNlckhhbmRsZSgpKTsK
K30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0g
KEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfcmVzcG9uc2U7Cit9Cisj
ZW5kaWYKKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2VJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmMzYwMGZjOWYzMGM0OGU3ZGYyNmVk
OWQwM2FhZTk1MDQ5MjFhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVy
bmFsLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1w
b3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCisKKyNpZiBFTkFC
TEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2U+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOworfTsKKworfQorCitAaW50ZXJmYWNlIF9XS1dlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQor
ICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2U+IF9yZXNwb25zZTsKK30KK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAppbmRleCA4NjgwNjIzZmM0OWUwN2FmYzMxYWFjNzYw
ZTViNmE0NGViZjJkMzA4Li40MzFjNjMzYjBmZWIwYjU1MmE2YjlkMTg3ZWFkM2Q2ZmI1YmNjOGMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2U7CiBAY2xhc3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIAogdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCkgewpAQCAt
NjksNiArNzAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNh
dGlvblR5cGUpIHsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsVXBkYXRlKXVwZGF0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAq
KXBhbmVsIGRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0
aGVudGljYXRpb25SZXN1bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsICopcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRlZ2Vy
KXJldHJpZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwg
c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlICo+ICopcmVzcG9uc2VzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCA0NDc0YmFjNjQyN2Qy
MDk2YjRkMTJhZDQ1ZTA4NzBhNWNhMDA5ZmQ5Li4yZWIzMWU4MTJjOTU5OGU4OTg4NDBiOTU1OGNl
MzMyZjJlZDY3OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQsMTAgKzI0
LDEwIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50LmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50
ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4K
IAorI2ltcG9ydCAiV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCiBAaW1wbGVtZW50YXRpb24gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUu
aAppbmRleCBlODM1MzA0MTNiMWRlZTVkOGFkMDRlZjJjMTVmNzdjNjExNmQyZjJhLi5hNDdiMjky
NmMxZDM2NzI1YWMzMjgxMTFiY2RmZGQ1ZjFhNmU0MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKQEAgLTI5LDYgKzI5
LDggQEAKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRy
Lmg+CiAKK0BjbGFzcyBXS1dlYlZpZXc7CisKIEBwcm90b2NvbCBfV0tSZXNvdXJjZUxvYWREZWxl
Z2F0ZTsKIAogbmFtZXNwYWNlIEFQSSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDZiNzgwMGJjOTkwMGZlNjA5
MDMxYTEzZjVhMGVkOWFkYzRmNmViMjAuLmQ0MjYyODUzYzUwYTYwZmJhYjcxNTMwN2QyNTBmMGM4
ZTAxZTM1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jl
c291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIlJlc291cmNlTG9hZERlbGVnYXRlLmgiCiAKKyNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKKyNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oIgogI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQg
Il9XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oIgogCkBAIC04MCw3ICs4Miw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkU2VuZFJlcXVlc3Qo
V2ViS2l0OjpSZXNvdXJjZUxvCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcu
Z2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpj
cmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgpKSBkaWRTZW5kUmVxdWVzdDpyZXF1ZXN0Lm5z
VVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOwor
ICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3Lmdl
dCgpLmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3Jl
YXRlKFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkU2VuZFJlcXVlc3Q6cmVxdWVzdC5uc1VS
TFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJv
ZHkpXTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50
OjpkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmIGxv
YWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIGNvbnN0CkBAIC05Miw3ICs5NCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJLaXQ6CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0
KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpjcmVh
dGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgpKSBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnJl
c3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBuZXdSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhU
VFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CisgICAgW2RlbGVnYXRl
IHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVz
b3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShs
b2FkSW5mbykpLmdldCgpKSBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnJlc3BvbnNlLm5zVVJM
UmVzcG9uc2UoKSBuZXdSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBC
b2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShX
ZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKaW5kZXgg
MzJmYzdkMmQ3ZmZjZDkzMTZmYTY2M2M2MGEyNWZiNmRjMWJhMTEwNi4uZDE2YjE3ZDVmYzZiYzc5
NTIxNGIyN2U4MjU3ZmQ2ZjAwYmQ0YzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaApAQCAtNTEsOCAr
NTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNwb25kUmVjZWl2ZWQoUmVz
cG9uZCYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkb3duZ3JhZGUoQXV0aGVudGljYXRv
ciogaWQsIFJlZjxBdXRoZW50aWNhdG9yPiYmIGRvd25ncmFkZWRBdXRoZW50aWNhdG9yKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdXRoZW50aWNhdG9yU3RhdHVzVXBkYXRlZChXZWJBdXRo
ZW50aWNhdGlvblN0YXR1cykgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2VzKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSA9IDA7CiAgICAg
fTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9y
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggOWNkNDU0N2M4OGFlODQ2ZTlmNTdmODlhNThj
M2ZjNWJlYzJiNjE1MS4uM2RiNjNlZjZiZDVlYTMyYjI5NmFjMDQ2YWE0M2EwZDE0OTdjNWU3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMjczLDE2ICsyNzMsMTYg
QEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQo
V2ViQXV0aGVudGljYXRpb25TdGF0dXMgc3QKICAgICAgICAgcGFuZWwtPmNsaWVudCgpLnVwZGF0
ZVBhbmVsKHN0YXR1cyk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnNlbGVjdEFz
c2VydGlvblJlc3BvbnNlcyhjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+PiYgcmVzcG9uc2VzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Jik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0UGluKHVp
bnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogcGFuZWwgPSBtX3BlbmRp
bmdSZXF1ZXN0RGF0YS5wYW5lbC5nZXQoKSkKLSAgICAgICAgcGFuZWwtPmNsaWVudCgpLnNlbGVj
dEFzc2VydGlvblJlc3BvbnNlcyhyZXNwb25zZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgcGFuZWwtPmNsaWVudCgpLnJlcXVlc3RQaW4ocmV0cmllcywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1
ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RG
OjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRvck1hbmFn
ZXI6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHBhbmVsID0gbV9wZW5kaW5n
UmVxdWVzdERhdGEucGFuZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5jbGllbnQoKS5yZXF1ZXN0
UGluKHJldHJpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcGFuZWwt
PmNsaWVudCgpLnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKHJlc3BvbnNlcywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCiBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNl
cnZpY2U+IEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjcmVhdGVTZXJ2aWNlKEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnQgdHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2
ZXImIG9ic2VydmVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5kZXgg
OWZkNTIzZDQwNzFmMTc4NzIyYzRmZjFmOWQ1MjY0NzExODY4NzlmZS4uYTliNjI5M2M1OGYxMjIw
NDMyZWI3NjViY2YyZDZhMWVkZDliZTU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5oCkBAIC04MSw4ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25kUmVjZWl2ZWQo
UmVzcG9uZCYmKSBmaW5hbDsKICAgICB2b2lkIGRvd25ncmFkZShBdXRoZW50aWNhdG9yKiBpZCwg
UmVmPEF1dGhlbnRpY2F0b3I+JiYgZG93bmdyYWRlZEF1dGhlbnRpY2F0b3IpIGZpbmFsOwogICAg
IHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMp
IGZpbmFsOwotICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNvbnN0IEhhc2hTZXQ8
UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlcXVlc3RQaW4odWludDY0X3QgcmV0cmll
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikg
ZmluYWw7CiAKICAgICAvLyBPdmVycmlkZW4gYnkgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLgog
ICAgIHZpcnR1YWwgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVh
dGVTZXJ2aWNlKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDE0OTk0NjZhMWNlY2E4
ZTlmZDkwZjljZjYxNDI1NjU5MDJhODhmYmYuLmZhZmFhODExMjg3MTI1NWE2YzQ4YzNlMDlkMTEz
ZTlhNzNmYTRhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVw
ZGF0ZVBhbmVsKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IGRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdU
Rjo6U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsKIAogICAgIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwgKm1fcGFuZWw7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOwpAQCAtNTgsNiArNTksNyBA
QCBwcml2YXRlOgogICAgICAgICBib29sIHBhbmVsVXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5l
bCA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdp
dGhSZXN1bHQgOiAxOwogICAgICAgICBib29sIHBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdS
ZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBhbmVsc2VsZWN0QXNz
ZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgfSBtX2RlbGVnYXRlTWV0
aG9kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50Lm1tCmluZGV4IDdmMTU3YmQ5ODQ2OWNkNjY5MWZlMTAwZjNlMzVhNDE5NzM4
ZjVlOTEuLjBjMWJkNGY1YThjOWNkMmUyYzhlOTM4NzJhN2VmMzAyMjZiMjVlZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQpA
QCAtMjgsOCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNpbXBvcnQgIkFQ
SVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCIKICNpbXBvcnQgIkNvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3Mu
aCIKKyNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgogI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpAQCAtNDMsNiArNDUsNyBAQCBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
KF9XS1dlYkF1dGhlbnRpY2F0aW9uUAogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsVXBkYXRl
V2ViQXV0aGVudGljYXRpb25QYW5lbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHBhbmVsOnVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6KV07CiAgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMucGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQg
PSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpkaXNtaXNzV2Vi
QXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
cGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0aW9uSGFuZGxlciA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnJlcXVlc3RQSU5XaXRo
UmVtYWluaW5nUmV0cmllczpjb21wbGV0aW9uSGFuZGxlcjopXTsKKyAgICBtX2RlbGVnYXRlTWV0
aG9kcy5wYW5lbHNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25S
ZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dDo6ZGVsZWdhdGUoKQpAQCAtNjIsNiArNjUsNyBAQCBzdGF0aWMgX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZSB3a1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUoV2ViQXV0aGVudAog
CiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnVwZGF0ZVBhbmVsKFdlYkF1dGhl
bnRpY2F0aW9uU3RhdHVzIHN0YXR1cykgY29uc3QKIHsKKyAgICAvLyBGSVhNRSgyMDYyNDgpCiAg
ICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGll
bnRzJyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQog
ICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0
aGlzLCBzdGF0dXNdIHsKQEAgLTkzLDYgKzk3LDcgQEAgc3RhdGljIF9XS1dlYkF1dGhlbnRpY2F0
aW9uUmVzdWx0IHdrV2ViQXV0aGVudGljYXRpb25SZXN1bHQoV2ViQXV0aGVudGljYXRpb25SZXMK
IAogdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkaXNtaXNzUGFuZWwoV2ViQXV0
aGVudGljYXRpb25SZXN1bHQgcmVzdWx0KSBjb25zdAogeworICAgIC8vIEZJWE1FKDIwNjI0OCkK
ICAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNs
aWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRl
CiAgICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgogICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
IHRoaXMsIHJlc3VsdF0gewpAQCAtMTEyLDYgKzExNyw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudDo6ZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0IHJlc3Vs
dCkKIAogdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpyZXF1ZXN0UGluKHVpbnQ2
NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKKyAgICAvLyBGSVhNRSgyMDYyNDgpCiAgICAg
Ly8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGllbnRz
JyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQogICAg
IC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlz
LCByZXRyaWVzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKQEAgLTE0MSw2ICsxNDcsNDMgQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50OjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5k
bGUKICAgICB9KTsKIH0KIAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYgcmVzcG9uc2VzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIEFTU0VSVCghcmVzcG9uc2VzLmlzRW1wdHkoKSk7
CisgICAgYXV0byBuc1Jlc3BvbnNlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpyZXNwb25zZXMuc2l6ZSgpXSk7CisgICAgZm9yIChhdXRvJiByZXNw
b25zZSA6IHJlc3BvbnNlcykKKyAgICAgICAgW25zUmVzcG9uc2VzIGFkZE9iamVjdDp3cmFwcGVy
KEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNl
LmNvcHlSZWYoKSkpXTsKKworICAgIC8vIEZJWE1FKDIwNjI0OCkKKyAgICAvLyBDYWxsIGRlbGVn
YXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2Ug
dGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCisgICAgLy8gb2YgdGhlIGN1
cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgorICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIG5zUmVzcG9uc2Vz
ID0gV1RGTW92ZShuc1Jlc3BvbnNlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBp
T2JqZWN0XSkucmVzcG9uc2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsc2VsZWN0QXNzZXJ0aW9uUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rh
dGljX2Nhc3Q8QVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlJj4oW1tuc1Jl
c3BvbnNlcyBmaXJzdE9iamVjdF0gX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fZGVsZWdh
dGUuZ2V0KCk7CisgICAgICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0YXRpY19jYXN0PEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZSY+KFtbbnNSZXNwb25zZXMgZmlyc3RPYmplY3RdIF9hcGlPYmplY3RdKS5yZXNwb25zZSgp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwg
QHNlbGVjdG9yKHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVy
OikpOworICAgICAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNw
b25zZTpuc1Jlc3BvbnNlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpXShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpy
ZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhh
bmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UmPihbcmVzcG9uc2UgX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAgICAgICB9
KS5nZXQoKV07CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5j
cHAKaW5kZXggM2MzZjk2MjE4YWJiZTVmNmMxMjIxMDk5NzQ5ZGU5NzRjZWVhODE2OC4uOWEwYThk
YjI3ZGE1YTJhMzBkMmZlMWZkNTQ5Yjc3MmQ2ZGYyYTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwQXV0aGVudGljYXRvci5jcHAKQEAgLTE1MSwxMSArMTUxLDExIEBAIHZvaWQgQ3RhcEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlR2V0TmV4dEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZChW
ZWN0b3I8dWluCiAKICAgICBpZiAoIW1fcmVtYWluaW5nQXNzZXJ0aW9uUmVzcG9uc2VzKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKLSAgICAgICAg
ICAgIG9ic2VydmVyLT5zZWxlY3RBc3NlcnRpb25SZXNwb25zZXMobV9hc3NlcnRpb25SZXNwb25z
ZXMsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGNvbnN0IFJlZjxBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiByZXNwb25zZSkgeworICAgICAgICAgICAgb2Jz
ZXJ2ZXItPnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKG1fYXNzZXJ0aW9uUmVzcG9uc2VzLCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgYXV0byByZXR1cm5SZXNwb25zZSA9
IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLnRha2UocmVzcG9uc2UpOworICAgICAgICAgICAgICAgIGF1
dG8gcmV0dXJuUmVzcG9uc2UgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy50YWtlKGNvbnN0X2Nhc3Q8
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKj4oJnJlc3BvbnNlKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFyZXR1cm5SZXNwb25zZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJldHVyblJlc3BvbnNlKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0N0YXBBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKaW5kZXggMjVmZTkwMzJmOGU0MDRl
YmY3YjVhOTE3YmRkODJkZGZkNDdiY2I5Zi4uNmUzZGUwMTFjYzQwNTg3YmFmZDg4YWRhZWM1NmVk
NjY0N2ViZWQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaApAQCAtNjMs
NyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0UmV0cmllcygpOwogICAgIHZvaWQgY29u
dGludWVHZXRLZXlBZ3JlZW1lbnRBZnRlckdldFJldHJpZXMoVmVjdG9yPHVpbnQ4X3Q+JiYpOwog
ICAgIHZvaWQgY29udGludWVSZXF1ZXN0UGluQWZ0ZXJHZXRLZXlBZ3JlZW1lbnQoVmVjdG9yPHVp
bnQ4X3Q+JiYsIHVpbnQ2NF90IHJldHJpZXMpOwotICAgIHZvaWQgY29udGludWVHZXRQaW5Ub2tl
bkFmdGVyUmVxdWVzdFBpbihjb25zdCBTdHJpbmcmIHBpbiwgY29uc3QgQ3J5cHRvS2V5RUMmKTsK
KyAgICB2b2lkIGNvbnRpbnVlR2V0UGluVG9rZW5BZnRlclJlcXVlc3RQaW4oY29uc3QgU3RyaW5n
JiBwaW4sIGNvbnN0IFdlYkNvcmU6OkNyeXB0b0tleUVDJik7CiAgICAgdm9pZCBjb250aW51ZVJl
cXVlc3RBZnRlckdldFBpblRva2VuKFZlY3Rvcjx1aW50OF90PiYmLCBjb25zdCBmaWRvOjpwaW46
OlRva2VuUmVxdWVzdCYpOwogCiAgICAgYm9vbCB0cnlEb3duZ3JhZGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhl
bnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9GaWRvQXV0aGVudGljYXRvci5jcHAKaW5kZXggNmY3ZmI1M2U2NTJhMmMxNzIzMTNiYTJl
ZjMwYzIwODlkOTc0MzE5ZS4uNmI1MWJmOTkzZDNhZDE4MThmYTUwNGY1OGVhNWNhZTlhNjUzODg4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9GaWRvQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvQXV0aGVudGljYXRvci5jcHAKQEAgLTI4LDYgKzI4
LDggQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNpbmNsdWRlICJDdGFwRHJpdmVyLmgi
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBGaWRvQXV0aGVudGljYXRvcjo6Rmlkb0F1dGhlbnRp
Y2F0b3Ioc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWZiZGMyNTc1ZTQ0
ODE4NWU0YmNiYzg0MmU0ZjdhNTQ0MzEzYjQzOS4uY2VlMjIyYTNmYTQ3Y2E5MGQwYjFiZGM1Njgw
ZTE4YTQ4YzQxMmE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMDk1LDYgKzEwOTUsOSBAQAogCQk1NzdGRjc4MjIzNDZFODFDMDA0
RURGQjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc3RkY3ODEyMzQ2RTgxQzAwNEVERkI5
IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCAqLzsgfTsKIAkJNTc3RkY3ODUy
MzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3N0ZGNzgzMjM0NkVDQUEw
MDRFREZCOSAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi87IH07CiAJCTU3OERD
Mjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OERDMjk3MjE1NUEw
MDEwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCAqLzsgfTsKKwkJNTc5
RjFCRjYyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
OUYxQkY0MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTc5RjFCRjkyM0M4MEVDNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTc5RjFCRjgyM0M4MEVDNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oICovOyB9OworCQk1NzlGMUJGQzIzQzgxMUNG
MDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5RjFCRkEyM0M4MTFD
RjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLzsg
fTsKIAkJNTdBQzhGNTAyMTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QUM4RjRFMjE3RkVFRDkw
MDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggKi87IH07CiAJCTU3QjRCNDYwMjBCNTA0QUMwMEQ0
QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I0QjQ1RTIwQjUw
NEFCMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50
cy5oICovOyB9OwogCQk1N0I4MjY0MTIzMDRFQjNFMDBCNzJFQjAgLyogTmVhckZpZWxkU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0MDIz
MDRFQjNFMDBCNzJFQjAgLyogTmVhckZpZWxkU1BJLmggKi87IH07CkBAIC0zNzU1LDYgKzM3NTgs
MTEgQEAKIAkJNTc3RkY3ODMyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzdGRjc4NDIzNDZFQ0FBMDA0RURGQjkg
LyogV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3OERDMjk3MjE1NUEwMDEwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29m
dExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3OUYxQkY0MjNDODBEQjYwMEM3RDRCNCAvKiBf
V0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc5RjFCRjUyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1NzlGMUJGODIzQzgwRUM2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1NzlGMUJGQTIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3OUYxQkZCMjND
ODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0FDOEY0RTIxN0ZFRUQ5MDA1
NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIaWRDb25uZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QUM4RjRGMjE3RkVFRDkwMDU1NDM4QyAv
KiBIaWRDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSGlkQ29ubmVjdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNEI0NUQyMEI1MDRBQjAwRDRBRDc5
IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODQ1LDYgKzY4NTMsOSBAQAogCQkJCTFBODFCMzdGMThC
RDY2QUQwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlLmggKi8sCiAJCQkJMUE4MUIzN0Ux
OEJENjZBRDAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmUubW0gKi8sCiAJCQkJMUE4MUIz
ODQxOEJENjczQTAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oICovLAor
CQkJCTU3OUYxQkY0MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmggKi8sCisJCQkJNTc5RjFCRjUyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0gKi8sCisJCQkJNTc5RjFCRjgyM0M4
MEVDNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRl
cm5hbC5oICovLAogCQkJCTU3NDcyOENGMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmggKi8sCiAJCQkJNTc0NzI4RDAyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gKi8sCiAJCQkJNTc0NzI4RDMyMzQ1NzBBRTAwMTcwMEFG
IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oICovLApAQCAtODUyNiw2ICs4
NTM3LDggQEAKIAkJCQk3Qzg5RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5o
ICovLAogCQkJCTJEODc4NjIxMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5j
cHAgKi8sCiAJCQkJMkQ4Nzg2MjIxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0
LmggKi8sCisJCQkJNTc5RjFCRkIyM0M4MTFDRjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwICovLAorCQkJCTU3OUYxQkZBMjNDODExQ0YwMEM3RDRC
NCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi8sCiAJCQkJNTdF
QkUyNjkyMzQ2NzZDNTAwOEQ4QUY5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwICov
LAogCQkJCTU3RUJFMjY4MjM0Njc2QzUwMDhEOEFGOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBh
bmVsLmggKi8sCiAJCQkJNTc3RkY3ODEyMzQ2RTgxQzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQuaCAqLywKQEAgLTk4OTYsNiArOTkwOSw4IEBACiAJCQkJMkQ4Nzg2
MjAxQkRCNTdGNTAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBODFCMzgxMThCRDY2QUQwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTgxQjM4NTE4QkQ2NzNBMDAwN0ZEQUMgLyogX1dL
VmlzaXRlZExpbmtTdG9yZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzlGMUJGNjIz
QzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTc5RjFCRjkyM0M4MEVDNjAwQzdENEI0IC8qIF9XS1dlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTc0NzI4RDEyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3NDcyOEQ0MjM0NTcwQUUwMDE3MDBBRiAvKiBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTI4Njc4
MUM3RTc2NTEwMDY5QUM0RiAvKiBfV0tXZWJzaXRlRGF0YVNpemUuaCBpbiBIZWFkZXJzICovLApA
QCAtOTk3OCw2ICs5OTkzLDcgQEAKIAkJCQkyRDg3ODYyNDFCREI1OEZGMDBEMDJBQkIgLyogQVBJ
VXNlclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1RTFBRkVEMTZCMjEwMTcwMDZD
QzFGMiAvKiBBUElXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUUxQUZFRjE2QjIx
MDI5MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NzlGMUJGQzIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFQkUyNkEyMzQ2NzZDNTAwOEQ4QUY5
IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3N0ZG
NzgyMjM0NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUUyODY4NDFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0
ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhOTZiMjA0ZGFiY2Y2NGI2MDY4NTZjNWU2MzJhNGRi
MzFmNjFjMDkuLjA5OThiMTM5NjI0YzJhZGUzMjhhODBjZDZiM2E1YjBlNjFhNzg3OWYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMC0wMS0xMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSB0byB0ZWxsIFVJIGNsaWVudHMgdG8gc2Vs
ZWN0IGFzc2VydGlvbiByZXNwb25zZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjExMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTU3MzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0
ZSBwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXM6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0
aXBsZS1hY2NvdW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWw6
CisKIDIwMjAtMDEtMDYgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgQ1RBUCBDbGllbnQgUGluCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDkxZWJlZWQ1ZDkxYzUxMDMwYTk2Y2M3MTMyNDk5YzNmOTNjZjI5ODAuLmRlMzFi
MWVmY2Q5NzJkOTJiYjA0M2U3ODg0NzRiMzJhZjdlNTk1MGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zNjgsNiArMzY4LDcgQEAKIAkJNTc5N0ZFMzMxRUIxNUFCMTAwQjJGNEEwIC8qIG5h
dmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5N0ZFMzIxRUIxNUE4OTAwQjJGNEEw
IC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwgKi87IH07CiAJCTU3OTgz
MzdFMjM2MDE5QTQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFs
LWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWhpZC5odG1sICovOyB9OwogCQk1Nzk4MzM5MjIzNjhGQTM3MDA4RTU1NDcg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Nzk4MzM3QjIzNUVCNjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCAqLzsgfTsKKwkJNTc5RjFDMDEyM0M5M0FGNTAwQzdE
NEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2Nv
dW50cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3OUYxQkZGMjNDOTJGRDMwMEM3RDRCNCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCAqLzsgfTsKIAkJNTdBNzk4NTcy
MjRBQjM0RTAwQTdGNkYxIC8qIFdlYkNyeXB0b01hc3RlcktleS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QTc5ODU2MjI0QUIzNEUwMEE3RjZGMSAv
KiBXZWJDcnlwdG9NYXN0ZXJLZXkubW0gKi87IH07CiAJCTU3QzNGQTY2MUY3QzI0OEYwMDlENEI4
MCAvKiBXZWFrUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDQjlCQzM3MUE2NzQ4MjMwMEZFNTY3OCAvKiBXZWFrUHRyLmNwcCAqLzsgfTsKIAkJ
NTdDNjI0NEUyMzQ2QkNGQTAwMzgzRkU3IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0M2MjQ0RDIz
NDZCQ0ZBMDAzODNGRTcgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSAqLzsgfTsKQEAg
LTE0ODQsNiArMTQ4NSw3IEBACiAJCQkJMkVCRDlEMEEyMTM0NzMwRDAwMkRBNzU4IC8qIHZpZGVv
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0Q1Nzc3OTkyMTFDRTBFNDAwMUIzNzFF
IC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2NjNE
RjMyMzU3RTQ4OTAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhp
ZC1jYW5jZWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk1NzlGMUMwMTIzQzkzQUY1
MDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxl
LWFjY291bnRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc3NDU0RDAyMzU5QjM3
ODAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1uby1jcmVk
ZW50aWFscy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3MEQyNkZDMjNDM0Y4NzAw
MEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2NjNERUMyMzRGMUY5MzAwRTg1RTA5IC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLApAQCAtMTk0OSw2ICsxOTUxLDcgQEAKIAkJNTc5ODMzN0IyMzVFQjY1QzAwOEU1NTQ3IC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWhpZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Nzk4RTJBRjFDQUY1QzI4MDBDNUNCQTAgLyogUHJvdmlzaW9uYWxVUkxOb3RD
aGFuZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm92aXNp
b25hbFVSTE5vdENoYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFC
RkYyM0M5MkZEMzAwQzdENEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhp
ZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1n
ZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTdBNzk4NTYyMjRBQjM0RTAwQTdGNkYxIC8qIFdlYkNyeXB0b01hc3Rl
cktleS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNyeXB0b01hc3RlcktleS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDNjI0NEQyMzQ2QkNGQTAwMzgzRkU3IC8qIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0M2
MjQ0RjIzNDZDMUVDMDAzODNGRTcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24u
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1MDEsNiAr
MzUwNCw3IEBACiAJCQkJQ0Q1Nzc3OUIyMTFDRTZDRTAwMUIzNzFFIC8qIHZpZGVvLXdpdGgtYXVk
aW8tYW5kLXdlYi1hdWRpby5odG1sICovLAogCQkJCUNENTc3Nzk4MjExQ0RFOEYwMDFCMzcxRSAv
KiB3ZWItYXVkaW8tb25seS5odG1sICovLAogCQkJCTU3NjYzREYyMjM1N0U0NUQwMEU4NUUwOSAv
KiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsLmh0bWwgKi8sCisJ
CQkJNTc5RjFCRkYyM0M5MkZEMzAwQzdENEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sICovLAogCQkJCTU3NzQ1NENGMjM1OUIz
MzgwMDhFMUVENyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbm8tY3Jl
ZGVudGlhbHMuaHRtbCAqLywKIAkJCQk1NzBEMjZGQjIzQzNGODY1MDBENUNGNjcgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sICovLAogCQkJCTU3NjYzREVC
MjM0RjFGODAwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQu
aHRtbCAqLywKQEAgLTQ4NzAsNyArNDg3NCw2IEBACiAJCQkJMkQyQkVCMkQyMjMyNEU1RjAwNTU0
NENBIC8qIFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0UwQzQxRDBBNjU0MjAwRkVCQ0YzIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVJl
dmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNEMjdBMUMxMjND
NjYxRUQwMDZFMTFERCAvKiBXS1dlYlZpZXdQYXVzZVBsYXlpbmdBdWRpb1Rlc3RzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdGMEYxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVdpbmRvd0Fm
dGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCN0FGREMyM0M0NTI5NzAwRTQ5Q0Yz
IC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDOEUxQTUx
RjI2QUY0QzAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gaW4gU291cmNlcyAq
LywKQEAgLTUwNTIsNiArNTA1NSw3IEBACiAJCQkJRDM0RTA4NzYxRTRFNDJFMTAwNUZGMTRBIC8q
IFdLV2ViVmlld0dldENvbnRlbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRGQTkxODExRTYx
ODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFDQUNBREExMjMwNjIwQUUwMDA3RDU0QyAvKiBXS1dlYlZpZXdPcGFxdWUubW0gaW4g
U291cmNlcyAqLywKKwkJCQlDRDI3QTFDMTIzQzY2MUVEMDA2RTExREQgLyogV0tXZWJWaWV3UGF1
c2VQbGF5aW5nQXVkaW9UZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMDFEMDZFMjMyMThG
RUUwMDM5QUEzQSAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTM3QTlEQkU5MjEzQjRDOTMwMEQyNjFBMiAvKiBXS1dlYlZpZXdTZXJ2ZXJUcnVzdEtWQy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTkzRjU2REE5MUU1RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZp
ZXdTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCmluZGV4IDBjYjI0NzhkYzliMTljN2FhYTIxNGM4MzhhZmZiYjNjMWMyYWZkM2QuLmE5
NzU4MzMwNGU2OGE5MDliZGQzMGI4MDdmNzk1OGY3MmU2NDBjMjggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTM1LDggKzM1LDEwIEBACiAjaW1wb3J0IDxXZWJLaXQv
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oPgorI2ltcG9y
dCA8V2ViS2l0L19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg+CiAjaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNh
dGlvblBhbmVsUmFuID0gZmFsc2U7CkBAIC00Niw2ICs0OCw3IEBAIHN0YXRpYyBib29sIHdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50ID0gZmFsc2U7CiBz
dGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTm9DcmVkZW50aWFsc0ZvdW5k
ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRp
YXRlbHkgPSBmYWxzZTsKIHN0YXRpYyBTdHJpbmcgd2ViQXV0aGVudGljYXRpb25QYW5lbFBpbjsK
K3N0YXRpYyBCT09MIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9IE5POwog
CiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgOiBOU09iamVj
dCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPgogQGVuZApAQCAtOTEsNiArOTQs
MjAgQEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJl
cXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczoKICAgICBjb21wbGV0aW9uSGFuZGxlcih3ZWJB
dXRoZW50aWNhdGlvblBhbmVsUGluKTsKIH0KIAorLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlOihOU0FycmF5IDwg
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3BvbnNlcyBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZSAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIEVYUEVDVF9FUShyZXNwb25zZXMuY291
bnQsIDJ1bCk7CisgICAgZm9yIChfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
ICpyZXNwb25zZSBpbiByZXNwb25zZXMpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNl
Lm5hbWUgaXNFcXVhbDpAImpvaG5wc21pdGhAZXhhbXBsZS5jb20iXSB8fCBbcmVzcG9uc2UubmFt
ZSBpc0VxdWFsOkAiIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzcG9uc2UuZGlzcGxheU5h
bWUgaXNFcXVhbDpAIkpvaG4gUC4gU21pdGgiXSB8fCBbcmVzcG9uc2UuZGlzcGxheU5hbWUgaXNF
cXVhbDpAIiJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tyZXNwb25zZS51c2VySGFuZGxlIGJh
c2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXSBpc0VxdWFsOkAiTUlJQmt6Q0NBVGlnQXdJ
QkFqQ0NBWk13Z2dFNG9BTUNBUUl3Z2dHVE1JST0iXSB8fCAhcmVzcG9uc2UudXNlckhhbmRsZSk7
CisgICAgfQorCisgICAgYXV0byBpbmRleCA9IHdlYWtSYW5kb21VaW50MzIoKSAlIDI7CisgICAg
d2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gcmVzcG9uc2VzW2luZGV4XS51
c2VySGFuZGxlID8gTk8gOiBZRVM7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzW2lu
ZGV4XSk7Cit9CisKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5l
bEZha2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdh
dGU+CkBAIC04NzIsNiArODg5LDQwIEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0
QXNzZXJ0aW9uUGluKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJd
OwogfQogCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE11bHRpcGxlQWNjb3VudHNOdWxs
RGVsZWdhdGUpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1
dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1
cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVy
bmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0
aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFtkZWxlZ2F0ZSBzZXRJc051bGw6dHJ1ZV07CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBNdWx0aXBsZUFjY291bnRzKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cyIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rl
c3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJ
bldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0
dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
WmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVz
dFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJd
OworICAgIEVYUEVDVF9FUShbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InVzZXJIYW5kbGUiXSBpc0VxdWFsVG9TdHJpbmc6QCI8bnVsbD4iXSwgd2ViQXV0aGVudGljYXRp
b25QYW5lbE51bGxVc2VySGFuZGxlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBs
ZS1hY2NvdW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MzdlNDIwNzk1ZmQ1Njc3YmQ1MGYxMWRkNTRl
YTYwNDI0OWFlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBs
ZS1hY2NvdW50cy5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
aW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUxvbmdCYXNl
NjQgPQorICAgICAgICAiQUtVQm9tSnBaRmhBS0FpdHp1aitUc2x6ZWxmMy92WndJR3REUU5nb0tl
RmQ1b0VpZVl6aHl6QTY1c2FmMHRLMiIgKworICAgICAgICAidy9tb29hN3RRdEdnRGR3WklqT2hq
Y3VaMHBRMWFqb0U0R1IwZVhCbGFuQjFZbXhwWXkxclpYa0NXQ1ZHekgrNSIgKworICAgICAgICAi
WjUxVnN0dVFrdUhJMmVYaDBDdDFnUEMwZ1N4M0NXTGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NG
VHV1QldnQiIgKworICAgICAgICAiNC9GMFZCN0RsVVZNMDlJSFBteGUxTXpIVXdSb0NSWmJDQUln
R0tvdjZ4b0F4Mk1FZjYvNnFOczhPdXR6aFAyQyIgKworICAgICAgICAiUW9KMUw3RmU2NEc5dUJj
RXBHSnBaRmdnTUlJQmt6Q0NBVGlnQXdJQkFqQ0NBWk13Z2dFNG9BTUNBUUl3Z2dHVCIgKworICAg
ICAgICAiTUlKa2FXTnZibmdvYUhSMGNITTZMeTl3YVdOekxtRmpiV1V1WTI5dEx6QXdMM0F2WVVK
cWFtcHdjVkJpTG5CdSIgKworICAgICAgICAiWjJSdVlXMWxkbXB2YUc1d2MyMXBkR2hBWlhoaGJY
QnNaUzVqYjIxclpHbHpjR3hoZVU1aGJXVnRTbTlvYmlCUSIgKworICAgICAgICAiTGlCVGJXbDBh
QVVDIjsKKyAgICBjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NCA9CisgICAgICAgICJB
S01Cb21KcFpGaEFLQWl0enVqK1RzbHplbGYzL3Zad0lHdERRTmdvS2VGZDVvRWllWXpoeXpBNjVz
YWYwdEsyIiArCisgICAgICAgICJ3L21vb2E3dFF0R2dEZHdaSWpPaGpjdVowcFExYWpvRTRHUjBl
WEJsYW5CMVlteHBZeTFyWlhrQ1dDVkd6SCs1IiArCisgICAgICAgICJaNTFWc3R1UWt1SEkyZVho
MEN0MWdQQzBnU3gzQ1dMaDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiArCisgICAg
ICAgICI0L0YwVkI3RGxVVk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82
cU5zOE91dHpoUDJDIiArCisgICAgICAgICJRb0oxTDdGZTY0Rzl1QmM9IjsKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBwYXlsb2FkQmFz
ZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VMb25nQmFzZTY0LCB0ZXN0QXNzZXJ0aW9uTWVzc2Fn
ZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7
IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGJ5dGVzVG9IZXhTdHJp
bmcoYnl0ZXMpCisgICAgeworICAgICAgICBpZiAoIWJ5dGVzKQorICAgICAgICAgICAgcmV0dXJu
IG51bGw7CisKKyAgICAgICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShieXRlcyk7CisgICAgICAg
IHZhciBoZXhCeXRlcyA9IFtdOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBieXRlU3RyaW5nID0gYnl0ZXNbaV0udG9T
dHJpbmcoMTYpOworICAgICAgICAgICAgaWYgKGJ5dGVTdHJpbmcubGVuZ3RoIDwgMikKKyAgICAg
ICAgICAgICAgICBieXRlU3RyaW5nID0gIjAiICsgYnl0ZVN0cmluZzsKKyAgICAgICAgICAgIGhl
eEJ5dGVzLnB1c2goYnl0ZVN0cmluZyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaGV4
Qnl0ZXMuam9pbigiIik7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwK
KyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMDAKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAg
ICAgIHVzZXJIYW5kbGUgPSBieXRlc1RvSGV4U3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UudXNl
ckhhbmRsZSk7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAg
IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJT
dWNjZWVkZWQhIik7CisgICAgfSwgZXJyb3IgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZyhl
cnJvci5tZXNzYWdlKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEhhbmRsZXIucG9zdE1lc3NhZ2UoZXJyb3IubWVzc2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1
dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1o
aWQuaHRtbAppbmRleCA1YjZhZWJlYmYxMjRiMTAzOWVkMDc5NGVkMjJkM2RiNjhlYTM0YWZjLi5l
OTgxYTcwZjk5NzE5MTU1ZDBmYjNlNzk4ZTU2MTUyYWYzYjg2ODc4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtl
LWNyZWRlbnRpYWwtaGlkLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sCkBAIC0z
OSw3ICszOSw3IEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcg
VWludDhBcnJheSgxNiksCiAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAi
cHVibGljLWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAg
ICAgICAgIHRpbWVvdXQ6IDEwMCwKICAgICAgICAgfQogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387727</attachid>
            <date>2020-01-14 16:29:36 -0800</date>
            <delta_ts>2020-01-14 16:47:27 -0800</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>bug-206112-20200114162935.patch</filename>
            <type>text/plain</type>
            <size>60270</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNzFjMzc5NTMzOTc2NGJi
YzcwYmJjZjFhMDVlNzc4ZjQ5MGFiNTIuLjVlZWFiYThlNTg1OTFhODNjMzM4NTQ3MmU3ZWVlNTMx
Y2U1NjkyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDEtMTAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBTUEkgdG8gdGVsbCBVSSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDk1NzMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGRlbGVnYXRlIG1ldGhvZCBpbiBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGUgdG8gdGVsbCBVSSBjbGllbnRzIHRvCisgICAgICAgIHNlbGVj
dCBhbiBhc3NlcnRpb24gcmVzcG9uc2Ugd2hlbiBtdWx0aXBsZSBhcmUgcmV0dXJuZWQgZnJvbSBh
biBhdXRoZW50aWNhdG9yLiBIZXJlIGlzIHRoZSBTUEk6CisgICAgICAgIEBwcm90b2NvbCBfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2JqZWN0PgorICAgICAgICBAb3B0aW9u
YWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Ug
KikpY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIC4uLgorICAgICAgICBAZW5kCisKKyAgICAg
ICAgQSBuZXcgaW50ZXJmYWNlIGlzIGludHJvZHVjZWQgdG8gcmVwcmVzZW50IGFuIGF1dGhlbnRp
Y2F0b3IgYXNzZXJ0aW9uIHJlc3BvbnNlOgorICAgICAgICBAaW50ZXJmYWNlIF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgOiBOU09iamVjdAorICAgICAgICBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOworICAgICAgICBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsK
KyAgICAgICAgQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVz
ZXJIYW5kbGU7CisgICAgICAgIEBlbmQKKyAgICAgICAgT25seSBtZW1iZXJzIHRoYXQgY2FuIGFz
c2lzdCB1c2VycyB0byBtYWtlIGEgZGVjaXNpb24gYXJlIGV4cG9zZWQgdG8gVUkgY2xpZW50cy4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNw
cDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oLgorICAgICAgICAoQVBJOjpXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAgICAgICgt
W19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgZGVhbGxvY10pOgorICAgICAg
ICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIG5hbWVdKToKKyAgICAg
ICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBkaXNwbGF5TmFtZV0p
OgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIHVzZXJI
YW5kbGVdKToKKyAgICAgICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMS0xNCAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjI1NDUzMyBhbmQgcjI1NDUzNS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZS5oCmluZGV4IGRjNGM4MDM3YTM1NjgxM2JlNTJiYzM3OWY0ODdmNWI1NzkxYzhl
NTIuLmQ3MGE5Y2NmOGYzOTFiMGRkNjJjMmExMTRlMTE1MmY5ZjZjMGQ2YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtNDIsOSArNDIsOSBAQCBwdWJsaWM6CiAgICAgQXJy
YXlCdWZmZXIqIHVzZXJIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0KCk7
IH0KIAogICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFt
ZTsgfQotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29u
c3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdm9pZCBzZXRE
aXNwbGF5TmFtZShjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKSB7IG1fZGlzcGxheU5hbWUgPSBk
aXNwbGF5TmFtZTsgfQotICAgIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcGxheU5hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZDcmVkZW50aWFscyhz
aXplX3QgbnVtYmVyT2ZDcmVkZW50aWFscykgeyBtX251bWJlck9mQ3JlZGVudGlhbHMgPSBudW1i
ZXJPZkNyZWRlbnRpYWxzOyB9CiAgICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25z
dCB7IHJldHVybiBtX251bWJlck9mQ3JlZGVudGlhbHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSU9iamVjdC5oCmluZGV4IGZkYjgxZjQxMzU1MWZmYzJjYmQxZTI3ZjBiNDBkMjRiODRkZDg5
YmYuLjhkYTEzYzRiMzNjNzA4OTQ0YWIyMThiMzY3MDhlNzE2YzA4NDU5OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTE4Myw2ICsxODMsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UsCiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDY0MmY2ZWY0YmRj
N2IzNDFmODJiZDQ2NjNlYTNkMTkzMWU4NTIwZTcuLmJmMjRkYjZhYjk1NjA2OTBkYzgzNTQ1ZWM5
OTYzODExZWU2MmQ3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0K
QEAgLTg4LDYgKzg4LDcgQEAKICNpbXBvcnQgIl9XS1VzZXJJbml0aWF0ZWRBY3Rpb25JbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
VmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25JbnRlcm5hbC5oIgogCkBAIC0zODksNiArMzkwLDkgQEAgdm9pZCogT2JqZWN0OjpuZXdP
YmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGU6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bCBhbGxvY107CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6V2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZToKKyAgICAgICAgd3JhcHBlciA9IFtfV0tXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAog
ICAgIGNhc2UgVHlwZTo6QnVuZGxlRnJhbWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA2MDZmMDM5NGUxMDNk
ZDliMjEyYTQzOTRhODc0NjBjMjVjMjVkN2ZlLi45ZGFmM2U3ODNlYjcwMjYzYzczYTk1NzQwNjJl
NWFlZTIyMzZkNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTM0MSw2ICszNDEsNyBAQCBVSVByb2Nlc3Mv
QVBJL0FQSVVSTFNjaGVtZVRhc2suY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29y
bGQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQ
SVVzZXJTdHlsZVNoZWV0LmNwcAorVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBh
bmVsLmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCiBVSVByb2Nlc3Mv
QVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcApAQCAtNDAzLDcgKzQwNCw4IEBAIFVJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCiBVSVByb2Nl
c3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAKIFVJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwCiAKLVVJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5jcHAKKy8vIEZJWE1FKDIwNjI2Nik6IEF1dG9tYXRpb25Qcm90
b2NvbE9iamVjdHMuaCdzICJuYW1lc3BhY2UgUHJvdG9jb2wiIGNvbmZsaWN0cyB3aXRoIG9iamMv
cnVudGltZS5oJ3MgInR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0IFByb3RvY29sIgorVUlQcm9j
ZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAogCiBVSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzk0
YzY3MDQ0NWZmZDE3MmZlMDJmMTU2ZDYwZTVmMTFlZmU5N2Q4NS4uYjczZGQ4MTU3ZWZhMjA3ZDZj
ZmMyOGY0YjNmZThhMmM5MDU1MTU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjc4LDYg
KzI3OCw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VySW5pdGlhdGVkQWN0aW9uLm1tCiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Zpc2l0
ZWRMaW5rU3RvcmUubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU2l6ZS5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50LmgKaW5kZXggMjE4
MWQ4ZDU3NGQzZjU0YTZmYjg3NTY5M2EwMjcyYmE0YzJlNTRiYy4uYTMwZGQ5NTIzMWRmNGY4YjFj
NmE4YTFjYmI1NmUyNTY4ZDcwMWI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQuaApAQCAtMjUsNiArMjUsMTAgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzk3NmZmNTJlYThlMTVhYjY4MGE1
NjNlNDMxMDg2OGVjZDMxMDBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIgorCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKworI2luY2x1ZGUgIkFQSURhdGEuaCIKKworbmFtZXNwYWNlIEFQSSB7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2U+IFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8V2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Uo
V1RGTW92ZShyZXNwb25zZSkpKTsKK30KKworV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZShSZWY8V2ViQ29yZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQorICAgIDogbV9yZXNwb25z
ZShXVEZNb3ZlKHJlc3BvbnNlKSkKK3sKK30KKworV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZTo6fldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7
CisKK1JlZlB0cjxEYXRhPiBXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjp1c2Vy
SGFuZGxlKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOworICAgIGlmIChh
dXRvKiB1c2VySGFuZGxlID0gbV9yZXNwb25zZS0+dXNlckhhbmRsZSgpKSB7CisgICAgICAgIHVz
ZXJIYW5kbGUtPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0
Q29weWluZyhyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPih1c2VySGFuZGxlLT5kYXRh
KCkpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCksIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qg
dm9pZCogZGF0YSkgeworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QXJyYXlCdWZmZXIqPihjb25z
dF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgICAgIH0sIHVzZXJIYW5kbGUpOwor
ICAgIH0KKyAgICByZXR1cm4gZGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDE3NjIwODA1ZDQzZGY3ZDA3NmI0OWUwMDhjMjExYzg2MWY1MjhjZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBEYXRhOworCitjbGFzcyBXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2Jq
ZWN0OjpUeXBlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlPiBjcmVh
dGUoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJik7CisgICAg
fldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoKTsKKworICAgIGNvbnN0IFdURjo6
U3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS0+bmFtZSgpOyB9CisgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25z
ZS0+ZGlzcGxheU5hbWUoKTsgfQorICAgIFJlZlB0cjxEYXRhPiB1c2VySGFuZGxlKCkgY29uc3Q7
CisKKyAgICBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmIHJl
c3BvbnNlKCkgeyByZXR1cm4gbV9yZXNwb25zZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4mJik7CisKKyAgICBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBtX3Jlc3BvbnNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJ
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgK
aW5kZXggMDA2MmY5YTdkOTc0NzI2NmY3ZjYyMjFmNGU3OWQ1ODU3ZmZjMjMxYy4uNzAxMGQ3OGQ4
NjRmZDBkYzI0N2U2YjAyYzFlOTI3ODBlN2RhODU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQ
YW5lbChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSBjb25zdCB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlzbWlzc1BhbmVsKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNv
bnN0IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZXMoY29uc3Qg
SGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJl
c3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7
IGNvbXBsZXRpb25IYW5kbGVyKCpyZXNwb25zZXMuYmVnaW4oKSk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6
OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVy
KGVtcHR5U3RyaW5nKCkpOyB9CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3Bv
bnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4+JiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNv
bnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhhbmRsZXIoKnJl
c3BvbnNlcy5iZWdpbigpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTJmNWFm
MDJkNDRlZGFhYzIwZTljODk0MmExYjUwMTE4Y2ZkNzM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBf
V0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIDogTlNPYmplY3QKKworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7CisK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3MWYyMzY2NDAzMDU4MzkwMzRl
MDkxODQ4NDdiOTdjZTFkOWFhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5t
bQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKKwor
I2ltcG9ydCAiV0tOU0RhdGEuaCIKKworQGltcGxlbWVudGF0aW9uIF9XS1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKy0gKHZvaWQp
ZGVhbGxvYworeworICAgIF9yZXNwb25zZS0+fldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1l
Cit7CisgICAgcmV0dXJuIF9yZXNwb25zZS0+bmFtZSgpOworfQorCistIChOU1N0cmluZyAqKWRp
c3BsYXlOYW1lCit7CisgICAgcmV0dXJuIF9yZXNwb25zZS0+ZGlzcGxheU5hbWUoKTsKK30KKwor
LSAoTlNEYXRhICopdXNlckhhbmRsZQoreworICAgIHJldHVybiB3cmFwcGVyKF9yZXNwb25zZS0+
dXNlckhhbmRsZSgpKTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxl
bWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpf
cmVzcG9uc2U7Cit9CisjZW5kaWYKKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmMzYwMGZj
OWYzMGM0OGU3ZGYyNmVkOWQwM2FhZTk1MDQ5MjFhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZUludGVybmFsLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJBUElXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOworfTsKKworfQorCitAaW50
ZXJmYWNlIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKCkgPFdLT2JqZWN0
PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OldlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IF9yZXNwb25zZTsKK30KK0BlbmQKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAppbmRleCA4NjgwNjIzZmM0
OWUwN2FmYzMxYWFjNzYwZTViNmE0NGViZjJkMzA4Li40MzFjNjMzYjBmZWIwYjU1MmE2YjlkMTg3
ZWFkM2Q2ZmI1YmNjOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTMxLDYgKzMx
LDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xhc3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bDsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bFJlc3VsdCkgewpAQCAtNjksNiArNzAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgKilwYW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOihfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKXVwZGF0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbCAqKXBhbmVsIGRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJl
c3VsdDooX1dLV2ViQXV0aGVudGljYXRpb25SZXN1bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKXBhbmVsOihfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRy
aWVzOihOU1VJbnRlZ2VyKXJldHJpZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3Ry
aW5nICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICo+ICopcmVzcG9uc2VzIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICop
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRl
eCA0NDc0YmFjNjQyN2QyMDk2YjRkMTJhZDQ1ZTA4NzBhNWNhMDA5ZmQ5Li4yZWIzMWU4MTJjOTU5
OGU4OTg4NDBiOTU1OGNlMzMyZjJlZDY3OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQpAQCAtMjQsMTAgKzI0LDEwIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsSW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRp
b25Db25zdGFudHMuaD4KIAorI2ltcG9ydCAiV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
IgorI2ltcG9ydCA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW1wbGVtZW50YXRpb24gX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuaAppbmRleCBlODM1MzA0MTNiMWRlZTVkOGFkMDRlZjJjMTVmNzdjNjEx
NmQyZjJhLi5hNDdiMjkyNmMxZDM2NzI1YWMzMjgxMTFiY2RmZGQ1ZjFhNmU0MGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRl
LmgKQEAgLTI5LDYgKzI5LDggQEAKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8
d3RmL1dlYWtPYmpDUHRyLmg+CiAKK0BjbGFzcyBXS1dlYlZpZXc7CisKIEBwcm90b2NvbCBfV0tS
ZXNvdXJjZUxvYWREZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIEFQSSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDZi
NzgwMGJjOTkwMGZlNjA5MDMxYTEzZjVhMGVkOWFkYzRmNmViMjAuLmQ0MjYyODUzYzUwYTYwZmJh
YjcxNTMwN2QyNTBmMGM4ZTAxZTM1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0yNiw2ICsyNiw4IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJlc291cmNlTG9hZERlbGVnYXRlLmgiCiAKKyNp
bXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKKyNpbXBvcnQgIldLTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaCIKICNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oIgogCkBAIC04MCw3
ICs4Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6
ZGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpSZXNvdXJjZUxvCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNv
dXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgpKSBkaWRTZW5kUmVx
dWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRh
dGVIVFRQQm9keSldOworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdh
dGUubV93ZWJWaWV3LmdldCgpLmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3Vy
Y2VMb2FkSW5mbzo6Y3JlYXRlKFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkU2VuZFJlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRv
Tm90VXBkYXRlSFRUUEJvZHkpXTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVz
b3VyY2VMb2FkQ2xpZW50OjpkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIGNvbnN0CkBAIC05Miw3ICs5
NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlk
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJj
ZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgpKSBkaWRQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBuZXdSZXF1ZXN0OnJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07
CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcu
Z2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpj
cmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgpKSBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
OnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBuZXdSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0
KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CiB9
CiAKIHZvaWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nZShXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yLmgKaW5kZXggMzJmYzdkMmQ3ZmZjZDkzMTZmYTY2M2M2MGEyNWZiNmRjMWJhMTEwNi4u
ZDE2YjE3ZDVmYzZiYzc5NTIxNGIyN2U4MjU3ZmQ2ZjAwYmQ0YzdlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
b3IuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNw
b25kUmVjZWl2ZWQoUmVzcG9uZCYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkb3duZ3Jh
ZGUoQXV0aGVudGljYXRvciogaWQsIFJlZjxBdXRoZW50aWNhdG9yPiYmIGRvd25ncmFkZWRBdXRo
ZW50aWNhdG9yKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdXRoZW50aWNhdG9yU3RhdHVz
VXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1cykgPSAwOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYp
PiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3IoKSA9IGRlZmF1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggOWNkNDU0N2M4OGFl
ODQ2ZTlmNTdmODlhNThjM2ZjNWJlYzJiNjE1MS4uM2RiNjNlZjZiZDVlYTMyYjI5NmFjMDQ2YWE0
M2EwZDE0OTdjNWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAt
MjczLDE2ICsyNzMsMTYgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVudGljYXRv
clN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMgc3QKICAgICAgICAgcGFuZWwt
PmNsaWVudCgpLnVwZGF0ZVBhbmVsKHN0YXR1cyk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvck1h
bmFnZXI6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlcyhjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYgcmVzcG9uc2VzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byog
cGFuZWwgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbC5nZXQoKSkKLSAgICAgICAgcGFuZWwt
PmNsaWVudCgpLnNlbGVjdEFzc2VydGlvblJlc3BvbnNlcyhyZXNwb25zZXMsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcGFuZWwtPmNsaWVudCgpLnJlcXVlc3RQaW4ocmV0
cmllcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0
aGVudGljYXRvck1hbmFnZXI6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8
UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHBh
bmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5j
bGllbnQoKS5yZXF1ZXN0UGluKHJldHJpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgcGFuZWwtPmNsaWVudCgpLnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKHJlc3BvbnNl
cywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiBVbmlxdWVSZWY8QXV0aGVudGlj
YXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjcmVhdGVTZXJ2aWNl
KEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0
U2VydmljZTo6T2JzZXJ2ZXImIG9ic2VydmVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmgKaW5kZXggOWZkNTIzZDQwNzFmMTc4NzIyYzRmZjFmOWQ1MjY0NzExODY4NzlmZS4u
YTliNjI5M2M1OGYxMjIwNDMyZWI3NjViY2YyZDZhMWVkZDliZTU2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yTWFuYWdlci5oCkBAIC04MSw4ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZXNwb25kUmVjZWl2ZWQoUmVzcG9uZCYmKSBmaW5hbDsKICAgICB2b2lkIGRvd25ncmFkZShBdXRo
ZW50aWNhdG9yKiBpZCwgUmVmPEF1dGhlbnRpY2F0b3I+JiYgZG93bmdyYWRlZEF1dGhlbnRpY2F0
b3IpIGZpbmFsOwogICAgIHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVu
dGljYXRpb25TdGF0dXMpIGZpbmFsOwotICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Vz
KGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlcXVlc3RQaW4o
dWludDY0X3QgcmV0cmllcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmlu
ZyYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhh
c2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2UmKT4mJikgZmluYWw7CiAKICAgICAvLyBPdmVycmlkZW4gYnkgTW9ja0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLgogICAgIHZpcnR1YWwgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlPiBjcmVhdGVTZXJ2aWNlKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQs
IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4
IDE0OTk0NjZhMWNlY2E4ZTlmZDkwZjljZjYxNDI1NjU5MDJhODhmYmYuLmZhZmFhODExMjg3MTI1
NWE2YzQ4YzNlMDlkMTEzZTlhNzNmYTRhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVwZGF0ZVBhbmVsKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIGRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2Vs
ZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsK
IAogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKm1fcGFuZWw7CiAgICAgV2Vha09iakNQ
dHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOwpA
QCAtNTgsNiArNTksNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHBhbmVsVXBkYXRlV2ViQXV0
aGVudGljYXRpb25QYW5lbCA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxEaXNtaXNzV2ViQXV0aGVu
dGljYXRpb25QYW5lbFdpdGhSZXN1bHQgOiAxOwogICAgICAgICBib29sIHBhbmVsUmVxdWVzdFBp
bldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29s
IHBhbmVsc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAg
fSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCmluZGV4IDdmMTU3YmQ5ODQ2OWNkNjY5MWZl
MTAwZjNlMzVhNDE5NzM4ZjVlOTEuLjBjMWJkNGY1YThjOWNkMmUyYzhlOTM4NzJhN2VmMzAyMjZi
MjVlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5tbQpAQCAtMjgsOCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CiAKKyNpbXBvcnQgIkFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCIKICNp
bXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIldlYkF1dGhl
bnRpY2F0aW9uRmxhZ3MuaCIKKyNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5o
IgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpAQCAt
NDMsNiArNDUsNyBAQCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0aW9uUAogICAgIG1fZGVsZWdhdGVNZXRo
b2RzLnBhbmVsVXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbCA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6
KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25Q
YW5lbFdpdGhSZXN1bHQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihw
YW5lbDpkaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KV07CiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0
aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVs
OnJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczpjb21wbGV0aW9uSGFuZGxlcjopXTsKKyAg
ICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbHNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpz
ZWxlY3RBc3NlcnRpb25SZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0YWlu
UHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudDo6ZGVsZWdhdGUoKQpAQCAtNjIsNiArNjUsNyBAQCBzdGF0aWMgX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSB3a1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGUoV2ViQXV0aGVudAogCiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnVwZGF0
ZVBhbmVsKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykgY29uc3QKIHsKKyAgICAvLyBG
SVhNRSgyMDYyNDgpCiAgICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3Ag
dG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9k
aWZ5IHRoZSBzdGF0ZQogICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVuZXhwZWN0
ZWQgd2F5cy4KICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCB0aGlzLCBzdGF0dXNdIHsKQEAgLTkzLDYgKzk3LDcgQEAgc3RhdGljIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0IHdrV2ViQXV0aGVudGljYXRpb25SZXN1bHQoV2ViQXV0
aGVudGljYXRpb25SZXMKIAogdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkaXNt
aXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQgcmVzdWx0KSBjb25zdAogeworICAgIC8v
IEZJWE1FKDIwNjI0OCkKICAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9v
cCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBt
b2RpZnkgdGhlIHN0YXRlCiAgICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBl
Y3RlZCB3YXlzLgogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHRoaXMsIHJlc3VsdF0gewpAQCAtMTEyLDYgKzExNyw3IEBAIHZvaWQg
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0
aW9uUmVzdWx0IHJlc3VsdCkKIAogdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojpy
ZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKKyAgICAvLyBGSVhN
RSgyMDYyNDgpCiAgICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8g
cHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5
IHRoZSBzdGF0ZQogICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQg
d2F5cy4KICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCB0aGlzLCByZXRyaWVzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKQEAgLTE0MSw2ICsxNDcsNDMgQEAgdm9pZCBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMs
IENvbXBsZXRpb25IYW5kbGUKICAgICB9KTsKIH0KIAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYgcmVzcG9uc2VzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIEFTU0VSVCghcmVzcG9u
c2VzLmlzRW1wdHkoKSk7CisgICAgYXV0byBuc1Jlc3BvbnNlcyA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpyZXNwb25zZXMuc2l6ZSgpXSk7CisgICAg
Zm9yIChhdXRvJiByZXNwb25zZSA6IHJlc3BvbnNlcykKKyAgICAgICAgW25zUmVzcG9uc2VzIGFk
ZE9iamVjdDp3cmFwcGVyKEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6
Y3JlYXRlKHJlc3BvbnNlLmNvcHlSZWYoKSkpXTsKKworICAgIC8vIEZJWE1FKDIwNjI0OCkKKyAg
ICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVu
dHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCisg
ICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgorICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRo
aXMsIG5zUmVzcG9uc2VzID0gV1RGTW92ZShuc1Jlc3BvbnNlcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBpZiAo
IXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxB
UEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZp
cnN0T2JqZWN0XSBfYXBpT2JqZWN0XSkucmVzcG9uc2UoKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsc2VsZWN0
QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8QVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlJj4oW1tuc1Jlc3BvbnNlcyBmaXJzdE9iamVjdF0gX2FwaU9iamVjdF0pLnJlc3BvbnNl
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBkZWxl
Z2F0ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PEFQSTo6V2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZSY+KFtbbnNSZXNwb25zZXMgZmlyc3RPYmplY3RdIF9hcGlPYmpl
Y3RdKS5yZXNwb25zZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShk
ZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNv
bXBsZXRpb25IYW5kbGVyOikpOworICAgICAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCBzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZTpuc1Jlc3BvbnNlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlICpyZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tl
ci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UmPihbcmVzcG9uc2UgX2FwaU9iamVjdF0pLnJlc3BvbnNl
KCkpOworICAgICAgICB9KS5nZXQoKV07CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
QXV0aGVudGljYXRvci5jcHAKaW5kZXggM2MzZjk2MjE4YWJiZTVmNmMxMjIxMDk5NzQ5ZGU5NzRj
ZWVhODE2OC4uOWEwYThkYjI3ZGE1YTJhMzBkMmZlMWZkNTQ5Yjc3MmQ2ZGYyYTFmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
QXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKQEAgLTE1MSwxMSArMTUxLDExIEBA
IHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0TmV4dEFzc2VydGlvbkFmdGVyUmVz
cG9uc2VSZWNlaXZlZChWZWN0b3I8dWluCiAKICAgICBpZiAoIW1fcmVtYWluaW5nQXNzZXJ0aW9u
UmVzcG9uc2VzKSB7CiAgICAgICAgIGlmIChhdXRvKiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVy
KCkpIHsKLSAgICAgICAgICAgIG9ic2VydmVyLT5zZWxlY3RBc3NlcnRpb25SZXNwb25zZXMobV9h
c3NlcnRpb25SZXNwb25zZXMsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0g
KGNvbnN0IFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiByZXNwb25zZSkgewor
ICAgICAgICAgICAgb2JzZXJ2ZXItPnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKG1fYXNzZXJ0aW9u
UmVzcG9uc2VzLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgYXV0byBy
ZXR1cm5SZXNwb25zZSA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLnRha2UocmVzcG9uc2UpOworICAg
ICAgICAgICAgICAgIGF1dG8gcmV0dXJuUmVzcG9uc2UgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy50
YWtlKGNvbnN0X2Nhc3Q8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKj4oJnJlc3BvbnNl
KSk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXR1cm5SZXNwb25zZSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJl
dHVyblJlc3BvbnNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCmlu
ZGV4IDZmN2ZiNTNlNjUyYTJjMTcyMzEzYmEyZWYzMGMyMDg5ZDk3NDMxOWUuLjZiNTFiZjk5M2Qz
YWQxODE4ZmE1MDRmNThlYTVjYWU5YTY1Mzg4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1
dGhlbnRpY2F0b3IuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCisjaW5jbHVkZSAiQ3RhcERyaXZlci5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRmlk
b0F1dGhlbnRpY2F0b3I6OkZpZG9BdXRoZW50aWNhdG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJp
dmVyPiYmIGRyaXZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGIxOTQzM2FlMmJiOWZhNzY2NzUyNmU3MjU1ZDlkMTVkYTQyYTQxZjUu
LjM3MGE5YjUwMDBjYjRkNTkyYTc1ZDE3ZmRjNWZmNWE5NDQ1OWFmNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5OCw2ICsxMDk4
LDkgQEAKIAkJNTc3RkY3ODIyMzQ2RTgxQzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3N0ZGNzgxMjM0NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50LmggKi87IH07CiAJCTU3N0ZGNzg1MjM0NkVDQUEwMDRFREZCOSAvKiBXZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzdGRjc4MzIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oICovOyB9OwogCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxB
dXRoZW50aWNhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzhEQzI5NzIxNTVBMDAxMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNh
dGlvblNvZnRMaW5rLmggKi87IH07CisJCTU3OUYxQkY2MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzlGMUJGNDIzQzgwREI2MDBDN0Q0QjQgLyogX1dL
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3OUYxQkY5MjNDODBFQzYwMEM3RDRCNCAv
KiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OUYxQkY4MjNDODBFQzYw
MEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwu
aCAqLzsgfTsKKwkJNTc5RjFCRkMyM0M4MTFDRjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3OUYxQkZBMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi87IH07CiAJCTU3QUM4RjUwMjE3RkVFRDkwMDU1NDM4
QyAvKiBIaWRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0FDOEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5oICov
OyB9OwogCQk1N0I0QjQ2MDIwQjUwNEFDMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRo
ZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTdCNEI0NUUyMEI1MDRBQjAwRDRBRDc5IC8qIENsaWVudENlcnRpZmlj
YXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaCAqLzsgfTsKIAkJNTdCODI2NDEyMzA0RUIz
RTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQ
SS5oICovOyB9OwpAQCAtMzc3Myw2ICszNzc2LDExIEBACiAJCTU3N0ZGNzgzMjM0NkVDQUEwMDRF
REZCOSAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc3RkY3ODQyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzhEQzI5NzIxNTVBMDAxMDA3NEU4
MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2Fs
QXV0aGVudGljYXRpb25Tb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzlGMUJGNDIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3OUYxQkY1MjNDODBEQjYw
MEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRjgyM0M4MEVDNjAwQzdENEI0
IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRkEyM0M4MTFDRjAwQzdENEI0
IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzlGMUJGQjIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTdBQzhGNEUyMTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGlkQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1N0FDOEY0RjIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEhpZENvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3QjRCNDVEMjBCNTA0QUIwMEQ0QUQ3OSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0
aW9uTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg3NSw2
ICs2ODgzLDkgQEAKIAkJCQkxQTgxQjM3RjE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExp
bmtTdG9yZS5oICovLAogCQkJCTFBODFCMzdFMThCRDY2QUQwMDA3RkRBQyAvKiBfV0tWaXNpdGVk
TGlua1N0b3JlLm1tICovLAogCQkJCTFBODFCMzg0MThCRDY3M0EwMDA3RkRBQyAvKiBfV0tWaXNp
dGVkTGlua1N0b3JlSW50ZXJuYWwuaCAqLywKKwkJCQk1NzlGMUJGNDIzQzgwREI2MDBDN0Q0QjQg
LyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovLAorCQkJCTU3OUYx
QkY1MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLm1tICovLAorCQkJCTU3OUYxQkY4MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCAqLywKIAkJCQk1NzQ3MjhDRjIzNDU2
RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovLAogCQkJCTU3NDcy
OEQwMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tICovLAog
CQkJCTU3NDcyOEQzMjM0NTcwQUUwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
SW50ZXJuYWwuaCAqLywKQEAgLTg1NTcsNiArODU2OCw4IEBACiAJCQkJN0M4OUQyOTIxQTY3MTIy
RjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLywKIAkJCQkyRDg3ODYyMTFCREI1OEZGMDBE
MDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3BwICovLAogCQkJCTJEODc4NjIyMUJEQjU4RkYw
MEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oICovLAorCQkJCTU3OUYxQkZCMjNDODExQ0Yw
MEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCAqLywK
KwkJCQk1NzlGMUJGQTIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oICovLAogCQkJCTU3RUJFMjY5MjM0Njc2QzUwMDhEOEFGOSAvKiBBUElX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcCAqLywKIAkJCQk1N0VCRTI2ODIzNDY3NkM1MDA4RDhB
RjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovLAogCQkJCTU3N0ZGNzgxMjM0NkU4
MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi8sCkBAIC05
OTI5LDYgKzk5NDIsOCBAQAogCQkJCTJEODc4NjIwMUJEQjU3RjUwMEQwMkFCQiAvKiBfV0tVc2Vy
U3R5bGVTaGVldEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTgxQjM4MTE4QkQ2NkFE
MDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4
MUIzODUxOEJENjczQTAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTc5RjFCRjYyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3OUYxQkY5
MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NDcyOEQxMjM0NTZFOTgwMDE3MDBBRiAv
KiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzQ3MjhE
NDIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUUyODY3ODFDN0U3NjUxMDA2OUFDNEYgLyogX1dLV2Vic2l0
ZURhdGFTaXplLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDExLDYgKzEwMDI2LDcgQEAKIAkJCQky
RDg3ODYyNDFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUM1RTFBRkVEMTZCMjEwMTcwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNUUxQUZFRjE2QjIxMDI5MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2
ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzlGMUJGQzIzQzgxMUNGMDBDN0Q0QjQg
LyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTdFQkUyNkEyMzQ2NzZDNTAwOEQ4QUY5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3N0ZGNzgyMjM0NkU4MUMwMDRFREZCOSAvKiBBUElX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyODY4
NDFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIx
YjA3NDlmNGFkNjI4MGQwNzJkMTA5NDhlOGEyZGUwNDJmMTFjZDUuLjIxMDhmYmEwN2Y1N2E0Nzk5
ZmE1MzI1MTNjZDIxNjE2Yjg4OTM2YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wMS0xMCAgSmlld2VuIFRh
biAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50
IFNQSSB0byB0ZWxsIFVJIGNsaWVudHMgdG8gc2VsZWN0IGFzc2VydGlvbiByZXNwb25zZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjExMgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTU3MzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxl
eCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKC1bVGVz
dFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNw
b25zZXM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNh
dGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWw6CisKIDIwMjAtMDEtMTQgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3Qtd2Via2l0cHk6IE1ha2Ug
anNvbiBmaWxlIGNyZWF0aW9uIFB5dGhvbiAzIGNvbXBhdGlibGUKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYTJkNDFlNmMzZWJjMmZlOWJiNjBjMWE0NjI5MjgwZDcyODE1OTFiMy4uZGUzMWIx
ZWZjZDk3MmQ5MmJiMDQzZTc4ODQ3NGIzMmFmN2U1OTUwYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM2OCw2ICszNjgsNyBAQAogCQk1Nzk3RkUzMzFFQjE1QUIxMDBCMkY0QTAgLyogbmF2
aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzk3RkUzMjFFQjE1QTg5MDBCMkY0QTAg
LyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCAqLzsgfTsKIAkJNTc5ODMz
N0UyMzYwMTlBNDAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
aGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTc5ODMzN0QyMzYwMTk2RDAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtl
LWNyZWRlbnRpYWwtaGlkLmh0bWwgKi87IH07CiAJCTU3OTgzMzkyMjM2OEZBMzcwMDhFNTU0NyAv
KiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
OTgzMzdCMjM1RUI2NUMwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1uZmMtbXVsdGlwbGUtdGFncy5odG1sICovOyB9OworCQk1NzlGMUMwMTIzQzkzQUY1MDBDN0Q0
QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291
bnRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTc5RjFCRkYyM0M5MkZEMzAwQzdENEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sICovOyB9OwogCQk1N0E3OTg1NzIy
NEFCMzRFMDBBN0Y2RjEgLyogV2ViQ3J5cHRvTWFzdGVyS2V5Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdBNzk4NTYyMjRBQjM0RTAwQTdGNkYxIC8q
IFdlYkNyeXB0b01hc3RlcktleS5tbSAqLzsgfTsKIAkJNTdDM0ZBNjYxRjdDMjQ4RjAwOUQ0Qjgw
IC8qIFdlYWtQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNCOUJDMzcxQTY3NDgyMzAwRkU1Njc4IC8qIFdlYWtQdHIuY3BwICovOyB9OwogCQk1
N0M2MjQ0RTIzNDZCQ0ZBMDAzODNGRTcgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QzYyNDREMjM0
NkJDRkEwMDM4M0ZFNyAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tICovOyB9OwpAQCAt
MTQ4NCw2ICsxNDg1LDcgQEAKIAkJCQkyRUJEOUQwQTIxMzQ3MzBEMDAyREE3NTggLyogdmlkZW8u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDRDU3Nzc5OTIxMUNFMEU0MDAxQjM3MUUg
Lyogd2ViLWF1ZGlvLW9ubHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RG
MzIzNTdFNDg5MDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlk
LWNhbmNlbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU3OUYxQzAxMjNDOTNBRjUw
MEM3RDRCNCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUt
YWNjb3VudHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1Nzc0NTREMDIzNTlCMzc4
MDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW5vLWNyZWRl
bnRpYWxzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTcwRDI2RkMyM0MzRjg3MDAw
RDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RFQzIzNEYxRjkzMDBFODVFMDkgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCkBAIC0xOTQ5LDYgKzE5NTEsNyBAQAogCQk1Nzk4MzM3QjIzNUVCNjVDMDA4RTU1NDcgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc5ODMzN0QyMzYwMTk2RDAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtaGlkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENo
YW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb3Zpc2lv
bmFsVVJMTm90Q2hhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJG
RjIzQzkyRkQzMDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlk
LW11bHRpcGxlLWFjY291bnRzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0E3OTg1NjIyNEFCMzRFMDBBN0Y2RjEgLyogV2ViQ3J5cHRvTWFzdGVy
S2V5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ3J5cHRvTWFzdGVyS2V5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0M2MjQ0RDIzNDZCQ0ZBMDAzODNGRTcgLyogX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QzYy
NDRGMjM0NkMxRUMwMDM4M0ZFNyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzUwMSw2ICsz
NTA0LDcgQEAKIAkJCQlDRDU3Nzc5QjIxMUNFNkNFMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRp
by1hbmQtd2ViLWF1ZGlvLmh0bWwgKi8sCiAJCQkJQ0Q1Nzc3OTgyMTFDREU4RjAwMUIzNzFFIC8q
IHdlYi1hdWRpby1vbmx5Lmh0bWwgKi8sCiAJCQkJNTc2NjNERjIyMzU3RTQ1RDAwRTg1RTA5IC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwuaHRtbCAqLywKKwkJ
CQk1NzlGMUJGRjIzQzkyRkQzMDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgKi8sCiAJCQkJNTc3NDU0Q0YyMzU5QjMz
ODAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1uby1jcmVk
ZW50aWFscy5odG1sICovLAogCQkJCTU3MEQyNkZCMjNDM0Y4NjUwMEQ1Q0Y2NyAvKiB3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwgKi8sCiAJCQkJNTc2NjNERUIy
MzRGMUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5o
dG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDBjYjI0Nzhk
YzliMTljN2FhYTIxNGM4MzhhZmZiYjNjMWMyYWZkM2QuLmE5NzU4MzMwNGU2OGE5MDliZGQzMGI4
MDdmNzk1OGY3MmU2NDBjMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
QEAgLTM1LDggKzM1LDEwIEBACiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9SYW5kb21OdW1iZXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVt
YmVycy5oPgogCiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuID0gZmFsc2U7
CkBAIC00Niw2ICs0OCw3IEBAIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGVNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50
aWNhdGlvblBhbmVsVXBkYXRlTm9DcmVkZW50aWFsc0ZvdW5kID0gZmFsc2U7CiBzdGF0aWMgYm9v
bCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKIHN0YXRp
YyBTdHJpbmcgd2ViQXV0aGVudGljYXRpb25QYW5lbFBpbjsKK3N0YXRpYyBCT09MIHdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9IE5POwogCiBAaW50ZXJmYWNlIFRlc3RXZWJB
dXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgOiBOU09iamVjdCA8X1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbERlbGVnYXRlPgogQGVuZApAQCAtOTEsNiArOTQsMjAgQEAgLSAodm9pZClwYW5lbDoo
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RQSU5XaXRoUmVtYWluaW5n
UmV0cmllczoKICAgICBjb21wbGV0aW9uSGFuZGxlcih3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGlu
KTsKIH0KIAorLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVs
IHNlbGVjdEFzc2VydGlvblJlc3BvbnNlOihOU0FycmF5IDwgX1dLV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3BvbnNlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIEVYUEVDVF9FUShyZXNwb25zZXMuY291bnQsIDJ1bCk7CisgICAgZm9yIChf
V0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25zZSBpbiByZXNwb25z
ZXMpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNlLm5hbWUgaXNFcXVhbDpAImpvaG5w
c21pdGhAZXhhbXBsZS5jb20iXSB8fCBbcmVzcG9uc2UubmFtZSBpc0VxdWFsOkAiIl0pOworICAg
ICAgICBFWFBFQ1RfVFJVRShbcmVzcG9uc2UuZGlzcGxheU5hbWUgaXNFcXVhbDpAIkpvaG4gUC4g
U21pdGgiXSB8fCBbcmVzcG9uc2UuZGlzcGxheU5hbWUgaXNFcXVhbDpAIiJdKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoW1tyZXNwb25zZS51c2VySGFuZGxlIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRo
T3B0aW9uczowXSBpc0VxdWFsOkAiTUlJQmt6Q0NBVGlnQXdJQkFqQ0NBWk13Z2dFNG9BTUNBUUl3
Z2dHVE1JST0iXSB8fCAhcmVzcG9uc2UudXNlckhhbmRsZSk7CisgICAgfQorCisgICAgYXV0byBp
bmRleCA9IHdlYWtSYW5kb21VaW50MzIoKSAlIDI7CisgICAgd2ViQXV0aGVudGljYXRpb25QYW5l
bE51bGxVc2VySGFuZGxlID0gcmVzcG9uc2VzW2luZGV4XS51c2VySGFuZGxlID8gTk8gOiBZRVM7
CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzW2luZGV4XSk7Cit9CisKIEBlbmQKIAog
QGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbEZha2VEZWxlZ2F0ZSA6IE5TT2Jq
ZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CkBAIC04NzIsNiArODg5LDQw
IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0QXNzZXJ0aW9uUGluKQogICAgIFt3
ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOwogfQogCitURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIE11bHRpcGxlQWNjb3VudHNOdWxsRGVsZWdhdGUpCit7CisgICAgcmVz
ZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlk
LW11bHRpcGxlLWFjY291bnRzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5D
bGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9y
VGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJs
ZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50
YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNh
dGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtkZWxlZ2F0ZSBzZXRJc051
bGw6dHJ1ZV07CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRl
c3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEi
XTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNdWx0aXBsZUFjY291bnRzKQor
eworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNd
IF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9u
RXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2Vi
QXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmll
dyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3
ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOworICAgIEVYUEVDVF9FUShbW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVzZXJIYW5kbGUiXSBpc0VxdWFs
VG9TdHJpbmc6QCI8bnVsbD4iXSwgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxl
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291
bnRzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRo
ZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ2MzdlNDIwNzk1ZmQ1Njc3YmQ1MGYxMWRkNTRlYTYwNDI0OWFlNDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRo
ZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sCkBAIC0w
LDAgKzEsNTYgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAg
ICBjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUxvbmdCYXNlNjQgPQorICAgICAgICAiQUtVQm9t
SnBaRmhBS0FpdHp1aitUc2x6ZWxmMy92WndJR3REUU5nb0tlRmQ1b0VpZVl6aHl6QTY1c2FmMHRL
MiIgKworICAgICAgICAidy9tb29hN3RRdEdnRGR3WklqT2hqY3VaMHBRMWFqb0U0R1IwZVhCbGFu
QjFZbXhwWXkxclpYa0NXQ1ZHekgrNSIgKworICAgICAgICAiWjUxVnN0dVFrdUhJMmVYaDBDdDFn
UEMwZ1N4M0NXTGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NGVHV1QldnQiIgKworICAgICAgICAi
NC9GMFZCN0RsVVZNMDlJSFBteGUxTXpIVXdSb0NSWmJDQUlnR0tvdjZ4b0F4Mk1FZjYvNnFOczhP
dXR6aFAyQyIgKworICAgICAgICAiUW9KMUw3RmU2NEc5dUJjRXBHSnBaRmdnTUlJQmt6Q0NBVGln
QXdJQkFqQ0NBWk13Z2dFNG9BTUNBUUl3Z2dHVCIgKworICAgICAgICAiTUlKa2FXTnZibmdvYUhS
MGNITTZMeTl3YVdOekxtRmpiV1V1WTI5dEx6QXdMM0F2WVVKcWFtcHdjVkJpTG5CdSIgKworICAg
ICAgICAiWjJSdVlXMWxkbXB2YUc1d2MyMXBkR2hBWlhoaGJYQnNaUzVqYjIxclpHbHpjR3hoZVU1
aGJXVnRTbTlvYmlCUSIgKworICAgICAgICAiTGlCVGJXbDBhQVVDIjsKKyAgICBjb25zdCB0ZXN0
QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NCA9CisgICAgICAgICJBS01Cb21KcFpGaEFLQWl0enVqK1Rz
bHplbGYzL3Zad0lHdERRTmdvS2VGZDVvRWllWXpoeXpBNjVzYWYwdEsyIiArCisgICAgICAgICJ3
L21vb2E3dFF0R2dEZHdaSWpPaGpjdVowcFExYWpvRTRHUjBlWEJsYW5CMVlteHBZeTFyWlhrQ1dD
Vkd6SCs1IiArCisgICAgICAgICJaNTFWc3R1UWt1SEkyZVhoMEN0MWdQQzBnU3gzQ1dMaDVJOWEy
QUVBQUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiArCisgICAgICAgICI0L0YwVkI3RGxVVk0wOUlI
UG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82cU5zOE91dHpoUDJDIiArCisgICAg
ICAgICJRb0oxTDdGZTY0Rzl1QmM9IjsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNp
bGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1l
c3NhZ2VMb25nQmFzZTY0LCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKKyAgICAg
ICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGJ5dGVzVG9IZXhTdHJpbmcoYnl0ZXMpCisgICAgeworICAg
ICAgICBpZiAoIWJ5dGVzKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgYnl0
ZXMgPSBuZXcgVWludDhBcnJheShieXRlcyk7CisgICAgICAgIHZhciBoZXhCeXRlcyA9IFtdOwor
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhciBieXRlU3RyaW5nID0gYnl0ZXNbaV0udG9TdHJpbmcoMTYpOworICAgICAgICAg
ICAgaWYgKGJ5dGVTdHJpbmcubGVuZ3RoIDwgMikKKyAgICAgICAgICAgICAgICBieXRlU3RyaW5n
ID0gIjAiICsgYnl0ZVN0cmluZzsKKyAgICAgICAgICAgIGhleEJ5dGVzLnB1c2goYnl0ZVN0cmlu
Zyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaGV4Qnl0ZXMuam9pbigiIik7CisgICAg
fQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAg
ICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgIHRpbWVvdXQ6
IDEwMDAKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgIHVzZXJIYW5kbGUgPSBieXRl
c1RvSGV4U3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRsZSk7CisgICAgICAgIC8v
IGNvbnNvbGUubG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVkZWQhIik7CisgICAgfSwg
ZXJyb3IgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnJvci5tZXNzYWdlKTsKKyAgICAg
ICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2Uo
ZXJyb3IubWVzc2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1oaWQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
d2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbAppbmRleCA1YjZhZWJl
YmYxMjRiMTAzOWVkMDc5NGVkMjJkM2RiNjhlYTM0YWZjLi5lOTgxYTcwZjk5NzE5MTU1ZDBmYjNl
Nzk4ZTU2MTUyYWYzYjg2ODc4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sCkBAIC0zOSw3ICszOSw3IEBACiAgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCiAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0sCi0gICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwK
ICAgICAgICAgfQogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387734</attachid>
            <date>2020-01-14 16:49:59 -0800</date>
            <delta_ts>2020-01-14 17:16:12 -0800</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>bug-206112-20200114164958.patch</filename>
            <type>text/plain</type>
            <size>60867</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNzFjMzc5NTMzOTc2NGJi
YzcwYmJjZjFhMDVlNzc4ZjQ5MGFiNTIuLjVlZWFiYThlNTg1OTFhODNjMzM4NTQ3MmU3ZWVlNTMx
Y2U1NjkyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDEtMTAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBTUEkgdG8gdGVsbCBVSSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDk1NzMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGRlbGVnYXRlIG1ldGhvZCBpbiBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGUgdG8gdGVsbCBVSSBjbGllbnRzIHRvCisgICAgICAgIHNlbGVj
dCBhbiBhc3NlcnRpb24gcmVzcG9uc2Ugd2hlbiBtdWx0aXBsZSBhcmUgcmV0dXJuZWQgZnJvbSBh
biBhdXRoZW50aWNhdG9yLiBIZXJlIGlzIHRoZSBTUEk6CisgICAgICAgIEBwcm90b2NvbCBfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2JqZWN0PgorICAgICAgICBAb3B0aW9u
YWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Ug
KikpY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIC4uLgorICAgICAgICBAZW5kCisKKyAgICAg
ICAgQSBuZXcgaW50ZXJmYWNlIGlzIGludHJvZHVjZWQgdG8gcmVwcmVzZW50IGFuIGF1dGhlbnRp
Y2F0b3IgYXNzZXJ0aW9uIHJlc3BvbnNlOgorICAgICAgICBAaW50ZXJmYWNlIF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgOiBOU09iamVjdAorICAgICAgICBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOworICAgICAgICBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsK
KyAgICAgICAgQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVz
ZXJIYW5kbGU7CisgICAgICAgIEBlbmQKKyAgICAgICAgT25seSBtZW1iZXJzIHRoYXQgY2FuIGFz
c2lzdCB1c2VycyB0byBtYWtlIGEgZGVjaXNpb24gYXJlIGV4cG9zZWQgdG8gVUkgY2xpZW50cy4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNw
cDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oLgorICAgICAgICAoQVBJOjpXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAgICAgICgt
W19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgZGVhbGxvY10pOgorICAgICAg
ICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIG5hbWVdKToKKyAgICAg
ICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBkaXNwbGF5TmFtZV0p
OgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIHVzZXJI
YW5kbGVdKToKKyAgICAgICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMS0xNCAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjI1NDUzMyBhbmQgcjI1NDUzNS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZS5oCmluZGV4IGRjNGM4MDM3YTM1NjgxM2JlNTJiYzM3OWY0ODdmNWI1NzkxYzhl
NTIuLmQ3MGE5Y2NmOGYzOTFiMGRkNjJjMmExMTRlMTE1MmY5ZjZjMGQ2YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtNDIsOSArNDIsOSBAQCBwdWJsaWM6CiAgICAgQXJy
YXlCdWZmZXIqIHVzZXJIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0KCk7
IH0KIAogICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFt
ZTsgfQotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29u
c3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdm9pZCBzZXRE
aXNwbGF5TmFtZShjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKSB7IG1fZGlzcGxheU5hbWUgPSBk
aXNwbGF5TmFtZTsgfQotICAgIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcGxheU5hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZDcmVkZW50aWFscyhz
aXplX3QgbnVtYmVyT2ZDcmVkZW50aWFscykgeyBtX251bWJlck9mQ3JlZGVudGlhbHMgPSBudW1i
ZXJPZkNyZWRlbnRpYWxzOyB9CiAgICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25z
dCB7IHJldHVybiBtX251bWJlck9mQ3JlZGVudGlhbHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSU9iamVjdC5oCmluZGV4IGZkYjgxZjQxMzU1MWZmYzJjYmQxZTI3ZjBiNDBkMjRiODRkZDg5
YmYuLjhkYTEzYzRiMzNjNzA4OTQ0YWIyMThiMzY3MDhlNzE2YzA4NDU5OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTE4Myw2ICsxODMsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UsCiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDY0MmY2ZWY0YmRj
N2IzNDFmODJiZDQ2NjNlYTNkMTkzMWU4NTIwZTcuLmJmMjRkYjZhYjk1NjA2OTBkYzgzNTQ1ZWM5
OTYzODExZWU2MmQ3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0K
QEAgLTg4LDYgKzg4LDcgQEAKICNpbXBvcnQgIl9XS1VzZXJJbml0aWF0ZWRBY3Rpb25JbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
VmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25JbnRlcm5hbC5oIgogCkBAIC0zODksNiArMzkwLDkgQEAgdm9pZCogT2JqZWN0OjpuZXdP
YmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGU6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bCBhbGxvY107CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6V2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZToKKyAgICAgICAgd3JhcHBlciA9IFtfV0tXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAog
ICAgIGNhc2UgVHlwZTo6QnVuZGxlRnJhbWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA2MDZmMDM5NGUxMDNk
ZDliMjEyYTQzOTRhODc0NjBjMjVjMjVkN2ZlLi5lNmRmYzMwMzcyMzljYTI0NzU2NGEzNGFiNTYy
NTkwMDNhY2YxMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTM0MSw2ICszNDEsNyBAQCBVSVByb2Nlc3Mv
QVBJL0FQSVVSTFNjaGVtZVRhc2suY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29y
bGQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQ
SVVzZXJTdHlsZVNoZWV0LmNwcAorVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBh
bmVsLmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCiBVSVByb2Nlc3Mv
QVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcApAQCAtNDAzLDggKzQwNCw5IEBAIFVJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCiBVSVByb2Nl
c3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAKIFVJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwCiAKLVVJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5jcHAKLVVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcAorLy8gRklYTUUoMjA2MjY2KTogQXV0b21hdGlvblByb3RvY29sT2JqZWN0
cy5oJ3MgIm5hbWVzcGFjZSBQcm90b2NvbCIgY29uZmxpY3RzIHdpdGggb2JqYy9ydW50aW1lLmgn
cyAidHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgUHJvdG9jb2wiCitVSVByb2Nlc3MvQXV0b21h
dGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIEBuby11bmlmeQogCiBVSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHlNYXAuY3BwCkBAIC00NTYsNyArNDU4LDggQEAgVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3MuY3BwCiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCiAKLVdlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorLy8gRklYTUUoMjA2MjY2
KTogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oJ3MgIm5hbWVzcGFjZSBQcm90b2NvbCIgY29u
ZmxpY3RzIHdpdGggb2JqYy9ydW50aW1lLmgncyAidHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3Qg
UHJvdG9jb2wiCitXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAgQG5vLXVuaWZ5CiAKIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAKIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzk0YzY3MDQ0NWZmZDE3MmZlMDJmMTU2ZDYwZTVmMTFl
ZmU5N2Q4NS4uYjczZGQ4MTU3ZWZhMjA3ZDZjZmMyOGY0YjNmZThhMmM5MDU1MTU4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtMjc4LDYgKzI3OCw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVXNlckNvbnRlbnRXb3JsZC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VySW5pdGlh
dGVkQWN0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Zpc2l0ZWRMaW5rU3RvcmUubW0KK1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYnNpdGVEYXRhU2l6ZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UmVzb3VyY2VMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVz
b3VyY2VMb2FkQ2xpZW50LmgKaW5kZXggMjE4MWQ4ZDU3NGQzZjU0YTZmYjg3NTY5M2EwMjcyYmE0
YzJlNTRiYy4uYTMwZGQ5NTIzMWRmNGY4YjFjNmE4YTFjYmI1NmUyNTY4ZDcwMWI2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQu
aApAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBzdHJ1Y3QgUmVzb3VyY2VM
b2FkSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNzk3NmZmNTJlYThlMTVhYjY4MGE1NjNlNDMxMDg2OGVjZDMxMDBlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkFQSURhdGEu
aCIKKworbmFtZXNwYWNlIEFQSSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFdl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpKTsKK30KKworV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYm
IHJlc3BvbnNlKQorICAgIDogbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKK3sKK30KKwor
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6fldlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CisKK1JlZlB0cjxEYXRhPiBXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8
QVBJOjpEYXRhPiBkYXRhOworICAgIGlmIChhdXRvKiB1c2VySGFuZGxlID0gbV9yZXNwb25zZS0+
dXNlckhhbmRsZSgpKSB7CisgICAgICAgIHVzZXJIYW5kbGUtPnJlZigpOworICAgICAgICBkYXRh
ID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PHVuc2ln
bmVkIGNoYXIqPih1c2VySGFuZGxlLT5kYXRhKCkpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCks
IFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgeworICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8QXJyYXlCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7
CisgICAgICAgIH0sIHVzZXJIYW5kbGUpOworICAgIH0KKyAgICByZXR1cm4gZGF0YTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE3NjIwODA1ZDQzZGY3
ZDA3NmI0OWUwMDhjMjExYzg2MWY1MjhjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQl9BVVRITikKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitj
bGFzcyBEYXRhOworCitjbGFzcyBXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIGZp
bmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4mJik7CisgICAgfldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UoKTsKKworICAgIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZS0+bmFtZSgpOyB9CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS0+ZGlzcGxheU5hbWUoKTsgfQorICAgIFJlZlB0
cjxEYXRhPiB1c2VySGFuZGxlKCkgY29uc3Q7CisKKyAgICBjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmIHJlc3BvbnNlKCkgeyByZXR1cm4gbV9yZXNwb25zZS5n
ZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJik7CisKKyAg
ICBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBtX3Jlc3BvbnNl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKaW5kZXggMDA2MmY5YTdkOTc0NzI2NmY3ZjYyMjFm
NGU3OWQ1ODU3ZmZjMjMxYy4uNzAxMGQ3OGQ4NjRmZDBkYzI0N2U2YjAyYzFlOTI3ODBlN2RhODU1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQYW5lbChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9u
U3RhdHVzKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc1BhbmVsKFdlYktpdDo6
V2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZXMoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKCpyZXNwb25zZXMu
YmVnaW4oKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CisgICAgdmlydHVh
bCB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0
eSgpKTsgY29tcGxldGlvbkhhbmRsZXIoKnJlc3BvbnNlcy5iZWdpbigpKTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MTJmNWFmMDJkNDRlZGFhYzIwZTljODk0MmExYjUwMTE4Y2Zk
NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMCwwICsxLDQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlIDogTlNPYmplY3QKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5
KSBOU1N0cmluZyAqbmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNTdHJpbmcgKmRpc3BsYXlOYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk3MWYyMzY2NDAzMDU4MzkwMzRlMDkxODQ4NDdiOTdjZTFkOWFhYTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiV0tOU0RhdGEuaCIKKworQGltcGxl
bWVudGF0aW9uIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UKKworI2lmIEVO
QUJMRShXRUJfQVVUSE4pCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9yZXNwb25zZS0+fldl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoKTsKKworICAgIFtzdXBlciBkZWFsbG9j
XTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIF9yZXNwb25zZS0+bmFt
ZSgpOworfQorCistIChOU1N0cmluZyAqKWRpc3BsYXlOYW1lCit7CisgICAgcmV0dXJuIF9yZXNw
b25zZS0+ZGlzcGxheU5hbWUoKTsKK30KKworLSAoTlNEYXRhICopdXNlckhhbmRsZQoreworICAg
IHJldHVybiB3cmFwcGVyKF9yZXNwb25zZS0+dXNlckhhbmRsZSgpKTsKK30KKworI3ByYWdtYSBt
YXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0Jilf
YXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfcmVzcG9uc2U7Cit9CisjZW5kaWYKKworQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRl
cm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVmMzYwMGZjOWYzMGM0OGU3ZGYyNmVkOWQwM2FhZTk1MDQ5MjFh
N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmgKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQor
CisjaW1wb3J0ICJBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCisjaW1w
b3J0ICJXS09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+
IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlOworfTsKKworfQorCitAaW50ZXJmYWNlIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0
U3RvcmFnZTxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IF9yZXNwb25z
ZTsKK30KK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaAppbmRleCA4NjgwNjIzZmM0OWUwN2FmYzMxYWFjNzYwZTViNmE0NGViZjJkMzA4
Li40MzFjNjMzYjBmZWIwYjU1MmE2YjlkMTg3ZWFkM2Q2ZmI1YmNjOGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIAorQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xh
c3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCkgewpAQCAtNjksNiArNzAsNyBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKIC0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB1cGRhdGVXZWJB
dXRoZW50aWNhdGlvblBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKXVwZGF0
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
LSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRpc21pc3NX
ZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRpb25SZXN1
bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwg
cmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRlZ2VyKXJldHJpZXMgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lk
KXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
ICo+ICopcmVzcG9uc2VzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCA0NDc0YmFjNjQyN2QyMDk2YjRkMTJhZDQ1ZTA4
NzBhNWNhMDA5ZmQ5Li4yZWIzMWU4MTJjOTU5OGU4OTg4NDBiOTU1OGNlMzMyZjJlZDY3OWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQsMTAgKzI0LDEwIEBACiAgKi8KIAog
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
LmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCIKLSNpbXBv
cnQgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KIAorI2ltcG9ydCAiV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIgorI2ltcG9ydCA8V2ViQ29yZS9XZWJBdXRoZW50
aWNhdGlvbkNvbnN0YW50cy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW1wbGVt
ZW50YXRpb24gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAppbmRleCBlODM1MzA0
MTNiMWRlZTVkOGFkMDRlZjJjMTVmNzdjNjExNmQyZjJhLi5hNDdiMjkyNmMxZDM2NzI1YWMzMjgx
MTFiY2RmZGQ1ZjFhNmU0MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpbXBvcnQg
IldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKK0BjbGFzcyBX
S1dlYlZpZXc7CisKIEBwcm90b2NvbCBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZTsKIAogbmFtZXNw
YWNlIEFQSSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDZiNzgwMGJjOTkwMGZlNjA5MDMxYTEzZjVhMGVkOWFk
YzRmNmViMjAuLmQ0MjYyODUzYzUwYTYwZmJhYjcxNTMwN2QyNTBmMGM4ZTAxZTM1OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJl
c291cmNlTG9hZERlbGVnYXRlLmgiCiAKKyNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkuaCIKKyNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2lt
cG9ydCAiX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS1Jlc291cmNlTG9h
ZEluZm9JbnRlcm5hbC5oIgogCkBAIC04MCw3ICs4Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkRGVs
ZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpSZXNvdXJj
ZUxvCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2RlbGVnYXRl
IHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVz
b3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShs
b2FkSW5mbykpLmdldCgpKSBkaWRTZW5kUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQ
Qm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOworICAgIFtkZWxlZ2F0ZSB3
ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgpIHJlc291
cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRlKFdURk1vdmUobG9h
ZEluZm8pKS5nZXQoKSkgZGlkU2VuZFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29y
ZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QpIGNvbnN0CkBAIC05Miw3ICs5NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkRGVsZWdh
dGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6
CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2RlbGVnYXRlIHdl
YlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3Vy
Y2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2Fk
SW5mbykpLmdldCgpKSBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnJlc3BvbnNlLm5zVVJMUmVz
cG9uc2UoKSBuZXdSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9s
aWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBw
ZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgp
KSBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBuZXdS
ZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5
OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6
OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJLaXQ6OlJlc291cmNl
TG9hZEluZm8mJiBsb2FkSW5mbywgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
JiBjaGFsbGVuZ2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKaW5kZXggMzJmYzdkMmQ3ZmZjZDkz
MTZmYTY2M2M2MGEyNWZiNmRjMWJhMTEwNi4uZDE2YjE3ZDVmYzZiYzc5NTIxNGIyN2U4MjU3ZmQ2
ZjAwYmQ0YzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNwb25kUmVjZWl2ZWQoUmVzcG9uZCYmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkb3duZ3JhZGUoQXV0aGVudGljYXRvciogaWQsIFJlZjxBdXRo
ZW50aWNhdG9yPiYmIGRvd25ncmFkZWRBdXRoZW50aWNhdG9yKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBhdXRoZW50aWNhdG9yU3RhdHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1
cykgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNv
bnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiYpPiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RG
OjpTdHJpbmcmKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1
YWwgfkF1dGhlbnRpY2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFu
YWdlci5jcHAKaW5kZXggOWNkNDU0N2M4OGFlODQ2ZTlmNTdmODlhNThjM2ZjNWJlYzJiNjE1MS4u
M2RiNjNlZjZiZDVlYTMyYjI5NmFjMDQ2YWE0M2EwZDE0OTdjNWU3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMjczLDE2ICsyNzMsMTYgQEAgdm9pZCBBdXRoZW50
aWNhdG9yTWFuYWdlcjo6YXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRp
b25TdGF0dXMgc3QKICAgICAgICAgcGFuZWwtPmNsaWVudCgpLnVwZGF0ZVBhbmVsKHN0YXR1cyk7
CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNl
cyhjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U+PiYgcmVzcG9uc2VzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlZjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogcGFuZWwgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5w
YW5lbC5nZXQoKSkKLSAgICAgICAgcGFuZWwtPmNsaWVudCgpLnNlbGVjdEFzc2VydGlvblJlc3Bv
bnNlcyhyZXNwb25zZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcGFu
ZWwtPmNsaWVudCgpLnJlcXVlc3RQaW4ocmV0cmllcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0UGluKHVpbnQ2NF90
IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnNlbGVjdEFzc2Vy
dGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEucGFu
ZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5jbGllbnQoKS5yZXF1ZXN0UGluKHJldHJpZXMsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcGFuZWwtPmNsaWVudCgpLnNlbGVj
dEFzc2VydGlvblJlc3BvbnNlKHJlc3BvbnNlcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjpjcmVhdGVTZXJ2aWNlKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdHJhbnNw
b3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImIG9ic2VydmVyKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5kZXggOWZkNTIzZDQwNzFmMTc4
NzIyYzRmZjFmOWQ1MjY0NzExODY4NzlmZS4uYTliNjI5M2M1OGYxMjIwNDMyZWI3NjViY2YyZDZh
MWVkZDliZTU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCkBAIC04MSw4ICs4
MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25kUmVjZWl2ZWQoUmVzcG9uZCYmKSBmaW5h
bDsKICAgICB2b2lkIGRvd25ncmFkZShBdXRoZW50aWNhdG9yKiBpZCwgUmVmPEF1dGhlbnRpY2F0
b3I+JiYgZG93bmdyYWRlZEF1dGhlbnRpY2F0b3IpIGZpbmFsOwogICAgIHZvaWQgYXV0aGVudGlj
YXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGZpbmFsOwotICAgIHZv
aWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmKSBm
aW5hbDsKICAgICB2b2lkIHJlcXVlc3RQaW4odWludDY0X3QgcmV0cmllcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgZmluYWw7CiAKICAgICAv
LyBPdmVycmlkZW4gYnkgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLgogICAgIHZpcnR1YWwgVW5p
cXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGVTZXJ2aWNlKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
OjpPYnNlcnZlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDE0OTk0NjZhMWNlY2E4ZTlmZDkwZjljZjYxNDI1
NjU5MDJhODhmYmYuLmZhZmFhODExMjg3MTI1NWE2YzQ4YzNlMDlkMTEzZTlhNzNmYTRhMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVBhbmVsKFdlYkF1
dGhlbnRpY2F0aW9uU3RhdHVzKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRpc21pc3NQYW5lbChX
ZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGlu
KHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYp
IGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFz
aFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsKIAogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgKm1fcGFuZWw7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxEZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOwpAQCAtNTgsNiArNTksNyBAQCBwcml2YXRlOgogICAg
ICAgICBib29sIHBhbmVsVXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbCA6IDE7CiAgICAgICAg
IGJvb2wgcGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQgOiAxOwog
ICAgICAgICBib29sIHBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlv
bkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBhbmVsc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1t
CmluZGV4IDdmMTU3YmQ5ODQ2OWNkNjY5MWZlMTAwZjNlMzVhNDE5NzM4ZjVlOTEuLjBjMWJkNGY1
YThjOWNkMmUyYzhlOTM4NzJhN2VmMzAyMjZiMjVlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQpAQCAtMjgsOCArMjgsMTAg
QEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNpbXBvcnQgIkFQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXIuaCIKICNpbXBvcnQgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCIKKyNpbXBvcnQgIl9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpAQCAtNDMsNiArNDUsNyBAQCBXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUAogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsVXBkYXRlV2ViQXV0aGVudGljYXRp
b25QYW5lbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnVw
ZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFu
ZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpkaXNtaXNzV2ViQXV0aGVudGljYXRpb25Q
YW5lbFdpdGhSZXN1bHQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxSZXF1ZXN0UGlu
V2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmll
czpjb21wbGV0aW9uSGFuZGxlcjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpjb21wbGV0
aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGVsZWdhdGUoKQpA
QCAtNjIsNiArNjUsNyBAQCBzdGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSB3
a1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUoV2ViQXV0aGVudAogCiB2b2lkIFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQ6OnVwZGF0ZVBhbmVsKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVz
IHN0YXR1cykgY29uc3QKIHsKKyAgICAvLyBGSVhNRSgyMDYyNDgpCiAgICAgLy8gQ2FsbCBkZWxl
Z2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNl
IHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQogICAgIC8vIG9mIHRoZSBj
dXJyZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBzdGF0dXNdIHsK
QEAgLTkzLDYgKzk3LDcgQEAgc3RhdGljIF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0IHdrV2Vi
QXV0aGVudGljYXRpb25SZXN1bHQoV2ViQXV0aGVudGljYXRpb25SZXMKIAogdm9pZCBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkaXNtaXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1
bHQgcmVzdWx0KSBjb25zdAogeworICAgIC8vIEZJWE1FKDIwNjI0OCkKICAgICAvLyBDYWxsIGRl
bGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFu
Y2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCiAgICAgLy8gb2YgdGhl
IGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgogICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIHJlc3VsdF0g
ewpAQCAtMTEyLDYgKzExNyw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
ZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0IHJlc3VsdCkKIAogdm9pZCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgY29uc3QKIHsKKyAgICAvLyBGSVhNRSgyMDYyNDgpCiAgICAgLy8gQ2FsbCBkZWxlZ2F0
ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRo
YXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQogICAgIC8vIG9mIHRoZSBjdXJy
ZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCByZXRyaWVzLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
QEAgLTE0MSw2ICsxNDcsNDMgQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojpy
ZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGUKICAgICB9KTsKIH0K
IAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNw
b25zZShjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U+PiYgcmVzcG9uc2VzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdAoreworICAgIEFTU0VSVCghcmVzcG9uc2VzLmlzRW1wdHkoKSk7CisgICAgYXV0byBuc1Jl
c3BvbnNlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpyZXNwb25zZXMuc2l6ZSgpXSk7CisgICAgZm9yIChhdXRvJiByZXNwb25zZSA6IHJlc3BvbnNl
cykKKyAgICAgICAgW25zUmVzcG9uc2VzIGFkZE9iamVjdDp3cmFwcGVyKEFQSTo6V2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlLmNvcHlSZWYoKSkpXTsK
KworICAgIC8vIEZJWE1FKDIwNjI0OCkKKyAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4
dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3Rl
bnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCisgICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3Ag
aW4gdW5leHBlY3RlZCB3YXlzLgorICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIG5zUmVzcG9uc2VzID0gV1RGTW92ZShuc1Jl
c3BvbnNlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSkucmVzcG9u
c2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1f
ZGVsZWdhdGVNZXRob2RzLnBhbmVsc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8QVBJOjpX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlJj4oW1tuc1Jlc3BvbnNlcyBmaXJzdE9i
amVjdF0gX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7CisgICAg
ICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSY+KFtbbnNSZXNw
b25zZXMgZmlyc3RPYmplY3RdIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHBhbmVs
OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOikpOworICAgICAgICBb
ZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpuc1Jlc3BvbnNl
cy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIp
XShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25zZSkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UmPihbcmVz
cG9uc2UgX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAgICAgICB9KS5nZXQoKV07CisgICAg
fSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKaW5kZXggM2MzZjk2
MjE4YWJiZTVmNmMxMjIxMDk5NzQ5ZGU5NzRjZWVhODE2OC4uOWEwYThkYjI3ZGE1YTJhMzBkMmZl
MWZkNTQ5Yjc3MmQ2ZGYyYTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRv
ci5jcHAKQEAgLTE1MSwxMSArMTUxLDExIEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0TmV4dEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWluCiAKICAg
ICBpZiAoIW1fcmVtYWluaW5nQXNzZXJ0aW9uUmVzcG9uc2VzKSB7CiAgICAgICAgIGlmIChhdXRv
KiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKLSAgICAgICAgICAgIG9ic2VydmVyLT5z
ZWxlY3RBc3NlcnRpb25SZXNwb25zZXMobV9hc3NlcnRpb25SZXNwb25zZXMsIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGNvbnN0IFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+JiByZXNwb25zZSkgeworICAgICAgICAgICAgb2JzZXJ2ZXItPnNlbGVjdEFz
c2VydGlvblJlc3BvbnNlKG1fYXNzZXJ0aW9uUmVzcG9uc2VzLCBbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Um
IHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgYXV0byByZXR1cm5SZXNwb25zZSA9IG1fYXNzZXJ0aW9uUmVz
cG9uc2VzLnRha2UocmVzcG9uc2UpOworICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuUmVzcG9u
c2UgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy50YWtlKGNvbnN0X2Nhc3Q8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKj4oJnJlc3BvbnNlKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXR1
cm5SZXNwb25zZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJldHVyblJlc3BvbnNlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50
aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCmluZGV4IDZmN2ZiNTNlNjUyYTJjMTcyMzEzYmEyZWYz
MGMyMDg5ZDk3NDMxOWUuLjZiNTFiZjk5M2QzYWQxODE4ZmE1MDRmNThlYTVjYWU5YTY1Mzg4ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCkBAIC0yOCw2ICsyOCw4
IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW5jbHVkZSAiQ3RhcERyaXZlci5oIgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRmlkb0F1dGhlbnRpY2F0b3I6OkZpZG9BdXRoZW50aWNh
dG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiYmIGRyaXZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIxOTQzM2FlMmJiOWZh
NzY2NzUyNmU3MjU1ZDlkMTVkYTQyYTQxZjUuLjM3MGE5YjUwMDBjYjRkNTkyYTc1ZDE3ZmRjNWZm
NWE5NDQ1OWFmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTA5OCw2ICsxMDk4LDkgQEAKIAkJNTc3RkY3ODIyMzQ2RTgxQzAwNEVE
RkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3N0ZGNzgxMjM0NkU4MUMwMDRFREZCOSAv
KiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi87IH07CiAJCTU3N0ZGNzg1MjM0
NkVDQUEwMDRFREZCOSAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzdGRjc4MzIzNDZFQ0FBMDA0
RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oICovOyB9OwogCQk1NzhEQzI5
ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzhEQzI5NzIxNTVBMDAx
MDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmggKi87IH07CisJCTU3OUYx
QkY2MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzlG
MUJGNDIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTU3OUYxQkY5MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3OUYxQkY4MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCAqLzsgfTsKKwkJNTc5RjFCRkMyM0M4MTFDRjAw
QzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OUYxQkZBMjNDODExQ0Yw
MEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi87IH07
CiAJCTU3QUM4RjUwMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0FDOEY0RTIxN0ZFRUQ5MDA1
NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5oICovOyB9OwogCQk1N0I0QjQ2MDIwQjUwNEFDMDBENEFE
NzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNEI0NUUyMEI1MDRB
QjAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMu
aCAqLzsgfTsKIAkJNTdCODI2NDEyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NDAyMzA0
RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oICovOyB9OwpAQCAtMzc3Myw2ICszNzc2LDEx
IEBACiAJCTU3N0ZGNzgzMjM0NkVDQUEwMDRFREZCOSAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc3RkY3ODQyMzQ2RUNBQTAwNEVERkI5IC8q
IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzhEQzI5NzIxNTVBMDAxMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRM
aW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJGNDIzQzgwREI2MDBDN0Q0QjQgLyogX1dL
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU3OUYxQkY1MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTc5RjFCRjgyM0M4MEVDNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2VJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTc5RjFCRkEyM0M4MTFDRjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJGQjIzQzgx
MUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdBQzhGNEUyMTdGRUVEOTAwNTU0
MzhDIC8qIEhpZENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlkQ29ubmVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0FDOEY0RjIxN0ZFRUQ5MDA1NTQzOEMgLyog
SGlkQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhpZENvbm5lY3Rpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjRCNDVEMjBCNTA0QUIwMEQ0QUQ3OSAv
KiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjg3NSw2ICs2ODgzLDkgQEAKIAkJCQkxQTgxQjM3RjE4QkQ2
NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZS5oICovLAogCQkJCTFBODFCMzdFMThC
RDY2QUQwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlLm1tICovLAogCQkJCTFBODFCMzg0
MThCRDY3M0EwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCAqLywKKwkJ
CQk1NzlGMUJGNDIzQzgwREI2MDBDN0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZS5oICovLAorCQkJCTU3OUYxQkY1MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tICovLAorCQkJCTU3OUYxQkY4MjNDODBF
QzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJu
YWwuaCAqLywKIAkJCQk1NzQ3MjhDRjIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5oICovLAogCQkJCTU3NDcyOEQwMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tICovLAogCQkJCTU3NDcyOEQzMjM0NTcwQUUwMDE3MDBBRiAv
KiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCAqLywKQEAgLTg1NTcsNiArODU2
OCw4IEBACiAJCQkJN0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAq
LywKIAkJCQkyRDg3ODYyMTFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3Bw
ICovLAogCQkJCTJEODc4NjIyMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5o
ICovLAorCQkJCTU3OUYxQkZCMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlLmNwcCAqLywKKwkJCQk1NzlGMUJGQTIzQzgxMUNGMDBDN0Q0QjQg
LyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovLAogCQkJCTU3RUJF
MjY5MjM0Njc2QzUwMDhEOEFGOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcCAqLywK
IAkJCQk1N0VCRTI2ODIzNDY3NkM1MDA4RDhBRjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oICovLAogCQkJCTU3N0ZGNzgxMjM0NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50LmggKi8sCkBAIC05OTI5LDYgKzk5NDIsOCBAQAogCQkJCTJEODc4NjIw
MUJEQjU3RjUwMEQwMkFCQiAvKiBfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTgxQjM4MTE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4MUIzODUxOEJENjczQTAwMDdGREFDIC8qIF9XS1Zp
c2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc5RjFCRjYyM0M4
MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTU3OUYxQkY5MjNDODBFQzYwMEM3RDRCNCAvKiBfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3NDcyOEQxMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NzQ3MjhENDIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyODY3ODFD
N0U3NjUxMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXplLmggaW4gSGVhZGVycyAqLywKQEAg
LTEwMDExLDYgKzEwMDI2LDcgQEAKIAkJCQkyRDg3ODYyNDFCREI1OEZGMDBEMDJBQkIgLyogQVBJ
VXNlclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1RTFBRkVEMTZCMjEwMTcwMDZD
QzFGMiAvKiBBUElXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUUxQUZFRjE2QjIx
MDI5MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NzlGMUJGQzIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFQkUyNkEyMzQ2NzZDNTAwOEQ4QUY5
IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3N0ZG
NzgyMjM0NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUUyODY4NDFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0
ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIxYjA3NDlmNGFkNjI4MGQwNzJkMTA5NDhlOGEyZGUw
NDJmMTFjZDUuLjIxMDhmYmEwN2Y1N2E0Nzk5ZmE1MzI1MTNjZDIxNjE2Yjg4OTM2YTcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMC0wMS0xMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSB0byB0ZWxsIFVJIGNsaWVudHMgdG8gc2Vs
ZWN0IGFzc2VydGlvbiByZXNwb25zZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjExMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTU3MzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0
ZSBwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZXM6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0
aXBsZS1hY2NvdW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWw6
CisKIDIwMjAtMDEtMTQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAg
ICAgICAgIHRlc3Qtd2Via2l0cHk6IE1ha2UganNvbiBmaWxlIGNyZWF0aW9uIFB5dGhvbiAzIGNv
bXBhdGlibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTJkNDFlNmMzZWJjMmZlOWJiNjBj
MWE0NjI5MjgwZDcyODE1OTFiMy4uZGUzMWIxZWZjZDk3MmQ5MmJiMDQzZTc4ODQ3NGIzMmFmN2U1
OTUwYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2OCw2ICszNjgsNyBAQAogCQk1Nzk3
RkUzMzFFQjE1QUIxMDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Nzk3RkUzMjFFQjE1QTg5MDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1j
cnlwdG8uaHRtbCAqLzsgfTsKIAkJNTc5ODMzN0UyMzYwMTlBNDAwOEU1NTQ3IC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5ODMzN0QyMzYwMTk2RDAwOEU1NTQ3
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwgKi87IH07CiAJ
CTU3OTgzMzkyMjM2OEZBMzcwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OTgzMzdCMjM1RUI2NUMwMDhFNTU0NyAvKiB3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sICovOyB9
OworCQk1NzlGMUMwMTIzQzkzQUY1MDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5RjFCRkYyM0M5MkZEMzAwQzdENEI0
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50
cy5odG1sICovOyB9OwogCQk1N0E3OTg1NzIyNEFCMzRFMDBBN0Y2RjEgLyogV2ViQ3J5cHRvTWFz
dGVyS2V5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdBNzk4NTYyMjRBQjM0RTAwQTdGNkYxIC8qIFdlYkNyeXB0b01hc3RlcktleS5tbSAqLzsgfTsK
IAkJNTdDM0ZBNjYxRjdDMjQ4RjAwOUQ0QjgwIC8qIFdlYWtQdHIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCOUJDMzcxQTY3NDgyMzAwRkU1Njc4
IC8qIFdlYWtQdHIuY3BwICovOyB9OwogCQk1N0M2MjQ0RTIzNDZCQ0ZBMDAzODNGRTcgLyogX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3QzYyNDREMjM0NkJDRkEwMDM4M0ZFNyAvKiBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tICovOyB9OwpAQCAtMTQ4NCw2ICsxNDg1LDcgQEAKIAkJCQkyRUJEOUQw
QTIxMzQ3MzBEMDAyREE3NTggLyogdmlkZW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlDRDU3Nzc5OTIxMUNFMEU0MDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RGMzIzNTdFNDg5MDBFODVFMDkgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAorCQkJCTU3OUYxQzAxMjNDOTNBRjUwMEM3RDRCNCAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQk1Nzc0NTREMDIzNTlCMzc4MDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LWdldC1hc3NlcnRpb24taGlkLW5vLWNyZWRlbnRpYWxzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJNTcwRDI2RkMyM0MzRjg3MDAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1n
ZXQtYXNzZXJ0aW9uLWhpZC1waW4uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2
M0RFQzIzNEYxRjkzMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
aGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xOTQ5LDYgKzE5NTEsNyBAQAogCQk1
Nzk4MzM3QjIzNUVCNjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3
ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc5ODMzN0QyMzYwMTk2RDAwOEU1NTQ3IC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OThFMkFGMUNBRjVDMjgwMEM1
Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJGRjIzQzkyRkQzMDBDN0Q0QjQgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291
bnRzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0E3OTg1NjIyNEFCMzRF
MDBBN0Y2RjEgLyogV2ViQ3J5cHRvTWFzdGVyS2V5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViQ3J5cHRvTWFzdGVyS2V5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0M2
MjQ0RDIzNDZCQ0ZBMDAzODNGRTcgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QzYyNDRGMjM0NkMxRUMwMDM4M0ZFNyAvKiB3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzUwMSw2ICszNTA0LDcgQEAKIAkJCQlDRDU3Nzc5QjIxMUNFNkNF
MDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgKi8sCiAJCQkJ
Q0Q1Nzc3OTgyMTFDREU4RjAwMUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgKi8sCiAJCQkJ
NTc2NjNERjIyMzU3RTQ1RDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLWhpZC1jYW5jZWwuaHRtbCAqLywKKwkJCQk1NzlGMUJGRjIzQzkyRkQzMDBDN0Q0QjQgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0
bWwgKi8sCiAJCQkJNTc3NDU0Q0YyMzU5QjMzODAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1nZXQtYXNzZXJ0aW9uLWhpZC1uby1jcmVkZW50aWFscy5odG1sICovLAogCQkJCTU3MEQyNkZC
MjNDM0Y4NjUwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQt
cGluLmh0bWwgKi8sCiAJCQkJNTc2NjNERUIyMzRGMUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCmluZGV4IDBjYjI0NzhkYzliMTljN2FhYTIxNGM4MzhhZmZiYjNjMWMyYWZk
M2QuLmE5NzU4MzMwNGU2OGE5MDliZGQzMGI4MDdmNzk1OGY3MmU2NDBjMjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTM1LDggKzM1LDEwIEBACiAjaW1wb3J0IDxX
ZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdh
dGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oPgor
I2ltcG9ydCA8V2ViS2l0L19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg+CiAjaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBzdGF0aWMgYm9vbCB3ZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmFuID0gZmFsc2U7CkBAIC00Niw2ICs0OCw3IEBAIHN0YXRpYyBib29s
IHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50ID0gZmFs
c2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTm9DcmVkZW50aWFs
c0ZvdW5kID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2Vs
SW1tZWRpYXRlbHkgPSBmYWxzZTsKIHN0YXRpYyBTdHJpbmcgd2ViQXV0aGVudGljYXRpb25QYW5l
bFBpbjsKK3N0YXRpYyBCT09MIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9
IE5POwogCiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgOiBO
U09iamVjdCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPgogQGVuZApAQCAtOTEs
NiArOTQsMjAgQEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBh
bmVsIHJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczoKICAgICBjb21wbGV0aW9uSGFuZGxl
cih3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluKTsKIH0KIAorLSAodm9pZClwYW5lbDooX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlOihOU0Fy
cmF5IDwgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3BvbnNl
cyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZSAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIEVYUEVDVF9FUShyZXNwb25z
ZXMuY291bnQsIDJ1bCk7CisgICAgZm9yIChfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlICpyZXNwb25zZSBpbiByZXNwb25zZXMpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jl
c3BvbnNlLm5hbWUgaXNFcXVhbDpAImpvaG5wc21pdGhAZXhhbXBsZS5jb20iXSB8fCBbcmVzcG9u
c2UubmFtZSBpc0VxdWFsOkAiIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzcG9uc2UuZGlz
cGxheU5hbWUgaXNFcXVhbDpAIkpvaG4gUC4gU21pdGgiXSB8fCBbcmVzcG9uc2UuZGlzcGxheU5h
bWUgaXNFcXVhbDpAIiJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tyZXNwb25zZS51c2VySGFu
ZGxlIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXSBpc0VxdWFsOkAiTUlJQmt6Q0NB
VGlnQXdJQkFqQ0NBWk13Z2dFNG9BTUNBUUl3Z2dHVE1JST0iXSB8fCAhcmVzcG9uc2UudXNlckhh
bmRsZSk7CisgICAgfQorCisgICAgYXV0byBpbmRleCA9IHdlYWtSYW5kb21VaW50MzIoKSAlIDI7
CisgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gcmVzcG9uc2VzW2lu
ZGV4XS51c2VySGFuZGxlID8gTk8gOiBZRVM7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9u
c2VzW2luZGV4XSk7Cit9CisKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRp
b25QYW5lbEZha2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
RGVsZWdhdGU+CkBAIC04NzIsNiArODg5LDQwIEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5l
bCwgR2V0QXNzZXJ0aW9uUGluKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2Vl
ZGVkISJdOwogfQogCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE11bHRpcGxlQWNjb3Vu
dHNOdWxsRGVsZWdhdGUpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRl
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzIiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKwor
ICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9j
b25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0
aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6
d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJv
UmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgIFtkZWxlZ2F0ZSBzZXRJc051bGw6dHJ1ZV07CisgICAgW3dlYlZpZXcgc2V0VUlE
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBNdWx0aXBsZUFjY291bnRzKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRy
PE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
IndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cyIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vz
c1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50
YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2Vl
ZGVkISJdOworICAgIEVYUEVDVF9FUShbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAInVzZXJIYW5kbGUiXSBpc0VxdWFsVG9TdHJpbmc6QCI8bnVsbD4iXSwgd2ViQXV0aGVu
dGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1t
dWx0aXBsZS1hY2NvdW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MzdlNDIwNzk1ZmQ1Njc3YmQ1MGYx
MWRkNTRlYTYwNDI0OWFlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1t
dWx0aXBsZS1hY2NvdW50cy5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUxv
bmdCYXNlNjQgPQorICAgICAgICAiQUtVQm9tSnBaRmhBS0FpdHp1aitUc2x6ZWxmMy92WndJR3RE
UU5nb0tlRmQ1b0VpZVl6aHl6QTY1c2FmMHRLMiIgKworICAgICAgICAidy9tb29hN3RRdEdnRGR3
WklqT2hqY3VaMHBRMWFqb0U0R1IwZVhCbGFuQjFZbXhwWXkxclpYa0NXQ1ZHekgrNSIgKworICAg
ICAgICAiWjUxVnN0dVFrdUhJMmVYaDBDdDFnUEMwZ1N4M0NXTGg1STlhMkFFQUFBQlFBMWhITUVV
Q0lRQ1NGVHV1QldnQiIgKworICAgICAgICAiNC9GMFZCN0RsVVZNMDlJSFBteGUxTXpIVXdSb0NS
WmJDQUlnR0tvdjZ4b0F4Mk1FZjYvNnFOczhPdXR6aFAyQyIgKworICAgICAgICAiUW9KMUw3RmU2
NEc5dUJjRXBHSnBaRmdnTUlJQmt6Q0NBVGlnQXdJQkFqQ0NBWk13Z2dFNG9BTUNBUUl3Z2dHVCIg
KworICAgICAgICAiTUlKa2FXTnZibmdvYUhSMGNITTZMeTl3YVdOekxtRmpiV1V1WTI5dEx6QXdM
M0F2WVVKcWFtcHdjVkJpTG5CdSIgKworICAgICAgICAiWjJSdVlXMWxkbXB2YUc1d2MyMXBkR2hB
WlhoaGJYQnNaUzVqYjIxclpHbHpjR3hoZVU1aGJXVnRTbTlvYmlCUSIgKworICAgICAgICAiTGlC
VGJXbDBhQVVDIjsKKyAgICBjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NCA9CisgICAg
ICAgICJBS01Cb21KcFpGaEFLQWl0enVqK1RzbHplbGYzL3Zad0lHdERRTmdvS2VGZDVvRWllWXpo
eXpBNjVzYWYwdEsyIiArCisgICAgICAgICJ3L21vb2E3dFF0R2dEZHdaSWpPaGpjdVowcFExYWpv
RTRHUjBlWEJsYW5CMVlteHBZeTFyWlhrQ1dDVkd6SCs1IiArCisgICAgICAgICJaNTFWc3R1UWt1
SEkyZVhoMEN0MWdQQzBnU3gzQ1dMaDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiAr
CisgICAgICAgICI0L0YwVkI3RGxVVk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgy
TUVmNi82cU5zOE91dHpoUDJDIiArCisgICAgICAgICJRb0oxTDdGZTY0Rzl1QmM9IjsKKyAgICBp
ZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBwYXls
b2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VMb25nQmFzZTY0LCB0ZXN0QXNzZXJ0aW9u
TWVzc2FnZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgo
KSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGJ5dGVzVG9I
ZXhTdHJpbmcoYnl0ZXMpCisgICAgeworICAgICAgICBpZiAoIWJ5dGVzKQorICAgICAgICAgICAg
cmV0dXJuIG51bGw7CisKKyAgICAgICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShieXRlcyk7Cisg
ICAgICAgIHZhciBoZXhCeXRlcyA9IFtdOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Ynl0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBieXRlU3RyaW5nID0gYnl0ZXNb
aV0udG9TdHJpbmcoMTYpOworICAgICAgICAgICAgaWYgKGJ5dGVTdHJpbmcubGVuZ3RoIDwgMikK
KyAgICAgICAgICAgICAgICBieXRlU3RyaW5nID0gIjAiICsgYnl0ZVN0cmluZzsKKyAgICAgICAg
ICAgIGhleEJ5dGVzLnB1c2goYnl0ZVN0cmluZyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gaGV4Qnl0ZXMuam9pbigiIik7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAg
ICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5
KDE2KSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMDAKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CisgICAgICAgIHVzZXJIYW5kbGUgPSBieXRlc1RvSGV4U3RyaW5nKGNyZWRlbnRpYWwucmVzcG9u
c2UudXNlckhhbmRsZSk7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKCJTdWNjZWVkZWQhIik7Cisg
ICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNz
YWdlKCJTdWNjZWVkZWQhIik7CisgICAgfSwgZXJyb3IgPT4geworICAgICAgICAvLyBjb25zb2xl
LmxvZyhlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxl
cnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXJyb3IubWVzc2FnZSk7CisgICAgfSk7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
d2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC1oaWQuaHRtbAppbmRleCA1YjZhZWJlYmYxMjRiMTAzOWVkMDc5NGVkMjJkM2RiNjhlYTM0
YWZjLi5lOTgxYTcwZjk5NzE5MTU1ZDBmYjNlNzk4ZTU2MTUyYWYzYjg2ODc4IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1s
CkBAIC0zOSw3ICszOSw3IEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgY2hhbGxlbmdl
OiBuZXcgVWludDhBcnJheSgxNiksCiAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0
eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICB0aW1lb3V0OiAxMDAK
KyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwKICAgICAgICAgfQogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387737</attachid>
            <date>2020-01-14 17:16:00 -0800</date>
            <delta_ts>2021-12-24 16:55:32 -0800</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>bug-206112-20200114171559.patch</filename>
            <type>text/plain</type>
            <size>69743</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNzFjMzc5NTMzOTc2NGJi
YzcwYmJjZjFhMDVlNzc4ZjQ5MGFiNTIuLjVlZWFiYThlNTg1OTFhODNjMzM4NTQ3MmU3ZWVlNTMx
Y2U1NjkyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDEtMTAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBTUEkgdG8gdGVsbCBVSSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDk1NzMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGRlbGVnYXRlIG1ldGhvZCBpbiBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGUgdG8gdGVsbCBVSSBjbGllbnRzIHRvCisgICAgICAgIHNlbGVj
dCBhbiBhc3NlcnRpb24gcmVzcG9uc2Ugd2hlbiBtdWx0aXBsZSBhcmUgcmV0dXJuZWQgZnJvbSBh
biBhdXRoZW50aWNhdG9yLiBIZXJlIGlzIHRoZSBTUEk6CisgICAgICAgIEBwcm90b2NvbCBfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2JqZWN0PgorICAgICAgICBAb3B0aW9u
YWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Ug
KikpY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIC4uLgorICAgICAgICBAZW5kCisKKyAgICAg
ICAgQSBuZXcgaW50ZXJmYWNlIGlzIGludHJvZHVjZWQgdG8gcmVwcmVzZW50IGFuIGF1dGhlbnRp
Y2F0b3IgYXNzZXJ0aW9uIHJlc3BvbnNlOgorICAgICAgICBAaW50ZXJmYWNlIF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgOiBOU09iamVjdAorICAgICAgICBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOworICAgICAgICBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsK
KyAgICAgICAgQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVz
ZXJIYW5kbGU7CisgICAgICAgIEBlbmQKKyAgICAgICAgT25seSBtZW1iZXJzIHRoYXQgY2FuIGFz
c2lzdCB1c2VycyB0byBtYWtlIGEgZGVjaXNpb24gYXJlIGV4cG9zZWQgdG8gVUkgY2xpZW50cy4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNw
cDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oLgorICAgICAgICAoQVBJOjpXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmguCisgICAgICAgICgt
W19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgZGVhbGxvY10pOgorICAgICAg
ICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIG5hbWVdKToKKyAgICAg
ICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBkaXNwbGF5TmFtZV0p
OgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIHVzZXJI
YW5kbGVdKToKKyAgICAgICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMS0xNCAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjI1NDUzMyBhbmQgcjI1NDUzNS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZS5oCmluZGV4IGRjNGM4MDM3YTM1NjgxM2JlNTJiYzM3OWY0ODdmNWI1NzkxYzhl
NTIuLmQ3MGE5Y2NmOGYzOTFiMGRkNjJjMmExMTRlMTE1MmY5ZjZjMGQ2YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtNDIsOSArNDIsOSBAQCBwdWJsaWM6CiAgICAgQXJy
YXlCdWZmZXIqIHVzZXJIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0KCk7
IH0KIAogICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFt
ZTsgfQotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29u
c3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdm9pZCBzZXRE
aXNwbGF5TmFtZShjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKSB7IG1fZGlzcGxheU5hbWUgPSBk
aXNwbGF5TmFtZTsgfQotICAgIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcGxheU5hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZDcmVkZW50aWFscyhz
aXplX3QgbnVtYmVyT2ZDcmVkZW50aWFscykgeyBtX251bWJlck9mQ3JlZGVudGlhbHMgPSBudW1i
ZXJPZkNyZWRlbnRpYWxzOyB9CiAgICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25z
dCB7IHJldHVybiBtX251bWJlck9mQ3JlZGVudGlhbHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSU9iamVjdC5oCmluZGV4IGZkYjgxZjQxMzU1MWZmYzJjYmQxZTI3ZjBiNDBkMjRiODRkZDg5
YmYuLjhkYTEzYzRiMzNjNzA4OTQ0YWIyMThiMzY3MDhlNzE2YzA4NDU5OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTE4Myw2ICsxODMsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UsCiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDY0MmY2ZWY0YmRj
N2IzNDFmODJiZDQ2NjNlYTNkMTkzMWU4NTIwZTcuLmJmMjRkYjZhYjk1NjA2OTBkYzgzNTQ1ZWM5
OTYzODExZWU2MmQ3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0K
QEAgLTg4LDYgKzg4LDcgQEAKICNpbXBvcnQgIl9XS1VzZXJJbml0aWF0ZWRBY3Rpb25JbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
VmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25JbnRlcm5hbC5oIgogCkBAIC0zODksNiArMzkwLDkgQEAgdm9pZCogT2JqZWN0OjpuZXdP
YmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGU6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bCBhbGxvY107CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6V2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZToKKyAgICAgICAgd3JhcHBlciA9IFtfV0tXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAog
ICAgIGNhc2UgVHlwZTo6QnVuZGxlRnJhbWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA2MDZmMDM5NGUxMDNk
ZDliMjEyYTQzOTRhODc0NjBjMjVjMjVkN2ZlLi5lNmRmYzMwMzcyMzljYTI0NzU2NGEzNGFiNTYy
NTkwMDNhY2YxMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTM0MSw2ICszNDEsNyBAQCBVSVByb2Nlc3Mv
QVBJL0FQSVVSTFNjaGVtZVRhc2suY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29y
bGQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQ
SVVzZXJTdHlsZVNoZWV0LmNwcAorVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBh
bmVsLmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCiBVSVByb2Nlc3Mv
QVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcApAQCAtNDAzLDggKzQwNCw5IEBAIFVJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCiBVSVByb2Nl
c3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAKIFVJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwCiAKLVVJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5jcHAKLVVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcAorLy8gRklYTUUoMjA2MjY2KTogQXV0b21hdGlvblByb3RvY29sT2JqZWN0
cy5oJ3MgIm5hbWVzcGFjZSBQcm90b2NvbCIgY29uZmxpY3RzIHdpdGggb2JqYy9ydW50aW1lLmgn
cyAidHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgUHJvdG9jb2wiCitVSVByb2Nlc3MvQXV0b21h
dGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIEBuby11bmlmeQogCiBVSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHlNYXAuY3BwCkBAIC00NTYsNyArNDU4LDggQEAgVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3MuY3BwCiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCiAKLVdlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorLy8gRklYTUUoMjA2MjY2
KTogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oJ3MgIm5hbWVzcGFjZSBQcm90b2NvbCIgY29u
ZmxpY3RzIHdpdGggb2JqYy9ydW50aW1lLmgncyAidHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3Qg
UHJvdG9jb2wiCitXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAgQG5vLXVuaWZ5CiAKIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAKIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzk0YzY3MDQ0NWZmZDE3MmZlMDJmMTU2ZDYwZTVmMTFl
ZmU5N2Q4NS4uYjczZGQ4MTU3ZWZhMjA3ZDZjZmMyOGY0YjNmZThhMmM5MDU1MTU4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtMjc4LDYgKzI3OCw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVXNlckNvbnRlbnRXb3JsZC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VySW5pdGlh
dGVkQWN0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Zpc2l0ZWRMaW5rU3RvcmUubW0KK1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYnNpdGVEYXRhU2l6ZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UmVzb3VyY2VMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVz
b3VyY2VMb2FkQ2xpZW50LmgKaW5kZXggMjE4MWQ4ZDU3NGQzZjU0YTZmYjg3NTY5M2EwMjcyYmE0
YzJlNTRiYy4uYTMwZGQ5NTIzMWRmNGY4YjFjNmE4YTFjYmI1NmUyNTY4ZDcwMWI2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQu
aApAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBzdHJ1Y3QgUmVzb3VyY2VM
b2FkSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNzk3NmZmNTJlYThlMTVhYjY4MGE1NjNlNDMxMDg2OGVjZDMxMDBlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkFQSURhdGEu
aCIKKworbmFtZXNwYWNlIEFQSSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFdl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpKTsKK30KKworV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZShSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYm
IHJlc3BvbnNlKQorICAgIDogbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKK3sKK30KKwor
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6fldlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CisKK1JlZlB0cjxEYXRhPiBXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8
QVBJOjpEYXRhPiBkYXRhOworICAgIGlmIChhdXRvKiB1c2VySGFuZGxlID0gbV9yZXNwb25zZS0+
dXNlckhhbmRsZSgpKSB7CisgICAgICAgIHVzZXJIYW5kbGUtPnJlZigpOworICAgICAgICBkYXRh
ID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PHVuc2ln
bmVkIGNoYXIqPih1c2VySGFuZGxlLT5kYXRhKCkpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCks
IFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgeworICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8QXJyYXlCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7
CisgICAgICAgIH0sIHVzZXJIYW5kbGUpOworICAgIH0KKyAgICByZXR1cm4gZGF0YTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE3NjIwODA1ZDQzZGY3
ZDA3NmI0OWUwMDhjMjExYzg2MWY1MjhjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQl9BVVRITikKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitj
bGFzcyBEYXRhOworCitjbGFzcyBXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlIGZp
bmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4mJik7CisgICAgfldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UoKTsKKworICAgIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZS0+bmFtZSgpOyB9CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS0+ZGlzcGxheU5hbWUoKTsgfQorICAgIFJlZlB0
cjxEYXRhPiB1c2VySGFuZGxlKCkgY29uc3Q7CisKKyAgICBjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmIHJlc3BvbnNlKCkgeyByZXR1cm4gbV9yZXNwb25zZS5n
ZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJik7CisKKyAg
ICBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBtX3Jlc3BvbnNl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKaW5kZXggMDA2MmY5YTdkOTc0NzI2NmY3ZjYyMjFm
NGU3OWQ1ODU3ZmZjMjMxYy4uNzAxMGQ3OGQ4NjRmZDBkYzI0N2U2YjAyYzFlOTI3ODBlN2RhODU1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQYW5lbChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9u
U3RhdHVzKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc1BhbmVsKFdlYktpdDo6
V2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZXMoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKCpyZXNwb25zZXMu
YmVnaW4oKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CisgICAgdmlydHVh
bCB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0
eSgpKTsgY29tcGxldGlvbkhhbmRsZXIoKnJlc3BvbnNlcy5iZWdpbigpKTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MTJmNWFmMDJkNDRlZGFhYzIwZTljODk0MmExYjUwMTE4Y2Zk
NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMCwwICsxLDQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlIDogTlNPYmplY3QKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5
KSBOU1N0cmluZyAqbmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNTdHJpbmcgKmRpc3BsYXlOYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk3MWYyMzY2NDAzMDU4MzkwMzRlMDkxODQ4NDdiOTdjZTFkOWFhYTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiV0tOU0RhdGEuaCIKKworQGltcGxl
bWVudGF0aW9uIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UKKworI2lmIEVO
QUJMRShXRUJfQVVUSE4pCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9yZXNwb25zZS0+fldl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UoKTsKKworICAgIFtzdXBlciBkZWFsbG9j
XTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIF9yZXNwb25zZS0+bmFt
ZSgpOworfQorCistIChOU1N0cmluZyAqKWRpc3BsYXlOYW1lCit7CisgICAgcmV0dXJuIF9yZXNw
b25zZS0+ZGlzcGxheU5hbWUoKTsKK30KKworLSAoTlNEYXRhICopdXNlckhhbmRsZQoreworICAg
IHJldHVybiB3cmFwcGVyKF9yZXNwb25zZS0+dXNlckhhbmRsZSgpKTsKK30KKworI3ByYWdtYSBt
YXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0Jilf
YXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfcmVzcG9uc2U7Cit9CisjZW5kaWYKKworQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRl
cm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVmMzYwMGZjOWYzMGM0OGU3ZGYyNmVkOWQwM2FhZTk1MDQ5MjFh
N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmgKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQor
CisjaW1wb3J0ICJBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCisjaW1w
b3J0ICJXS09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+
IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlOworfTsKKworfQorCitAaW50ZXJmYWNlIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0
U3RvcmFnZTxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U+IF9yZXNwb25z
ZTsKK30KK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaAppbmRleCA4NjgwNjIzZmM0OWUwN2FmYzMxYWFjNzYwZTViNmE0NGViZjJkMzA4
Li40MzFjNjMzYjBmZWIwYjU1MmE2YjlkMTg3ZWFkM2Q2ZmI1YmNjOGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIAorQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xh
c3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCkgewpAQCAtNjksNiArNzAsNyBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKIC0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB1cGRhdGVXZWJB
dXRoZW50aWNhdGlvblBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKXVwZGF0
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
LSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRpc21pc3NX
ZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRpb25SZXN1
bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwg
cmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRlZ2VyKXJldHJpZXMgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lk
KXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
ICo+ICopcmVzcG9uc2VzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCA0NDc0YmFjNjQyN2QyMDk2YjRkMTJhZDQ1ZTA4
NzBhNWNhMDA5ZmQ5Li4yZWIzMWU4MTJjOTU5OGU4OTg4NDBiOTU1OGNlMzMyZjJlZDY3OWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQsMTAgKzI0LDEwIEBACiAgKi8KIAog
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
LmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCIKLSNpbXBv
cnQgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KIAorI2ltcG9ydCAiV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIgorI2ltcG9ydCA8V2ViQ29yZS9XZWJBdXRoZW50
aWNhdGlvbkNvbnN0YW50cy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW1wbGVt
ZW50YXRpb24gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAppbmRleCBlODM1MzA0
MTNiMWRlZTVkOGFkMDRlZjJjMTVmNzdjNjExNmQyZjJhLi5hNDdiMjkyNmMxZDM2NzI1YWMzMjgx
MTFiY2RmZGQ1ZjFhNmU0MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpbXBvcnQg
IldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKK0BjbGFzcyBX
S1dlYlZpZXc7CisKIEBwcm90b2NvbCBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZTsKIAogbmFtZXNw
YWNlIEFQSSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDZiNzgwMGJjOTkwMGZlNjA5MDMxYTEzZjVhMGVkOWFk
YzRmNmViMjAuLmQ0MjYyODUzYzUwYTYwZmJhYjcxNTMwN2QyNTBmMGM4ZTAxZTM1OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJl
c291cmNlTG9hZERlbGVnYXRlLmgiCiAKKyNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkuaCIKKyNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2lt
cG9ydCAiX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS1Jlc291cmNlTG9h
ZEluZm9JbnRlcm5hbC5oIgogCkBAIC04MCw3ICs4Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkRGVs
ZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpSZXNvdXJj
ZUxvCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2RlbGVnYXRl
IHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVz
b3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShs
b2FkSW5mbykpLmdldCgpKSBkaWRTZW5kUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQ
Qm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOworICAgIFtkZWxlZ2F0ZSB3
ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgpIHJlc291
cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRlKFdURk1vdmUobG9h
ZEluZm8pKS5nZXQoKSkgZGlkU2VuZFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29y
ZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QpIGNvbnN0CkBAIC05Miw3ICs5NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkRGVsZWdh
dGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6
CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2RlbGVnYXRlIHdl
YlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3Vy
Y2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2Fk
SW5mbykpLmdldCgpKSBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnJlc3BvbnNlLm5zVVJMUmVz
cG9uc2UoKSBuZXdSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9s
aWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBw
ZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgp
KSBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBuZXdS
ZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5
OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6
OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJLaXQ6OlJlc291cmNl
TG9hZEluZm8mJiBsb2FkSW5mbywgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
JiBjaGFsbGVuZ2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKaW5kZXggMzJmYzdkMmQ3ZmZjZDkz
MTZmYTY2M2M2MGEyNWZiNmRjMWJhMTEwNi4uZDE2YjE3ZDVmYzZiYzc5NTIxNGIyN2U4MjU3ZmQ2
ZjAwYmQ0YzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNwb25kUmVjZWl2ZWQoUmVzcG9uZCYmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkb3duZ3JhZGUoQXV0aGVudGljYXRvciogaWQsIFJlZjxBdXRo
ZW50aWNhdG9yPiYmIGRvd25ncmFkZWRBdXRoZW50aWNhdG9yKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBhdXRoZW50aWNhdG9yU3RhdHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1
cykgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNv
bnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiYpPiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RG
OjpTdHJpbmcmKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1
YWwgfkF1dGhlbnRpY2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFu
YWdlci5jcHAKaW5kZXggOWNkNDU0N2M4OGFlODQ2ZTlmNTdmODlhNThjM2ZjNWJlYzJiNjE1MS4u
M2RiNjNlZjZiZDVlYTMyYjI5NmFjMDQ2YWE0M2EwZDE0OTdjNWU3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMjczLDE2ICsyNzMsMTYgQEAgdm9pZCBBdXRoZW50
aWNhdG9yTWFuYWdlcjo6YXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRp
b25TdGF0dXMgc3QKICAgICAgICAgcGFuZWwtPmNsaWVudCgpLnVwZGF0ZVBhbmVsKHN0YXR1cyk7
CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNl
cyhjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U+PiYgcmVzcG9uc2VzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlZjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogcGFuZWwgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5w
YW5lbC5nZXQoKSkKLSAgICAgICAgcGFuZWwtPmNsaWVudCgpLnNlbGVjdEFzc2VydGlvblJlc3Bv
bnNlcyhyZXNwb25zZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcGFu
ZWwtPmNsaWVudCgpLnJlcXVlc3RQaW4ocmV0cmllcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0UGluKHVpbnQ2NF90
IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnNlbGVjdEFzc2Vy
dGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEucGFu
ZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5jbGllbnQoKS5yZXF1ZXN0UGluKHJldHJpZXMsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcGFuZWwtPmNsaWVudCgpLnNlbGVj
dEFzc2VydGlvblJlc3BvbnNlKHJlc3BvbnNlcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjpjcmVhdGVTZXJ2aWNlKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdHJhbnNw
b3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImIG9ic2VydmVyKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5kZXggOWZkNTIzZDQwNzFmMTc4
NzIyYzRmZjFmOWQ1MjY0NzExODY4NzlmZS4uYTliNjI5M2M1OGYxMjIwNDMyZWI3NjViY2YyZDZh
MWVkZDliZTU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCkBAIC04MSw4ICs4
MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25kUmVjZWl2ZWQoUmVzcG9uZCYmKSBmaW5h
bDsKICAgICB2b2lkIGRvd25ncmFkZShBdXRoZW50aWNhdG9yKiBpZCwgUmVmPEF1dGhlbnRpY2F0
b3I+JiYgZG93bmdyYWRlZEF1dGhlbnRpY2F0b3IpIGZpbmFsOwogICAgIHZvaWQgYXV0aGVudGlj
YXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGZpbmFsOwotICAgIHZv
aWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VzKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYpPiYmKSBm
aW5hbDsKICAgICB2b2lkIHJlcXVlc3RQaW4odWludDY0X3QgcmV0cmllcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgZmluYWw7CiAKICAgICAv
LyBPdmVycmlkZW4gYnkgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLgogICAgIHZpcnR1YWwgVW5p
cXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGVTZXJ2aWNlKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
OjpPYnNlcnZlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDE0OTk0NjZhMWNlY2E4ZTlmZDkwZjljZjYxNDI1
NjU5MDJhODhmYmYuLmZhZmFhODExMjg3MTI1NWE2YzQ4YzNlMDlkMTEzZTlhNzNmYTRhMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVBhbmVsKFdlYkF1
dGhlbnRpY2F0aW9uU3RhdHVzKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRpc21pc3NQYW5lbChX
ZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGlu
KHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYp
IGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFz
aFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsKIAogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgKm1fcGFuZWw7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxEZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOwpAQCAtNTgsNiArNTksNyBAQCBwcml2YXRlOgogICAg
ICAgICBib29sIHBhbmVsVXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbCA6IDE7CiAgICAgICAg
IGJvb2wgcGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQgOiAxOwog
ICAgICAgICBib29sIHBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlv
bkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBhbmVsc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1t
CmluZGV4IDdmMTU3YmQ5ODQ2OWNkNjY5MWZlMTAwZjNlMzVhNDE5NzM4ZjVlOTEuLjBjMWJkNGY1
YThjOWNkMmUyYzhlOTM4NzJhN2VmMzAyMjZiMjVlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQpAQCAtMjgsOCArMjgsMTAg
QEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNpbXBvcnQgIkFQSVdlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXIuaCIKICNpbXBvcnQgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCIKKyNpbXBvcnQgIl9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpAQCAtNDMsNiArNDUsNyBAQCBXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUAogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsVXBkYXRlV2ViQXV0aGVudGljYXRp
b25QYW5lbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnVw
ZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFu
ZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpkaXNtaXNzV2ViQXV0aGVudGljYXRpb25Q
YW5lbFdpdGhSZXN1bHQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxSZXF1ZXN0UGlu
V2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmll
czpjb21wbGV0aW9uSGFuZGxlcjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpjb21wbGV0
aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGVsZWdhdGUoKQpA
QCAtNjIsNiArNjUsNyBAQCBzdGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSB3
a1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUoV2ViQXV0aGVudAogCiB2b2lkIFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQ6OnVwZGF0ZVBhbmVsKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVz
IHN0YXR1cykgY29uc3QKIHsKKyAgICAvLyBGSVhNRSgyMDYyNDgpCiAgICAgLy8gQ2FsbCBkZWxl
Z2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNl
IHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQogICAgIC8vIG9mIHRoZSBj
dXJyZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBzdGF0dXNdIHsK
QEAgLTkzLDYgKzk3LDcgQEAgc3RhdGljIF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0IHdrV2Vi
QXV0aGVudGljYXRpb25SZXN1bHQoV2ViQXV0aGVudGljYXRpb25SZXMKIAogdm9pZCBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkaXNtaXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1
bHQgcmVzdWx0KSBjb25zdAogeworICAgIC8vIEZJWE1FKDIwNjI0OCkKICAgICAvLyBDYWxsIGRl
bGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFu
Y2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCiAgICAgLy8gb2YgdGhl
IGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgogICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIHJlc3VsdF0g
ewpAQCAtMTEyLDYgKzExNyw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
ZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0IHJlc3VsdCkKIAogdm9pZCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgY29uc3QKIHsKKyAgICAvLyBGSVhNRSgyMDYyNDgpCiAgICAgLy8gQ2FsbCBkZWxlZ2F0
ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRo
YXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQogICAgIC8vIG9mIHRoZSBjdXJy
ZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCByZXRyaWVzLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
QEAgLTE0MSw2ICsxNDcsNDMgQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojpy
ZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGUKICAgICB9KTsKIH0K
IAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNw
b25zZShjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U+PiYgcmVzcG9uc2VzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdAoreworICAgIEFTU0VSVCghcmVzcG9uc2VzLmlzRW1wdHkoKSk7CisgICAgYXV0byBuc1Jl
c3BvbnNlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpyZXNwb25zZXMuc2l6ZSgpXSk7CisgICAgZm9yIChhdXRvJiByZXNwb25zZSA6IHJlc3BvbnNl
cykKKyAgICAgICAgW25zUmVzcG9uc2VzIGFkZE9iamVjdDp3cmFwcGVyKEFQSTo6V2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlLmNvcHlSZWYoKSkpXTsK
KworICAgIC8vIEZJWE1FKDIwNjI0OCkKKyAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4
dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3Rl
bnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCisgICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3Ag
aW4gdW5leHBlY3RlZCB3YXlzLgorICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIG5zUmVzcG9uc2VzID0gV1RGTW92ZShuc1Jl
c3BvbnNlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSkucmVzcG9u
c2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1f
ZGVsZWdhdGVNZXRob2RzLnBhbmVsc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8QVBJOjpX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlJj4oW1tuc1Jlc3BvbnNlcyBmaXJzdE9i
amVjdF0gX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7CisgICAg
ICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSY+KFtbbnNSZXNw
b25zZXMgZmlyc3RPYmplY3RdIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHBhbmVs
OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOikpOworICAgICAgICBb
ZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpuc1Jlc3BvbnNl
cy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIp
XShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25zZSkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UmPihbcmVz
cG9uc2UgX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAgICAgICB9KS5nZXQoKV07CisgICAg
fSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKaW5kZXggM2MzZjk2
MjE4YWJiZTVmNmMxMjIxMDk5NzQ5ZGU5NzRjZWVhODE2OC4uOWEwYThkYjI3ZGE1YTJhMzBkMmZl
MWZkNTQ5Yjc3MmQ2ZGYyYTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRv
ci5jcHAKQEAgLTE1MSwxMSArMTUxLDExIEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0TmV4dEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWluCiAKICAg
ICBpZiAoIW1fcmVtYWluaW5nQXNzZXJ0aW9uUmVzcG9uc2VzKSB7CiAgICAgICAgIGlmIChhdXRv
KiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKLSAgICAgICAgICAgIG9ic2VydmVyLT5z
ZWxlY3RBc3NlcnRpb25SZXNwb25zZXMobV9hc3NlcnRpb25SZXNwb25zZXMsIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGNvbnN0IFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+JiByZXNwb25zZSkgeworICAgICAgICAgICAgb2JzZXJ2ZXItPnNlbGVjdEFz
c2VydGlvblJlc3BvbnNlKG1fYXNzZXJ0aW9uUmVzcG9uc2VzLCBbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Um
IHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgYXV0byByZXR1cm5SZXNwb25zZSA9IG1fYXNzZXJ0aW9uUmVz
cG9uc2VzLnRha2UocmVzcG9uc2UpOworICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuUmVzcG9u
c2UgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy50YWtlKGNvbnN0X2Nhc3Q8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKj4oJnJlc3BvbnNlKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXR1
cm5SZXNwb25zZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJldHVyblJlc3BvbnNlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50
aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCmluZGV4IDZmN2ZiNTNlNjUyYTJjMTcyMzEzYmEyZWYz
MGMyMDg5ZDk3NDMxOWUuLjZiNTFiZjk5M2QzYWQxODE4ZmE1MDRmNThlYTVjYWU5YTY1Mzg4ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwCkBAIC0yOCw2ICsyOCw4
IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW5jbHVkZSAiQ3RhcERyaXZlci5oIgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRmlkb0F1dGhlbnRpY2F0b3I6OkZpZG9BdXRoZW50aWNh
dG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiYmIGRyaXZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIxOTQzM2FlMmJiOWZh
NzY2NzUyNmU3MjU1ZDlkMTVkYTQyYTQxZjUuLmRjNjIwNWUwNGU3ZTZmYWQ4YjNkN2VmNTYzMjVi
NmI0NzA2MGZhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTA5MywxMSArMTA5MywxNyBAQAogCQk1NzQ3MjhENDIzNDU3MEFFMDAx
NzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQ3MjhEMzIzNDU3MEFFMDAxNzAw
QUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFsLmggKi87IH07CiAJCTU3NTk3
RUI5MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyog
Q3RhcEhpZERyaXZlci5oICovOyB9OwogCQk1NzU5N0VCRDIxODE4NDkwMDAzN0Y5MjQgLyogQ3Rh
cEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NTk3RUJCMjE4MTg0OEYwMDM3RjkyNCAvKiBDdGFwQXV0aGVudGljYXRvci5oICov
OyB9OworCQk1NzVCMUJCODIzQ0U5QkZDMDAyMDYzOUEgLyogV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzBBMTk0NDFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAg
Ki87IH07CisJCTU3NUIxQkI5MjNDRTlDMEIwMDIwNjM5QSAvKiBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTk1MjI2RDUyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAg
Ki87IH07CisJCTU3NUIxQkJBMjNDRTlDMTMwMDIwNjM5QSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1
QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwICovOyB9Owog
CQk1NzZDQTlENzIyQjg2MjE4MDAzMDE0M0MgLyogU09BdXRob3JpemF0aW9uTlNVUkxFeHRyYXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkQzMTcz
MjJCMzUxNDgwMDhEMEU4QiAvKiBTT0F1dGhvcml6YXRpb25OU1VSTEV4dHJhcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3NzJGMjA2MjE3REJE
NkEwMDU2QkYyQyAvKiBIaWRTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzcyRjIwNDIxN0RCRDZBMDA1NkJGMkMgLyogSGlkU2VydmljZS5o
ICovOyB9OwogCQk1NzdGRjc4MjIzNDZFODFDMDA0RURGQjkgLyogQVBJV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTc3RkY3ODEyMzQ2RTgxQzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQuaCAqLzsgfTsKIAkJNTc3RkY3ODUyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3N0ZGNzgzMjM0NkVDQUEwMDRFREZCOSAvKiBXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmggKi87IH07CiAJCTU3OERDMjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2Nh
bEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3OERDMjk3MjE1NUEwMDEwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRp
Y2F0aW9uU29mdExpbmsuaCAqLzsgfTsKKwkJNTc5RjFCRjYyM0M4MERCNjAwQzdENEI0IC8qIF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OUYxQkY0MjNDODBEQjYwMEM3RDRCNCAvKiBf
V0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTc5RjFCRjkyM0M4MEVDNjAwQzdENEI0
IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5RjFCRjgyM0M4MEVD
NjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5h
bC5oICovOyB9OworCQk1NzlGMUJGQzIzQzgxMUNGMDBDN0Q0QjQgLyogQVBJV2ViQXV0aGVudGlj
YXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc5RjFCRkEyM0M4MTFDRjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLzsgfTsKIAkJNTdBQzhGNTAyMTdGRUVEOTAwNTU0
MzhDIC8qIEhpZENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3QUM4RjRFMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmgg
Ki87IH07CiAJCTU3QjRCNDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1
dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0I0QjQ1RTIwQjUwNEFCMDBENEFENzkgLyogQ2xpZW50Q2VydGlm
aWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oICovOyB9OwogCQk1N0I4MjY0MTIzMDRF
QjNFMDBCNzJFQjAgLyogTmVhckZpZWxkU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0MDIzMDRFQjNFMDBCNzJFQjAgLyogTmVhckZpZWxk
U1BJLmggKi87IH07CkBAIC0xNDIxLDcgKzE0MjcsNiBAQAogCQlBMUVBMDIzODFEQUJGRjdFMDA5
NjAyMUYgLyogV0tDb250ZXh0TWVudUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVBMDIzNjFEQUJGRjdFMDA5NjAyMUYgLyogV0tDb250
ZXh0TWVudUxpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTFFQTAyNDAxREFDMzFEQjAwOTYwMjFGIC8qIFdlYkNvbnRleHRNZW51TGlz
dGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFFQTAyM0UxREFDMzFEQjAwOTYwMjFGIC8qIFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94
eS5oICovOyB9OwogCQlBMUZCNjgyNDFGNkU1MTgyMDBDNDNGOUYgLyogV0tDcmFzaFJlcG9ydGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUZCNjgy
MjFGNkU1MTgyMDBDNDNGOUYgLyogV0tDcmFzaFJlcG9ydGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTM4QTEyRTEyM0M5M0FDNzAwRkFCRkE5
IC8qIFRleHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRleHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0Y1NDAy
MTU0QTVENzAwNjYyODQxIC8qIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRjUzRTIxNTRBNUNDMDA2
NjI4NDEgLyogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQTUxOEI1RDIx
RkUxRDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTE4QjVEMDFGRTFENTVCMDBGOUZBMjgg
LyogV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCAqLzsgfTsKIAkJQTU0MjkzQTQxOTVBNDNEQTAwMjc4
MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTQyOTNBMjE5NUE0M0M2MDAy
NzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsK
QEAgLTIwNjYsOSArMjA3MSw5IEBACiAJCTA3MUJDNTg0MjNDQzJDMDkwMDY4MEQ3QyAvKiBSZW1v
dGVWaWRlb1RyYWNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlVmlkZW9UcmFj
a1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcxQkM1ODUyM0NDMkMw
OTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVWaWRlb1RyYWNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcxQkM1
OEIyM0NERkU3NTAwNjgwRDdDIC8qIFJlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMDcxQkM1OEMyM0NFMUVBOTAwNjgwRDdDIC8qIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGgg
PSBSZW1vdGVNZWRpYVBsYXllclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMDcxQkM1OEQyM0NFMUVBQTAwNjgwRDdDIC8qIFJlbW90ZU1lZGlh
UGxheWVyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBS
ZW1vdGVNZWRpYVBsYXllclByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVy
UHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzFCQzU4RTIz
Q0UxRUFBMDA2ODBEN0MgLyogUmVtb3RlTWVkaWFQbGF5ZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVNZWRpYVBsYXllclByb3h5
TWVzc2FnZXNSZXBsaWVzLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllclByb3h5TWVzc2FnZXNS
ZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MUJDNThDMjNDRTFFQTkw
MDY4MEQ3QyAvKiBSZW1vdGVNZWRpYVBsYXllclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFCQzU4
RDIzQ0UxRUFBMDA2ODBEN0MgLyogUmVtb3RlTWVkaWFQbGF5ZXJQcm94eU1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyUHJveHlNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFCQzU4RTIzQ0UxRUFBMDA2
ODBEN0MgLyogUmVtb3RlTWVkaWFQbGF5ZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllclByb3h5TWVzc2FnZXNS
ZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MjVFRkFCMjM5QUUzODQw
MEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MjVFRkFEMjM5QjAy
NDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zNzczLDYgKzM3NzgsMTEgQEAKIAkJNTc3RkY3ODMyMzQ2RUNB
QTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzdGRjc4NDIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OERDMjk3MjE1NUEwMDEw
MDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3OUYxQkY0MjNDODBEQjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5RjFCRjUyM0M4
MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJGODIzQzgwRUM2MDBD
N0Q0QjQgLyogX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzlGMUJGQTIzQzgxMUNGMDBD
N0Q0QjQgLyogQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3OUYxQkZCMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQ
SVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0FDOEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIaWRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3QUM4RjRGMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gSGlkQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTdCNEI0NUQyMEI1MDRBQjAwRDRBRDc5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdl
ckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0aGVu
dGljYXRpb25NYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
MzczLDYgKzQzODMsNyBAQAogCQlBMUVERDJEQzE4ODRCOUI1MDBCQkZFOTggLyogU2VjSXRlbVNo
aW0ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU2VjSXRlbVNoaW0ueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkI2ODIyMUY2RTUxODIwMEM0M0Y5RiAvKiBXS0NyYXNo
UmVwb3J0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDcmFzaFJlcG9ydGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExRkI2ODIzMUY2RTUxODIwMEM0M0Y5RiAvKiBXS0NyYXNoUmVw
b3J0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0NyYXNoUmVwb3J0ZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzOEExMkUxMjNDOTNBQzcwMEZBQkZBOSAvKiBUZXh0
Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q2hl
Y2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzOTM3QjYxMjNDRDFCOUIw
MDVCMkEyRSAvKiBXZWJQcmVmZXJlbmNlc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViUHJlZmVyZW5jZXNDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTUxM0Y1M0UyMTU0QTVDQzAwNjYyODQxIC8qIFdlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNGNTNGMjE1NEE1Q0QwMDY2Mjg0
MSAvKiBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02ODc1LDYgKzY4ODYsOSBAQAogCQkJCTFBODFCMzdGMThCRDY2QUQwMDA3RkRBQyAvKiBf
V0tWaXNpdGVkTGlua1N0b3JlLmggKi8sCiAJCQkJMUE4MUIzN0UxOEJENjZBRDAwMDdGREFDIC8q
IF9XS1Zpc2l0ZWRMaW5rU3RvcmUubW0gKi8sCiAJCQkJMUE4MUIzODQxOEJENjczQTAwMDdGREFD
IC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oICovLAorCQkJCTU3OUYxQkY0MjNDODBE
QjYwMEM3RDRCNCAvKiBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi8s
CisJCQkJNTc5RjFCRjUyM0M4MERCNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UubW0gKi8sCisJCQkJNTc5RjFCRjgyM0M4MEVDNjAwQzdENEI0IC8qIF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oICovLAogCQkJCTU3
NDcyOENGMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggKi8s
CiAJCQkJNTc0NzI4RDAyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0gKi8sCiAJCQkJNTc0NzI4RDMyMzQ1NzBBRTAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxJbnRlcm5hbC5oICovLApAQCAtODU1Nyw2ICs4NTcxLDggQEAKIAkJCQk3Qzg5
RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5oICovLAogCQkJCTJEODc4NjIx
MUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5jcHAgKi8sCiAJCQkJMkQ4Nzg2
MjIxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0LmggKi8sCisJCQkJNTc5RjFC
RkIyM0M4MTFDRjAwQzdENEI0IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UuY3BwICovLAorCQkJCTU3OUYxQkZBMjNDODExQ0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggKi8sCiAJCQkJNTdFQkUyNjkyMzQ2NzZDNTAwOEQ4
QUY5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwICovLAogCQkJCTU3RUJFMjY4MjM0
Njc2QzUwMDhEOEFGOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggKi8sCiAJCQkJNTc3
RkY3ODEyMzQ2RTgxQzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQu
aCAqLywKQEAgLTk5MjksNiArOTk0NSw4IEBACiAJCQkJMkQ4Nzg2MjAxQkRCNTdGNTAwRDAyQUJC
IC8qIF9XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODFC
MzgxMThCRDY2QUQwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTgxQjM4NTE4QkQ2NzNBMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzlGMUJGNjIzQzgwREI2MDBDN0Q0QjQgLyog
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTc5RjFCRjkyM0M4MEVDNjAwQzdENEI0IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc0NzI4RDEyMzQ1NkU5
ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3NDcyOEQ0MjM0NTcwQUUwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTI4Njc4MUM3RTc2NTEwMDY5QUM0RiAv
KiBfV0tXZWJzaXRlRGF0YVNpemUuaCBpbiBIZWFkZXJzICovLApAQCAtMTAwMTEsNiArMTAwMjks
NyBAQAogCQkJCTJEODc4NjI0MUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzVFMUFGRUQxNkIyMTAxNzAwNkNDMUYyIC8qIEFQSVdlYkFy
Y2hpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1RTFBRkVGMTZCMjEwMjkwMDZDQzFGMiAvKiBB
UElXZWJBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3OUYxQkZDMjNDODEx
Q0YwMEM3RDRCNCAvKiBBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1N0VCRTI2QTIzNDY3NkM1MDA4RDhBRjkgLyogQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc3RkY3ODIyMzQ2RTgxQzAwNEVE
RkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRTI4Njg0MUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMjAzMSw2ICsxMjA1MCw3IEBACiAJCQkJNDFERTdDNkMyMjI3OEYx
RTAwNTMyQjY1IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MkE3ODcyMTJCNkFCMTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMUFEQUZCNjIzNjhFNkE4MDA5Q0I3NzYgLyogU2hhcmVkTWVtb3J5LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTU3NUIxQkI5MjNDRTlDMEIwMDIwNjM5QSAvKiBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2
ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3Jh
Z2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNjhFRURF
MjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTEyMjI2LDcgKzEyMjQ2LDkgQEAKIAkJCQkxQTYwMjI0QzE4QzE2
QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQThFN0QzQzE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdEQ0VE
NzAyMTQyRUU2ODAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU3NUIxQkJBMjNDRTlDMTMwMDIw
NjM5QSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzBB
MTk1NzFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTc1QjFCQjgyM0NFOUJGQzAwMjA2MzlBIC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMwQTE5NTMx
QzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRkVDMUMxNjI3QjQ1NzAwNzAwRjZEIC8qIFdl
YkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMwOTM0
NDcxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGQ0
YTM3YWRiZTY1ODVhMzYzZTM3ZjllNWY2M2IzOGM3YWEwODQwMWMuLjE4ZDAyMjM4ZTUxMzkyNTgz
MWZkZTk1OWZhZTA3YTQ3MTBlZjIxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpz
ZXRTY3JpcHRPYmplY3QoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTT2IKICAgICBKU0M6
OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
ZXIodm0pOwogICAgIGF1dG8gc2NyaXB0T2JqZWN0SUQgPSBKU0M6OklkZW50aWZpZXI6OmZyb21V
aWQobV9zY3JpcHRPYmplY3RJZGVudGlmaWVyKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChn
bG9iYWxPYmplY3QpOworICAgIEpTQzo6UHV0UHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBnbG9iYWxPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBzY3JpcHRPYmplY3RJRCwgdG9KUyhnbG9iYWxPYmplY3QsIG9iamVjdCks
IHNsb3QpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMjFiMDc0OWY0YWQ2MjgwZDA3MmQxMDk0OGU4YTJkZTA0MmYxMWNkNS4uMjEwOGZi
YTA3ZjU3YTQ3OTlmYTUzMjUxM2NkMjE2MTZiODg5MzZhNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAxLTEw
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhu
XSBJbXBsZW1lbnQgU1BJIHRvIHRlbGwgVUkgY2xpZW50cyB0byBzZWxlY3QgYXNzZXJ0aW9uIHJl
c3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA2MTEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5NTczMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAg
ICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnNlbGVjdEFz
c2VydGlvblJlc3BvbnNlczpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbDoKKwogMjAyMC0wMS0xNCAg
Sm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgdGVzdC13ZWJr
aXRweTogTWFrZSBqc29uIGZpbGUgY3JlYXRpb24gUHl0aG9uIDMgY29tcGF0aWJsZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBhMmQ0MWU2YzNlYmMyZmU5YmI2MGMxYTQ2MjkyODBkNzI4MTU5
MWIzLi5kZTMxYjFlZmNkOTcyZDkyYmIwNDNlNzg4NDc0YjMyYWY3ZTU5NTBiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzY4LDYgKzM2OCw3IEBACiAJCTU3OTdGRTMzMUVCMTVBQjEwMEIy
RjRBMCAvKiBuYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0by5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OTdGRTMyMUVCMTVB
ODkwMEIyRjRBMCAvKiBuYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0by5odG1sICovOyB9
OwogCQk1Nzk4MzM3RTIzNjAxOUE0MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCAqLzsgfTsKIAkJNTc5ODMzOTIyMzY4RkEz
NzAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBs
ZS10YWdzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc5ODMzN0IyMzVFQjY1QzAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1n
ZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwgKi87IH07CisJCTU3OUYxQzAxMjND
OTNBRjUwMEM3RDRCNCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVs
dGlwbGUtYWNjb3VudHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzlGMUJGRjIzQzkyRkQzMDBDN0Q0QjQgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzLmh0bWwgKi87IH07CiAJ
CTU3QTc5ODU3MjI0QUIzNEUwMEE3RjZGMSAvKiBXZWJDcnlwdG9NYXN0ZXJLZXkubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0E3OTg1NjIyNEFCMzRF
MDBBN0Y2RjEgLyogV2ViQ3J5cHRvTWFzdGVyS2V5Lm1tICovOyB9OwogCQk1N0MzRkE2NjFGN0My
NDhGMDA5RDRCODAgLyogV2Vha1B0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0I5QkMzNzFBNjc0ODIzMDBGRTU2NzggLyogV2Vha1B0ci5jcHAg
Ki87IH07CiAJCTU3QzYyNDRFMjM0NkJDRkEwMDM4M0ZFNyAvKiBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdDNjI0NEQyMzQ2QkNGQTAwMzgzRkU3IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0g
Ki87IH07CkBAIC0xNDg0LDYgKzE0ODUsNyBAQAogCQkJCTJFQkQ5RDBBMjEzNDczMEQwMDJEQTc1
OCAvKiB2aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNENTc3Nzk5MjExQ0Uw
RTQwMDFCMzcxRSAvKiB3ZWItYXVkaW8tb25seS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTU3NjYzREYzMjM1N0U0ODkwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1oaWQtY2FuY2VsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTc5RjFD
MDEyM0M5M0FGNTAwQzdENEI0IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhp
ZC1tdWx0aXBsZS1hY2NvdW50cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NzQ1
NEQwMjM1OUIzNzgwMDhFMUVENyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1o
aWQtbm8tY3JlZGVudGlhbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzBEMjZG
QzIzQzNGODcwMDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlk
LXBpbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NjYzREVDMjM0RjFGOTMwMEU4
NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKQEAgLTE5NDksNiArMTk1MSw3IEBACiAJCTU3OTgzMzdCMjM1RUI2NUMw
MDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUt
dGFncy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlv
bi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc5OEUyQUYxQ0FGNUMyODAwQzVDQkEwIC8qIFByb3Zpc2lv
bmFsVVJMTm90Q2hhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3OUYxQkZGMjNDOTJGRDMwMEM3RDRCNCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QTc5ODU2MjI0QUIzNEUwMEE3RjZGMSAvKiBXZWJD
cnlwdG9NYXN0ZXJLZXkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDcnlwdG9NYXN0ZXJL
ZXkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QzYyNDREMjM0NkJDRkEwMDM4
M0ZFNyAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdDNjI0NEYyMzQ2QzFFQzAwMzgzRkU3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zNTAxLDYgKzM1MDQsNyBAQAogCQkJCUNENTc3NzlCMjExQ0U2Q0UwMDFCMzcxRSAvKiB2aWRl
by13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbCAqLywKIAkJCQlDRDU3Nzc5ODIxMUNERThG
MDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCAqLywKIAkJCQk1NzY2M0RGMjIzNTdFNDVE
MDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWNhbmNlbC5o
dG1sICovLAorCQkJCTU3OUYxQkZGMjNDOTJGRDMwMEM3RDRCNCAvKiB3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMuaHRtbCAqLywKIAkJCQk1Nzc0
NTRDRjIzNTlCMzM4MDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
aGlkLW5vLWNyZWRlbnRpYWxzLmh0bWwgKi8sCiAJCQkJNTcwRDI2RkIyM0MzRjg2NTAwRDVDRjY3
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4uaHRtbCAqLywKIAkJ
CQk1NzY2M0RFQjIzNEYxRjgwMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24taGlkLmh0bWwgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5k
ZXggMGNiMjQ3OGRjOWIxOWM3YWFhMjE0YzgzOGFmZmJiM2MxYzJhZmQzZC4uYTk3NTgzMzA0ZTY4
YTkwOWJkZDMwYjgwN2Y3OTU4ZjcyZTY0MGMyOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbQpAQCAtMzUsOCArMzUsMTAgQEAKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CisjaW1wb3J0IDxXZWJLaXQv
X1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViS2l0
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgor
I2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
YW4gPSBmYWxzZTsKQEAgLTQ2LDYgKzQ4LDcgQEAgc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZU11bHRpcGxlTkZDVGFnc1ByZXNlbnQgPSBmYWxzZTsKIHN0YXRpYyBib29s
IHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQgPSBmYWxzZTsK
IHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYW5jZWxJbW1lZGlhdGVseSA9IGZh
bHNlOwogc3RhdGljIFN0cmluZyB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluOworc3RhdGljIEJP
T0wgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gTk87CiAKIEBpbnRlcmZh
Y2UgVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CiBAZW5kCkBAIC05MSw2ICs5NCwyMCBAQCAtICh2
b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgcmVxdWVzdFBJTldp
dGhSZW1haW5pbmdSZXRyaWVzOgogICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxQaW4pOwogfQogCistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICo+ICopcmVzcG9uc2VzIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICopKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgRVhQRUNUX0VRKHJlc3BvbnNlcy5jb3VudCwgMnVsKTsK
KyAgICBmb3IgKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKnJlc3BvbnNl
IGluIHJlc3BvbnNlcykgeworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzcG9uc2UubmFtZSBpc0Vx
dWFsOkAiam9obnBzbWl0aEBleGFtcGxlLmNvbSJdIHx8IFtyZXNwb25zZS5uYW1lIGlzRXF1YWw6
QCIiXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXNwb25zZS5kaXNwbGF5TmFtZSBpc0VxdWFs
OkAiSm9obiBQLiBTbWl0aCJdIHx8IFtyZXNwb25zZS5kaXNwbGF5TmFtZSBpc0VxdWFsOkAiIl0p
OworICAgICAgICBFWFBFQ1RfVFJVRShbW3Jlc3BvbnNlLnVzZXJIYW5kbGUgYmFzZTY0RW5jb2Rl
ZFN0cmluZ1dpdGhPcHRpb25zOjBdIGlzRXF1YWw6QCJNSUlCa3pDQ0FUaWdBd0lCQWpDQ0FaTXdn
Z0U0b0FNQ0FRSXdnZ0dUTUlJPSJdIHx8ICFyZXNwb25zZS51c2VySGFuZGxlKTsKKyAgICB9CisK
KyAgICBhdXRvIGluZGV4ID0gd2Vha1JhbmRvbVVpbnQzMigpICUgMjsKKyAgICB3ZWJBdXRoZW50
aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSByZXNwb25zZXNbaW5kZXhdLnVzZXJIYW5kbGUg
PyBOTyA6IFlFUzsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbaW5kZXhdKTsKK30K
KwogQGVuZAogCiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRmFrZURlbGVn
YXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4KQEAgLTg3
Miw2ICs4ODksNDAgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBc3NlcnRpb25Q
aW4pCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CiB9CiAKK1RF
U1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTXVsdGlwbGVBY2NvdW50c051bGxEZWxlZ2F0ZSkK
K3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmln
dXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRo
VGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25m
aWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2Vz
XSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlv
bkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2RlbGVn
YXRlIHNldElzTnVsbDp0cnVlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAi
U3VjY2VlZGVkISJdOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE11bHRpcGxl
QWNjb3VudHMpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRzIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1
dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1
cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVy
bmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0
aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgp
XV07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CisgICAgRVhQ
RUNUX0VRKFtbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlckhhbmRs
ZSJdIGlzRXF1YWxUb1N0cmluZzpAIjxudWxsPiJdLCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVs
bFVzZXJIYW5kbGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbXVs
dGlwbGUtYWNjb3VudHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDYzN2U0MjA3OTVmZDU2NzdiZDUwZjExZGQ1NGVhNjA0MjQ5YWU0
OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW11bHRpcGxlLWFjY291bnRz
Lmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+Cis8
c2NyaXB0PgorICAgIGNvbnN0IHRlc3RBc3NlcnRpb25NZXNzYWdlTG9uZ0Jhc2U2NCA9CisgICAg
ICAgICJBS1VCb21KcFpGaEFLQWl0enVqK1RzbHplbGYzL3Zad0lHdERRTmdvS2VGZDVvRWllWXpo
eXpBNjVzYWYwdEsyIiArCisgICAgICAgICJ3L21vb2E3dFF0R2dEZHdaSWpPaGpjdVowcFExYWpv
RTRHUjBlWEJsYW5CMVlteHBZeTFyWlhrQ1dDVkd6SCs1IiArCisgICAgICAgICJaNTFWc3R1UWt1
SEkyZVhoMEN0MWdQQzBnU3gzQ1dMaDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiAr
CisgICAgICAgICI0L0YwVkI3RGxVVk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgy
TUVmNi82cU5zOE91dHpoUDJDIiArCisgICAgICAgICJRb0oxTDdGZTY0Rzl1QmNFcEdKcFpGZ2dN
SUlCa3pDQ0FUaWdBd0lCQWpDQ0FaTXdnZ0U0b0FNQ0FRSXdnZ0dUIiArCisgICAgICAgICJNSUpr
YVdOdmJuZ29hSFIwY0hNNkx5OXdhV056TG1GamJXVXVZMjl0THpBd0wzQXZZVUpxYW1wd2NWQmlM
bkJ1IiArCisgICAgICAgICJaMlJ1WVcxbGRtcHZhRzV3YzIxcGRHaEFaWGhoYlhCc1pTNWpiMjFy
WkdsemNHeGhlVTVoYldWdFNtOW9iaUJRIiArCisgICAgICAgICJMaUJUYldsMGFBVUMiOworICAg
IGNvbnN0IHRlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0ID0KKyAgICAgICAgIkFLTUJvbUpwWkZo
QUtBaXR6dWorVHNsemVsZjMvdlp3SUd0RFFOZ29LZUZkNW9FaWVZemh5ekE2NXNhZjB0SzIiICsK
KyAgICAgICAgIncvbW9vYTd0UXRHZ0Rkd1pJak9oamN1WjBwUTFham9FNEdSMGVYQmxhbkIxWW14
cFl5MXJaWGtDV0NWR3pIKzUiICsKKyAgICAgICAgIlo1MVZzdHVRa3VISTJlWGgwQ3QxZ1BDMGdT
eDNDV0xoNUk5YTJBRUFBQUJRQTFoSE1FVUNJUUNTRlR1dUJXZ0IiICsKKyAgICAgICAgIjQvRjBW
QjdEbFVWTTA5SUhQbXhlMU16SFV3Um9DUlpiQ0FJZ0dLb3Y2eG9BeDJNRWY2LzZxTnM4T3V0emhQ
MkMiICsKKyAgICAgICAgIlFvSjFMN0ZlNjRHOXVCYz0iOworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHBheWxvYWRCYXNlNjQ6IFt0ZXN0
QXNzZXJ0aW9uTWVzc2FnZUxvbmdCYXNlNjQsIHRlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9
IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9j
dXMoKTsgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYnl0ZXNUb0hleFN0cmluZyhieXRlcykK
KyAgICB7CisgICAgICAgIGlmICghYnl0ZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKwor
ICAgICAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTsKKyAgICAgICAgdmFyIGhleEJ5
dGVzID0gW107CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgdmFyIGJ5dGVTdHJpbmcgPSBieXRlc1tpXS50b1N0cmluZygxNik7
CisgICAgICAgICAgICBpZiAoYnl0ZVN0cmluZy5sZW5ndGggPCAyKQorICAgICAgICAgICAgICAg
IGJ5dGVTdHJpbmcgPSAiMCIgKyBieXRlU3RyaW5nOworICAgICAgICAgICAgaGV4Qnl0ZXMucHVz
aChieXRlU3RyaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBoZXhCeXRlcy5qb2lu
KCIiKTsKKyAgICB9CisKKyAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAg
ICAgdGltZW91dDogMTAwMAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgdXNlckhh
bmRsZSA9IGJ5dGVzVG9IZXhTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS51c2VySGFuZGxlKTsK
KyAgICAgICAgLy8gY29uc29sZS5sb2coIlN1Y2NlZWRlZCEiKTsKKyAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEi
KTsKKyAgICB9LCBlcnJvciA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3Nh
Z2UpOworICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5w
b3N0TWVzc2FnZShlcnJvci5tZXNzYWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRp
b24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sCmlu
ZGV4IDViNmFlYmViZjEyNGIxMDM5ZWQwNzk0ZWQyMmQzZGI2OGVhMzRhZmMuLmU5ODFhNzBmOTk3
MTkxNTVkMGZiM2U3OThlNTYxNTJhZjNiODY4NzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1oaWQuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dl
Yi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwKQEAgLTM5LDcgKzM5LDcg
QEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5
KDE2KSwKICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5
IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICAgICAgdGlt
ZW91dDogMTAwLAogICAgICAgICB9CiAgICAgfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>