<?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>236820</bug_id>
          
          <creation_ts>2022-02-17 18:26:04 -0800</creation_ts>
          <short_desc>[WebAuthn] Support for conditional mediation</short_desc>
          <delta_ts>2022-02-18 16:31:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="pascoe@apple.com">pascoe</reporter>
          <assigned_to name="pascoe@apple.com">pascoe</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1843223</commentid>
    <comment_count>0</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-17 18:26:04 -0800</bug_when>
    <thetext>Conditional mediation was recently merged into the Credentials Management specification (https://w3c.github.io/webappsec-credential-management/#dom-credentialmediationrequirement-conditional). This bug is to add support for this mediation requirement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843225</commentid>
    <comment_count>1</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-17 18:26:32 -0800</bug_when>
    <thetext>rdar://84821947</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843229</commentid>
    <comment_count>2</comment_count>
      <attachid>452463</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-17 18:33:12 -0800</bug_when>
    <thetext>Created attachment 452463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843240</commentid>
    <comment_count>3</comment_count>
      <attachid>452466</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-17 19:10:02 -0800</bug_when>
    <thetext>Created attachment 452466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843279</commentid>
    <comment_count>4</comment_count>
      <attachid>452479</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-17 21:56:21 -0800</bug_when>
    <thetext>Created attachment 452479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843437</commentid>
    <comment_count>5</comment_count>
      <attachid>452479</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-18 08:56:55 -0800</bug_when>
    <thetext>Comment on attachment 452479
Patch

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

&gt; Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp:57
&gt; +    document.page()-&gt;authenticatorCoordinator().isConditionalMediationAvailable(WTFMove(promise));

Why should probably null check there page, there is a reason Document::page() returns a raw pointer.

&gt; Source/WebCore/Modules/credentialmanagement/CredentialRequestOptions.h:38
&gt; +enum class MediationRequirement { Silent, Optional, Required, Conditional };

enum class MediationRequirement : uint8_t { ... }

&gt; Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.cpp:282
&gt; +    // Async operation are dispatched and handled in the messenger.

operations

&gt; Source/WebCore/Modules/webauthn/AuthenticatorCoordinatorClient.h:59
&gt; +    virtual void isConditionalMediationAvailable(QueryCompletionHandler&amp;&amp;) { };

Given that this takes a CompletionHandler as parameter, I think this virtual function should either be:
1. Pure virtual (= 0).
or
2. The default implementation should call the completion handler.

Otherwise, not overriding this (seemingly optional) virtual function will results in crashes in debug builds because completion handlers aren&apos;t called.

This comment seems to apply to other virtual functions in this file too.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:263
&gt; +    if (mediation &amp;&amp; *mediation == MediationRequirement::Conditional &amp;&amp; [requestContext respondsToSelector:@selector(setRequestStyle:)])

I believe you can you replace `mediation &amp;&amp; *mediation == MediationRequirement::Conditional` with `mediation == MediationRequirement::Conditional`. std::optional&apos;s operator==() deals with this for you.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:315
&gt; +        callOnMainRunLoop([handler = WTFMove(handler), credential = retainPtr(credential), error = retainPtr(error)] () mutable {

May want to call ensureOnMainRunLoop() if there is any chance this gets called on the main thread.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:316
&gt; +            AuthenticatorResponseData response = { };

= { }; should not be necessary?

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:318
&gt; +            ExceptionData exceptionData = { };

ditto.

&gt; Source/WebKit/UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in:30
&gt; +    GetAssertion(WebCore::FrameIdentifier frameID, struct WebKit::FrameInfoData frameInfo, Vector&lt;uint8_t&gt; hash, struct WebCore::PublicKeyCredentialRequestOptions options, enum:int WebCore::CredentialRequestOptions::MediationRequirement mediation, bool processingUserGesture) -&gt; (struct WebCore::AuthenticatorResponseData data, enum:int WebCore::AuthenticatorAttachment attachment, struct WebCore::ExceptionData exception) Async

`enum:uint8_t WebCore::CredentialRequestOptions::MediationRequirement`

&gt; Source/WebKit/WebAuthnProcess/WebAuthnConnectionToWebProcess.cpp:104
&gt; +    handleRequest({ WTFMove(hash), WTFMove(options), nullptr, WebAuthenticationPanelResult::Unavailable, nullptr, std::nullopt, { }, processingUserGesture, String(), nullptr, std::nullopt }, WTFMove(handler));

This doesn&apos;t use mediation ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843530</commentid>
    <comment_count>6</comment_count>
      <attachid>452551</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-18 11:34:51 -0800</bug_when>
    <thetext>Created attachment 452551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843531</commentid>
    <comment_count>7</comment_count>
      <attachid>452551</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-02-18 11:39:58 -0800</bug_when>
    <thetext>Comment on attachment 452551
Patch

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

r=me

&gt; Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp:60
&gt; +    page-&gt;authenticatorCoordinator().isConditionalMediationAvailable(WTFMove(promise));

I think this might be simpler using the old:
if (auto* page = document.page())
    page-&gt;authenticator...&lt;&lt;ETC&gt;&gt;

Since nothing else happens in this method if page is nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843534</commentid>
    <comment_count>8</comment_count>
      <attachid>452551</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-18 11:42:57 -0800</bug_when>
    <thetext>Comment on attachment 452551
Patch

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

&gt; Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp:59
&gt; +        return;

Well, I would think we should reject the promise here..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843539</commentid>
    <comment_count>9</comment_count>
      <attachid>452555</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-18 11:56:45 -0800</bug_when>
    <thetext>Created attachment 452555
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843542</commentid>
    <comment_count>10</comment_count>
      <attachid>452555</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-18 12:00:48 -0800</bug_when>
    <thetext>Comment on attachment 452555
Patch for landing

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

&gt; Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp:60
&gt; +        promise.reject(Exception { NotSupportedError });

No big deal but I think InvalidStateError applies better for such cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843547</commentid>
    <comment_count>11</comment_count>
      <attachid>452557</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-18 12:07:56 -0800</bug_when>
    <thetext>Created attachment 452557
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843565</commentid>
    <comment_count>12</comment_count>
      <attachid>452561</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-18 12:33:53 -0800</bug_when>
    <thetext>Created attachment 452561
[fast-cq]Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843709</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-18 16:29:30 -0800</bug_when>
    <thetext>Committed r290184 (247512@main): &lt;https://commits.webkit.org/247512@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452561.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843710</commentid>
    <comment_count>14</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2022-02-18 16:31:01 -0800</bug_when>
    <thetext>Please ignore the red color of commit-queue bubble, it was landed successfully, the color is incorrect (Bug 234644).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452463</attachid>
            <date>2022-02-17 18:33:12 -0800</date>
            <delta_ts>2022-02-17 19:53:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236820-20220217183312.patch</filename>
            <type>text/plain</type>
            <size>44492</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU1MzU4ZDE1MDliNzEw
ZDAyYzQ4MjZiNzkyN2Y3OTM2ZjYyYThiNS4uMDhmOTdiM2Y1YjhkNzAxMzBmOWJlODIzMzJiMGI1
YzE2MDFhNjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE3ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
Zm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODIwCisgICAgICAgIHJkYXI6Ly84NDgyMTk0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBtZWRpYXRpb24sIGFzIGRlZmluZWQgaW4gdGhlCisg
ICAgICAgIGNyZWRlbnRpYWxzIG1hbmFnZW1lbnQgc3BlYzogaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3dlYmFwcHNlYy1jcmVkZW50aWFsLW1hbmFnZW1lbnQvI2RvbS1jcmVkZW50aWFsbWVkaWF0aW9u
cmVxdWlyZW1lbnQtY29uZGl0aW9uYWwKKworICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1h
bmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljQ3Jl
ZGVudGlhbDo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSk6CisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucy5pZGw6CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9D
cmVkZW50aWFsc0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0Nv
bnRhaW5lcjo6Z2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJs
ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAyMi0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIENsZWFuIHVwIC8gb3B0aW1pemUgY2FsbCBzaXRlcyBjb25zdHJ1Y3RpbmcgdmVjdG9ycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBjYzQ1YzhjNDg4YWZlYzc4NzcxOTY5ODgyZjE5YzczNWEwOGM2ODlmLi5hYWY5
ODU4NGNjOWI5MWFjMWFlMjU4Mjg0NjRlOGQxZWRjZDkwYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMxIEBACisyMDIyLTAyLTE3ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgZm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODIwCisgICAgICAg
IHJkYXI6Ly84NDgyMTk0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBtZWRpYXRp
b24sIGFzIGRlZmluZWQgaW4gdGhlCisgICAgICAgIGNyZWRlbnRpYWxzIG1hbmFnZW1lbnQgc3Bl
YzogaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jcmVkZW50aWFsLW1hbmFnZW1lbnQv
I2RvbS1jcmVkZW50aWFsbWVkaWF0aW9ucmVxdWlyZW1lbnQtY29uZGl0aW9uYWwKKworICAgICAg
ICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29uZmlndXJhdGlvbkFz
c2VydGlvblJlcXVlc3RDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6OmNvbnRleHRGb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzQ29uZGl0aW9u
YWxNZWRpYXRpb25BdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VD
cmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaDoKKwogMjAyMi0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIC8gb3B0aW1pemUgY2FsbCBzaXRlcyBjb25zdHJ1
Y3RpbmcgdmVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwCmluZGV4IGEyM2RmMTA3
ZjE2NWRmYjcxMTRjZTI5OGI1NDg4MGE3Yjc5Y2U2MmYuLmU0ZDYwYjBmMjdhZGVmYzU3NWY4YTkw
NzAzZmRkODViMDc3YjI0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5jcHAKQEAgLTI2
LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCYXNpY0NyZWRlbnRp
YWwuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIgorCiAjaWYgRU5B
QkxFKFdFQl9BVVRITikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNiArNTIsMTEgQEAg
U3RyaW5nIEJhc2ljQ3JlZGVudGlhbDo6dHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiB9CiAKK3ZvaWQgQmFzaWNDcmVkZW50aWFsOjppc0NvbmRpdGlvbmFsTWVkaWF0aW9u
QXZhaWxhYmxlKERvY3VtZW50JiBkb2N1bWVudCwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xl
YW4+JiYgcHJvbWlzZSkKK3sKKyAgICBkb2N1bWVudC5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcigpLmlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoV1RGTW92ZShwcm9taXNl
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaAppbmRleCAzYjhmMTQyMjJlYzRhYzVmNjcy
MTA3OTBhNWY5ZmE1NWQzZWNhYTE5Li41ZDdlNDQxMjM2NGU3ZTc0OGNkNjY1YjI5MDJlODI0MTU4
MGZiMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVi
bGljOgogICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAgICAgRGlzY292ZXJ5IGRpc2NvdmVyeSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzY292ZXJ5OyB9CiAKKyAgICBzdGF0aWMgdm9pZCBpc0NvbmRp
dGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKERvY3VtZW50JiwgRE9NUHJvbWlzZURlZmVycmVkPElE
TEJvb2xlYW4+JiYpOworCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkOwogICAgIFR5cGUgbV90
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdl
bWVudC9CYXNpY0NyZWRlbnRpYWwuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaWRsCmluZGV4IDQ5OTMxN2U3OGNlNzc0MTk4
NGM3NTYyYzAxZjVlZmQ5NGRkNTQzMGQuLjliMWYwMTljMDdhZDI0NDJlZWU3NDBmOWI4NzAyYTNh
ZWI5NjYwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1h
bmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGwKQEAgLTMzLDQgKzMzLDYg
QEAKIF0gaW50ZXJmYWNlIEJhc2ljQ3JlZGVudGlhbCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFVTVlN0cmluZyBpZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7Cisg
ICAgCisgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVudF0gc3RhdGljIFByb21pc2U8Ym9vbGVh
bj4gaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSgpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCmluZGV4IDgxYzk0ZWFhZmE3NTlkZDhkMjY5NTUz
YWUzMThiNjhmNDFmZGQ1ODMuLjliZjMxODg4ODFmYTQzNTg4NWRjZGVmNTAyMTA5ODMzOWE2ZmYz
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1l
bnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaApAQCAtMzUs
OCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBYm9ydFNpZ25hbDsKIAor
ZW51bSBjbGFzcyBNZWRpYXRpb25SZXF1aXJlbWVudCB7IFNpbGVudCwgT3B0aW9uYWwsIFJlcXVp
cmVkLCBDb25kaXRpb25hbCB9OworCiBzdHJ1Y3QgQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIHsK
LSAgICBlbnVtIGNsYXNzIE1lZGlhdGlvblJlcXVpcmVtZW50IHsgU2lsZW50LCBPcHRpb25hbCwg
UmVxdWlyZWQgfTsKKyAgICB1c2luZyBNZWRpYXRpb25SZXF1aXJlbWVudCA9IE1lZGlhdGlvblJl
cXVpcmVtZW50OwogCiAgICAgTWVkaWF0aW9uUmVxdWlyZW1lbnQgbWVkaWF0aW9uOwogICAgIFJl
ZlB0cjxBYm9ydFNpZ25hbD4gc2lnbmFsOwpAQCAtNDUsNCArNDcsMTkgQEAgc3RydWN0IENyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucyB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudD4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9uczo6TWVkaWF0aW9uUmVxdWlyZW1lbnQsCisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9uczo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ6OlNpbGVudCwKKyAgICAgICAgV2Vi
Q29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudDo6T3B0
aW9uYWwsCisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6TWVkaWF0
aW9uUmVxdWlyZW1lbnQ6OlJlcXVpcmVkLAorICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50OjpDb25kaXRpb25hbAorICAgID47Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbAppbmRleCA5M2Ew
Y2YxNDcyOGFhMjg2OWU1ODA5ZjUzZWZmMTk4MmIzYTg3ZWE5Li43ZGI1OWQ5YWIyMTJiMTE3MWFj
ODFiNmJjNDQ0MWFkMmI4YTgxYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMuaWRsCkBAIC0yOSw3ICsyOSw4IEBACiBdIGVudW0gQ3JlZGVudGlhbE1lZGlh
dGlvblJlcXVpcmVtZW50IHsKICAgICAic2lsZW50IiwKICAgICAib3B0aW9uYWwiLAotICAgICJy
ZXF1aXJlZCIKKyAgICAicmVxdWlyZWQiLAorICAgICJjb25kaXRpb25hbCIKIH07CiAKIFsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3Jl
ZGVudGlhbHNDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFs
bWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKaW5kZXggYzFhYzcwYmY2NzJjOTBh
MDVjODdhYTQxOTMwNWVkNTVkMzZhN2MyOS4uOTYwNjA4Y2ExMzVmOGFjNjk1NmZhOWNmMjNmMjNh
ODk1NGU0OGFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFs
bWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKQEAg
LTk4LDcgKzk4LDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KENyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIENyZWRlbnRpYWxQcm8KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9y
KCkuZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoKm1fZG9jdW1lbnQsIG9wdGlvbnMucHVibGlj
S2V5LnZhbHVlKCksIHNjb3BlKCksIFdURk1vdmUob3B0aW9ucy5zaWduYWwpLCBXVEZNb3ZlKHBy
b21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cigpLmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKCptX2RvY3VtZW50LCBXVEZNb3ZlKG9wdGlv
bnMpLCBzY29wZSgpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogdm9pZCBDcmVkZW50aWFsc0Nv
bnRhaW5lcjo6c3RvcmUoY29uc3QgQmFzaWNDcmVkZW50aWFsJiwgQ3JlZGVudGlhbFByb21pc2Um
JiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IDVkNDc3N2I4YzAzYTA5MmY3
MTkxZGU0NDQ1NDhlYTdmOWM2ZjNjNzYuLjk3MzRmOWNhZTQ3YTNkYTdmNzZhNjFjZTRjMTY1ODU5
YzZjZWRhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZlYXR1cmVQb2xpY3kuaCIKICNpbmNsdWRl
ICJKU0Jhc2ljQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIkpTQ3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQdWJs
aWNLZXlDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucy5oIgpAQCAtMTc2LDEyICsxNzcsMTMgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3I6OmNyZWF0ZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUMK
ICAgICBtX2NsaWVudC0+bWFrZUNyZWRlbnRpYWwoKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVu
dERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmIG9wdGlvbnMsIFdlYkF1dGhuOjpTY29wZSBzY29wZSwgUmVmUHRyPEFib3J0U2lnbmFsPiYm
IGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0Cit2b2lkIEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiByZXF1ZXN0T3B0
aW9ucywgV2ViQXV0aG46OlNjb3BlIHNjb3BlLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2Up
IGNvbnN0CiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcklu
dGVybmFsOwogCiAgICAgYXV0byYgY2FsbGVyT3JpZ2luID0gZG9jdW1lbnQuc2VjdXJpdHlPcmln
aW4oKTsKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisgICAgY29uc3QgYXV0
byYgb3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpOwogICAgIEFTU0VS
VChmcmFtZSk7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcu
CiAgICAgLy8gU3RlcCAxLCAzLCAxMyBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgpAQCAtMjMw
LDcgKzIzMiw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21F
eHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGll
bnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdU
Rk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmIGRhdGEsIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRp
b24pIG11dGFibGUgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZN
b3ZlKGNsaWVudERhdGFKc29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2ln
bmFsID0gV1RGTW92ZShyZXF1ZXN0T3B0aW9ucy5zaWduYWwpXSAoQXV0aGVudGljYXRvclJlc3Bv
bnNlRGF0YSYmIGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIEV4Y2Vw
dGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoYWJvcnRTaWduYWwg
JiYgYWJvcnRTaWduYWwtPmFib3J0ZWQoKSkgewogICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwuIl9zIH0pOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ1LDcgKzI0Nyw3IEBAIHZvaWQgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYg
ZG9jdW1lCiAgICAgICAgIHByb21pc2UucmVqZWN0KGV4Y2VwdGlvbi50b0V4Y2VwdGlvbigpKTsK
ICAgICB9OwogICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQgYW5kIGhhbmRs
ZWQgaW4gdGhlIG1lc3Nlbmdlci4KLSAgICBtX2NsaWVudC0+Z2V0QXNzZXJ0aW9uKCpmcmFtZSwg
Y2FsbGVyT3JpZ2luLCBjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY2FsbGJh
Y2spKTsKKyAgICBtX2NsaWVudC0+Z2V0QXNzZXJ0aW9uKCpmcmFtZSwgY2FsbGVyT3JpZ2luLCBj
bGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIHJlcXVlc3RPcHRpb25zLm1lZGlhdGlvbiwgV1RG
TW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZl
cnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpIGNvbnN0CkBAIC0yNjYsNiArMjY4LDIxIEBAIHZv
aWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUoRE9NCiAgICAgbV9jbGllbnQtPmlzVXNlclZlcmlmeWluZ1BsYXRm
b3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKKwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzQ29uZGl0aW9uYWxNZWRpYXRp
b25BdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlzZSkgY29u
c3QKK3sKKyAgICBpZiAoIW1fY2xpZW50KSAgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24geyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
IHByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH07CisgICAgLy8gQXN5bmMgb3BlcmF0aW9u
IGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAgbV9jbGll
bnQtPmlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCiB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6cmVzZXRVc2VyR2Vz
dHVyZVJlcXVpcmVtZW50KCkKIHsKICAgICBtX2NsaWVudC0+cmVzZXRVc2VyR2VzdHVyZVJlcXVp
cmVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaAppbmRleCBmNDk1MDMwODZjOWFjYzc5MTkzMzg3
Zjc2ZmI2YTViZWEyMDc4MGFiLi40ZDlhYmE2OGU4ODgzMDUwODliZmUxOTMwYzM1MDhjYWRmNTNm
ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRG9jdW1l
bnQ7CiAKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOwogc3RydWN0
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKK3N0cnVjdCBDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnM7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21p
c2VEZWZlcnJlZDsKIApAQCAtNTgsOCArNTksOSBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGUgZm9s
bG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IHN0YXRpYyBtZXRob2RzIG9mIFB1YmxpY0tleUNyZWRl
bnRpYWwuCiAgICAgdm9pZCBjcmVhdGUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgV2ViQXV0aG46OlNjb3BlLCBSZWZQdHI8QWJvcnRT
aWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OwotICAgIHZvaWQgZGlzY292ZXJG
cm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJBdXRobjo6U2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25hbD4m
JiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7CisgICAgdm9pZCBkaXNjb3ZlckZyb21FeHRl
cm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYsIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmLCBX
ZWJBdXRobjo6U2NvcGUsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OwogICAgIHZvaWQgaXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZl
cnJlZDxJRExCb29sZWFuPiYmKSBjb25zdDsKKyAgICB2b2lkIGlzQ29uZGl0aW9uYWxNZWRpYXRp
b25BdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpIGNvbnN0OwogCiAg
ICAgdm9pZCByZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yQ2xpZW50LmgKaW5kZXggNjQ2MWFlOTY0ZmFiZDgyMmRmYjEwMDg3MDU2ODFjNmU0NTU3
YjQ5Yy4uNjhkNTJiMjliNDMxZTk4MWQ2MDc4NTY3NmNjMWYyMTAxZDFmMzg3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIEZyYW1lOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGVudW0gY2xhc3MgQXV0aGVudGljYXRvckF0dGFjaG1l
bnQ7CitlbnVtIGNsYXNzIE1lZGlhdGlvblJlcXVpcmVtZW50OwogCiBzdHJ1Y3QgQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YTsKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zOwpAQCAtNTQsNyArNTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIG1ha2VD
cmVkZW50aWFsKGNvbnN0IEZyYW1lJiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwg
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXNz
ZXJ0aW9uKGNvbnN0IEZyYW1lJiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRp
b24oY29uc3QgRnJhbWUmLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIE1lZGlhdGlv
blJlcXVpcmVtZW50LCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgeyB9OworICAgIHZpcnR1
YWwgdm9pZCBpc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhh
bmRsZXImJikgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSB7IH07CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRVc2VyR2VzdHVyZVJlcXVpcmVtZW50KCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzhi
MGIwY2ZmMzQ0Yzc3NGUzY2Y1NGM2Zjc4MWMwNzU4OWVmMDQ5Ny4uOGVlN2ZhOGQ4NmNjNWI5MWEx
ZjEzZjE5YWMyN2FlNzIxYTBhYmYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM3NCw3ICsyMzc0LDcgQEAKIAkJNzdBMTdB
QTcxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3QUEzMTJGMjhCMkEwMDRF
MDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggKi87IH07CiAJCTc3RDUxMDA0MUVENEY3
MUUwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdENTBGRkYxRUQ0RjcwQzAwREE0Qzg3
IC8qIEpTQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggKi87IH07CiAJCTc3RDUxMDA2MUVENEY3
MjUwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RDUwRkZEMUVENEY3MEMwMERBNEM4
NyAvKiBKU0NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCAqLzsgfTsKLQkJNzdENTEwMEIxRUQ1
RTI4ODAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdENTBGRkIxRUQ0RjE2QzAwREE0Qzg3
IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovOyB9OworCQk3N0Q1MTAwQjFFRDVFMjg4
MDBEQTRDODcgLyogQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0Q1MEZGQjFFRDRGMTZDMDBEQTRDODcgLyog
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzdENTEwMEQxRUQ1RTI5NTAwREE0Qzg3IC8qIENyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc3QUFENjg1MUVDRkJEMzkwMEJGQTJEMSAvKiBDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zLmggKi87IH07CiAJCTc3RDUxMDE3MUVENjAyMjIwMERBNEM4NyAvKiBDcmVkZW50aWFs
c0NvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzdENTEwMTYxRUQ2MDIxQjAwREE0Qzg3IC8qIENyZWRlbnRpYWxzQ29udGFpbmVyLmggKi87
IH07CiAJCTc3RDUxMDFDMUVENzIyQkYwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxzQ29udGFpbmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0Q1MTAx
QjFFRDcyMkI1MDBEQTRDODcgLyogSlNDcmVkZW50aWFsc0NvbnRhaW5lci5oICovOyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25T
ZXJ2aWNlc0NvcmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhl
bnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKaW5kZXggZDIyYWIyY2I3ZGE1MzVjYjVhNDI1MDAx
YjgzMzdmNWFmNTg0MjZkZi4uMzdhZDMxYmI2ZjQxNTM2MzZjMDQ2OTAwNDZlN2EyNWRkYjI4MzQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGlj
YXRpb25TZXJ2aWNlc0NvcmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9D
b2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCkBAIC0yMjksNiArMjI5LDExIEBA
IHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVz
KSB7CiAKIEBlbmQKIAordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVNDcmVkZW50aWFsUmVx
dWVzdFN0eWxlKSB7CisgICAgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlTW9kYWwsCisgICAgQVND
cmVkZW50aWFsUmVxdWVzdFN0eWxlQXV0b0ZpbGwsCit9OworCiBAaW50ZXJmYWNlIEFTQ0NyZWRl
bnRpYWxSZXF1ZXN0Q29udGV4dCA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4KIAogLSAoaW5z
dGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CkBAIC0yNDUsNiArMjUwLDggQEAgdHlwZWRl
ZiBOU19PUFRJT05TKE5TVUludGVnZXIsIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZXMpIHsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgQVNDUHVibGljS2V5Q3JlZGVudGlh
bEFzc2VydGlvbk9wdGlvbnMgKnBsYXRmb3JtS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnM7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIEFTQ1B1YmxpY0tleUNyZWRl
bnRpYWxBc3NlcnRpb25PcHRpb25zICpzZWN1cml0eUtleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRp
b25zOwogCitAcHJvcGVydHkgKG5vbmF0b21pYykgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlIHJl
cXVlc3RTdHlsZTsKKwogQGVuZAogCiBAcHJvdG9jb2wgQVNDQ3JlZGVudGlhbFByb3RvY29sIDxO
U09iamVjdCwgTlNTZWN1cmVDb2Rpbmc+CkBAIC0zMjAsNiArMzI3LDggQEAgdHlwZWRlZiBOU19P
UFRJT05TKE5TVUludGVnZXIsIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZXMpIHsKIC0gKHZvaWQp
dXNlclNlbGVjdGVkTG9naW5DaG9pY2U6KGlkIDxBU0NMb2dpbkNob2ljZVByb3RvY29sPilsb2dp
bkNob2ljZSBhdXRoZW50aWNhdGVkQ29udGV4dDooTEFDb250ZXh0ICopY29udGV4dCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gX051bGxhYmxl
LCBOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKIAogLSAodm9pZClyZXF1
ZXN0Q29tcGxldGVkV2l0aENyZWRlbnRpYWw6KG51bGxhYmxlIGlkPEFTQ0NyZWRlbnRpYWxQcm90
b2NvbD4pY3JlZGVudGlhbCBlcnJvcjoobnVsbGFibGUgTlNFcnJvciAqKWVycm9yOworCistICh2
b2lkKXBlcmZvcm1BdXRvRmlsbEF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNvbnRleHQ6KEFTQ0Ny
ZWRlbnRpYWxSZXF1ZXN0Q29udGV4dCAqKWNvbnRleHQgd2l0aENvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBfTnVsbGFibGUgY3JlZGVudGlhbCwg
TlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CiAjZW5kaWYKIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5tbQppbmRleCAxOWFiN2ExOGQyMmZmZTNjZWI2MmI5NjBkOWExZTBiMDU5
MmJmYzUzLi42NzgzNTljMjMxZDNiODc0NmMzNDMxZTgzODM1YzczNDFhMWE4MDM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eS5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlh
bFJlcXVlc3RDb250ZXh0PiBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4CiAgICAg
cmV0dXJuIHJlcXVlc3RDb250ZXh0OwogfQogCi1zdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRp
YWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgVmVjdG9yPHVp
bnQ4X3Q+IGhhc2gpCitzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4
dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KGNvbnN0IFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ+IG1lZGlhdGlvbikKIHsK
ICAgICBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVzIHJlcXVlc3RUeXBlcyA9IEFTQ0NyZWRlbnRp
YWxSZXF1ZXN0VHlwZVBsYXRmb3JtUHVibGljS2V5QXNzZXJ0aW9uIHwgQVNDQ3JlZGVudGlhbFJl
cXVlc3RUeXBlU2VjdXJpdHlLZXlQdWJsaWNLZXlBc3NlcnRpb247CiAKQEAgLTI2MCw2ICsyNjAs
OCBAQCBzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmln
dXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZQogCiAgICAgYXV0byByZXF1ZXN0Q29udGV4dCA9
IGFkb3B0TlMoW2FsbG9jQVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0SW5zdGFuY2UoKSBpbml0
V2l0aFJlcXVlc3RUeXBlczpyZXF1ZXN0VHlwZXNdKTsKICAgICBbcmVxdWVzdENvbnRleHQgc2V0
UmVseWluZ1BhcnR5SWRlbnRpZmllcjpvcHRpb25zLnJwSWRdOworICAgIGlmIChtZWRpYXRpb24g
JiYgKm1lZGlhdGlvbiA9PSBNZWRpYXRpb25SZXF1aXJlbWVudDo6Q29uZGl0aW9uYWwgJiYgW3Jl
cXVlc3RDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UmVxdWVzdFN0eWxl
OildKQorICAgICAgICByZXF1ZXN0Q29udGV4dC5nZXQoKS5yZXF1ZXN0U3R5bGUgPSBBU0NyZWRl
bnRpYWxSZXF1ZXN0U3R5bGVBdXRvRmlsbDsKIAogICAgIGlmIChyZXF1ZXN0VHlwZXMgJiBBU0ND
cmVkZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbikgewogICAgICAg
ICBhdXRvIGFzc2VydGlvbk9wdGlvbnMgPSBhZG9wdE5TKGFsbG9jQVNDUHVibGljS2V5Q3JlZGVu
dGlhbEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpKTsKQEAgLTMwMCw3ICszMDIsNyBAQCBSZXRh
aW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6Y29udGV4dAogICAgIFdURjo6c3dpdGNoT24ocmVxdWVzdERhdGEub3B0aW9u
cywgWyZdKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMp
IHsKICAgICAgICAgcmVzdWx0ID0gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleHQo
b3B0aW9ucywgcmVxdWVzdERhdGEuaGFzaCk7CiAgICAgfSwgWyZdKGNvbnN0IFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykgewotICAgICAgICByZXN1bHQgPSBjb25m
aWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQob3B0aW9ucywgcmVxdWVzdERhdGEuaGFz
aCk7CisgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4
dChvcHRpb25zLCByZXF1ZXN0RGF0YS5oYXNoLCByZXF1ZXN0RGF0YS5tZWRpYXRpb24pOwogICAg
IH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zMDksODUgKzMxMSwxMDAgQEAgdm9pZCBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cGVyZm9ybVJlcXVlc3QoUmV0YWluUHRy
PEFTQ0NyZWRlbnRpYWxSZXEKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHROUyhbYWxsb2NBU0NB
Z2VudFByb3h5SW5zdGFuY2UoKSBpbml0XSk7CiAKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oaWQgPEFTQ0NyZWRl
bnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAg
ICAgICBjYWxsT25NYWluUnVuTG9vcChbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGNyZWRl
bnRpYWwgPSByZXRhaW5QdHIoY3JlZGVudGlhbCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIHJlc3Bv
bnNlID0geyB9OworICAgICAgICAgICAgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVu
dDsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uRGF0YSA9IHsgfTsKKworICAg
ICAgICAgICAgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDUGxhdGZvcm1QdWJs
aWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKKyAgICAgICAgICAgICAgICBh
dHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtOworICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSB0cnVl
OworCisgICAgICAgICAgICAgICAgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0
cmF0aW9uICpyZWdpc3RyYXRpb25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQoKTsKKyAgICAg
ICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3Jl
ZGVudGlhbC5jcmVkZW50aWFsSUQpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF0dGVzdGF0
aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmF0dGVzdGF0
aW9uT2JqZWN0KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZD
bGFzczpnZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb25DbGFz
cygpXSkgeworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudDo6Q3Jvc3NQbGF0Zm9ybTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIEFTQ1Nl
Y3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0cmF0aW9uQ3Jl
ZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UucmF3
SWQgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuY3JlZGVudGlhbElEKTsK
KyAgICAgICAgICAgICAgICByZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCA9IHRvQXJyYXlCdWZm
ZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDUGxhdGZvcm1QdWJs
aWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uQ2xhc3MoKV0pIHsKKyAgICAgICAgICAgICAgICBhdHRh
Y2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtOworICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSBmYWxzZTsK
KworICAgICAgICAgICAgICAgIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlv
biAqYXNzZXJ0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CisgICAgICAgICAgICAg
ICAgcmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRpYWwuY3Jl
ZGVudGlhbElEKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSA9
IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5hdXRoZW50aWNhdG9yRGF0YSk7Cisg
ICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2lnbmF0dXJlID0gdG9BcnJheUJ1ZmZlcihhc3NlcnRp
b25DcmVkZW50aWFsLnNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UudXNlckhh
bmRsZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC51c2VySGFuZGxlKTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1
cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25DbGFzcygpXSkgeworICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9y
bTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBBU0NTZWN1cml0eUtleVB1YmxpY0tl
eUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdl
dCgpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihhc3Nl
cnRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJRCk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uu
YXV0aGVudGljYXRvckRhdGEgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRpYWwuYXV0
aGVudGljYXRvckRhdGEpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNpZ25hdHVyZSA9IHRv
QXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1cmUpOworICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLnVzZXJIYW5kbGUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRp
YWwudXNlckhhbmRsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGF0
dGFjaG1lbnQgPSAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpIDA7CisgICAgICAgICAgICAgICAg
RXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOworICAgICAgICAgICAgICAgIE5TU3RyaW5nICpl
cnJvck1lc3NhZ2UgPSBuaWw7CisgICAgICAgICAgICAgICAgaWYgKFtlcnJvci5nZXQoKS5kb21h
aW4gaXNFcXVhbFRvU3RyaW5nOldLRXJyb3JEb21haW5dKSB7CisgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkNvZGUgPSB0b0V4Y2VwdGlvbkNvZGUoZXJyb3IuZ2V0KCkuY29kZSk7CisgICAg
ICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVycm9yLmdldCgpLnVzZXJJbmZvW05TTG9j
YWxpemVkRGVzY3JpcHRpb25LZXldOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkNvZGUgPSBOb3RBbGxvd2VkRXJyb3I7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKFtlcnJvci5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOkFTQ0F1
dGhvcml6YXRpb25FcnJvckRvbWFpbl0gJiYgZXJyb3IuZ2V0KCkuY29kZSA9PSBBU0NBdXRob3Jp
emF0aW9uRXJyb3JVc2VyQ2FuY2VsZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1l
c3NhZ2UgPSBAIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuIjsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JN
ZXNzYWdlID0gQCJPcGVyYXRpb24gZmFpbGVkLiI7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgZXhjZXB0aW9uRGF0YSA9IHsgZXhjZXB0aW9uQ29kZSwgZXJyb3JNZXNzYWdl
IH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGhhbmRsZXIocmVzcG9uc2UsIGF0dGFj
aG1lbnQsIGV4Y2VwdGlvbkRhdGEpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICAKKyAgICBp
ZiAoW3JlcXVlc3RDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVxdWVzdFN0
eWxlKV0gJiYgcmVxdWVzdENvbnRleHQuZ2V0KCkucmVxdWVzdFN0eWxlID09IEFTQ3JlZGVudGlh
bFJlcXVlc3RTdHlsZUF1dG9GaWxsKSB7CisgICAgICAgIFtwcm94eSBwZXJmb3JtQXV0b0ZpbGxB
dXRob3JpemF0aW9uUmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhD
b21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3Byb3h5ID0gV1RGTW92ZShwcm94eSksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGlkIDxBU0NDcmVk
ZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9yKTsKKyAgICAgICAg
fSkuZ2V0KCldOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogI2lmIFBMQVRGT1JNKElP
UykKLSAgICBbcHJveHkgcGVyZm9ybUF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNvbnRleHQ6cmVx
dWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbaGFu
ZGxlciA9IFdURk1vdmUoaGFuZGxlciksIHByb3h5ID0gV1RGTW92ZShwcm94eSldKGlkIDxBU0ND
cmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsK
LSAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW2hhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBw
cm94eSA9IFdURk1vdmUocHJveHkpLCBjcmVkZW50aWFsID0gcmV0YWluUHRyKGNyZWRlbnRpYWwp
LCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUgeworICAgIFtwcm94eSBwZXJm
b3JtQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29udGV4dC5nZXQoKSB3
aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtwcm94eSA9IFdURk1vdmUocHJveHkp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShpZCA8QVND
Q3JlZGVudGlhbFByb3RvY29sPiBjcmVkZW50aWFsLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9yKTsKKyAgICB9KS5n
ZXQoKV07CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5k
b3cgPSBtX3dlYlBhZ2VQcm94eS5wbGF0Zm9ybVdpbmRvdygpOwotICAgIFtwcm94eSBwZXJmb3Jt
QXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29udGV4dC5nZXQoKSB3aXRo
Q2xlYXJhbmNlSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCB3aW5kb3cgPSBXVEZNb3ZlKHdpbmRvdyks
IHByb3h5ID0gV1RGTW92ZShwcm94eSldKE5TWFBDTGlzdGVuZXJFbmRwb2ludCAqZGFlbW9uRW5k
cG9pbnQsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblJ1bkxv
b3AoW3dlYWtUaGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgd2luZG93ID0gV1RGTW92
ZSh3aW5kb3cpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBkYWVtb25FbmRwb2ludCA9IHJldGFp
blB0cihkYWVtb25FbmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0gKCkgbXV0YWJs
ZSB7CisgICAgW3Byb3h5IHBlcmZvcm1BdXRob3JpemF0aW9uUmVxdWVzdHNGb3JDb250ZXh0OnJl
cXVlc3RDb250ZXh0LmdldCgpIHdpdGhDbGVhcmFuY2VIYW5kbGVyOm1ha2VCbG9ja1B0cihbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgd2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBwcm94eSA9IFdURk1v
dmUocHJveHkpXShOU1hQQ0xpc3RlbmVyRW5kcG9pbnQgKmRhZW1vbkVuZHBvaW50LCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcywg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2luZG93ID0g
V1RGTW92ZSh3aW5kb3cpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBkYWVtb25FbmRwb2ludCA9
IHJldGFpblB0cihkYWVtb25FbmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkYWVtb25FbmRwb2ludCkg
ewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNvbm5lY3QgdG8gYXV0aG9y
aXphdGlvbiBkYWVtb246ICVAXG4iLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaGFu
ZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRhIHsgTm90
QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJlc2VudGVyID0g
YWRvcHROUyhbYWxsb2NBU0NBdXRob3JpemF0aW9uUmVtb3RlUHJlc2VudGVySW5zdGFuY2UoKSBp
bml0XSk7Ci0gICAgICAgICAgICBbd2Vha1RoaXMtPm1fcHJlc2VudGVyIHByZXNlbnRXaXRoV2lu
ZG93OndpbmRvdy5nZXQoKSBkYWVtb25FbmRwb2ludDpkYWVtb25FbmRwb2ludC5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2hhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBw
cm94eSA9IFdURk1vdmUocHJveHkpXShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVkZW50
aWFsTm90UmV0YWluLCBOU0Vycm9yICplcnJvck5vdFJldGFpbikgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICAgICAgYXV0byBjcmVkZW50aWFsID0gcmV0YWluUHRyKGNyZWRlbnRpYWxOb3RSZXRhaW4p
OwotICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSByZXRhaW5QdHIoZXJyb3JOb3RSZXRhaW4p
OwotI2VuZGlmCi0gICAgICAgICAgICAgICAgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSByZXNw
b25zZSA9IHsgfTsKLSAgICAgICAgICAgICAgICBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRh
Y2htZW50OwotICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uRGF0YSA9IHsg
fTsKLQotICAgICAgICAgICAgICAgIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNsYXNzOmdldEFT
Q1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbkNsYXNzKCldKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxh
dGZvcm07Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIEFTQ1BsYXRmb3Jt
UHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0cmF0aW9uQ3JlZGVudGlhbCA9
IGNyZWRlbnRpYWwuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0g
dG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJRCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZl
cihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDU2VjdXJpdHlL
ZXlQdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKLSAgICAgICAgICAg
ICAgICAgICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRm
b3JtOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NTZWN1cml0eUtl
eVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb24gKnJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwg
PSBjcmVkZW50aWFsLmdldCgpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9
IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwotICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCA9IHRvQXJyYXlCdWZm
ZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNsYXNzOmdldEFTQ1BsYXRmb3Jt
UHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbkNsYXNzKCldKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm07Ci0gICAg
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NQbGF0Zm9ybVB1YmxpY0tleUNy
ZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdldCgp
OwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIoYXNz
ZXJ0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgICAgICAgICByZXNw
b25zZS5hdXRoZW50aWNhdG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlh
bC5hdXRoZW50aWNhdG9yRGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNpZ25h
dHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1cmUpOwotICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9BcnJheUJ1ZmZlcihhc3Nl
cnRpb25DcmVkZW50aWFsLnVzZXJIYW5kbGUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
W2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRl
bnRpYWxBc3NlcnRpb25DbGFzcygpXSkgewotICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50
ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm07Ci0gICAgICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSBmYWxz
ZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRp
YWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdldCgpOwotICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9u
Q3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5h
dXRoZW50aWNhdG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5hdXRo
ZW50aWNhdG9yRGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNpZ25hdHVyZSA9
IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1cmUpOwotICAgICAgICAg
ICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9BcnJheUJ1ZmZlcihhc3NlcnRpb25D
cmVkZW50aWFsLnVzZXJIYW5kbGUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpIDA7Ci0g
ICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKLSAgICAgICAg
ICAgICAgICAgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IG5pbDsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKFtlcnJvci5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOldLRXJyb3JEb21h
aW5dKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25Db2RlID0gdG9FeGNlcHRp
b25Db2RlKGVycm9yLmdldCgpLmNvZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JN
ZXNzYWdlID0gZXJyb3IuZ2V0KCkudXNlckluZm9bTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25Db2RlID0gTm90QWxsb3dlZEVycm9yOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoW2Vycm9yLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6QVNDQXV0aG9yaXphdGlv
bkVycm9yRG9tYWluXSAmJiBlcnJvci5nZXQoKS5jb2RlID09IEFTQ0F1dGhvcml6YXRpb25FcnJv
clVzZXJDYW5jZWxlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2Ug
PSBAIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuIjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
ck1lc3NhZ2UgPSBAIk9wZXJhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRhdGEgPSB7IGV4Y2VwdGlvbkNvZGUsIGVy
cm9yTWVzc2FnZSB9OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGhhbmRs
ZXIocmVzcG9uc2UsIGF0dGFjaG1lbnQsIGV4Y2VwdGlvbkRhdGEpOwotI2lmIFBMQVRGT1JNKE1B
QykKKyAgICAgICAgICAgIFt3ZWFrVGhpcy0+bV9wcmVzZW50ZXIgcHJlc2VudFdpdGhXaW5kb3c6
d2luZG93LmdldCgpIGRhZW1vbkVuZHBvaW50OmRhZW1vbkVuZHBvaW50LmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcHJveHkgPSBXVEZNb3ZlKHByb3h5KSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oaWQgPEFTQ0NyZWRlbnRpYWxQ
cm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9yKTsKICAgICAgICAgICAg
IH0pLmdldCgpXTsKLSNlbmRpZgogICAgICAgICB9KTsKICAgICB9KS5nZXQoKV07CisjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKQorfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIoW2dldEFTQ1dlYktpdFNQSVN1cHBvcnRDbGFz
cygpIHNob3VsZFVzZUFsdGVybmF0ZUNyZWRlbnRpYWxTdG9yZV0pOwogfQogCiB2b2lkIFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdGlvblJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKaW5kZXggMDgyMTc3ODE2
ODgzNTEyNzhlMGNlODA4NDFiYmZjZjczNmYyNWQ5Yi4uYjgzOTY1MDRlMWM5NDMxZDRhZmUzMDY3
MDdhODA5ZGY0NzNlYThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVx
dWVzdERhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiV2ViQXV0
aGVudGljYXRpb25GbGFncy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgpAQCAt
NTYsNiArNTcsNyBAQCBzdHJ1Y3QgV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSB7CiAgICAg
Ym9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmU7CiAgICAgU3RyaW5nIGNhY2hlZFBpbjsgLy8gT25s
eSB1c2VkIHRvIGltcHJvdmUgTkZDIENsaWVudCBQSU4gZXhwZXJpZW5jZS4KICAgICBXZWFrUHRy
PEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbD4gd2Vha1BhbmVsOworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ+IG1lZGlhdGlvbjsKIH07CiAKIFdlYkNv
cmU6OkNsaWVudERhdGFUeXBlIGdldENsaWVudERhdGFUeXBlKGNvbnN0IHN0ZDo6dmFyaWFudDxX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYjExYzU4OTUzMjliZDI1
ZGVmODI5YTQxYTExYzE1MjYwNzRjZGNjNy4uZjU5ZTk0YTk1NjlmNWU4MTRjMjlmM2JiYzJkZTFm
ZWEzMjQ3ODk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5LmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoKQogCiB2b2lk
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbChGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4
X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMs
IGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBo
YW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9w
dGlvbnMpLCBtX3dlYlBhZ2VQcm94eSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5h
dmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5
LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1vdmUoZnJhbWVJbmZvKSwgcHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBo
YW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbV93ZWJQYWdl
UHJveHksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRy
LCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJh
bWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5n
KCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhf
dD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBi
b29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFu
ZGxlcikKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmdldEFzc2VydGlv
bihGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgVmVj
dG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYg
b3B0aW9ucywgTWVkaWF0aW9uUmVxdWlyZW1lbnQgbWVkaWF0aW9uLCBib29sIHByb2Nlc3NpbmdV
c2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBo
YW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbV93ZWJQYWdl
UHJveHksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRy
LCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJh
bWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5n
KCksIG51bGxwdHIgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdU
Rk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1fd2ViUGFnZVByb3h5LCBXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFsRnJhbWVJZGVu
dGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSwgV1RGTW92ZShm
cmFtZUluZm8pLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBudWxscHRyLCBtZWRp
YXRpb24gfSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0
YSYmIGRhdGEsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCkBAIC0xMDYsNiAr
MTA2LDExIEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzVXNlclZl
cmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsCiB7CiAgICAgaGFuZGxlcihMb2NhbFNl
cnZpY2U6OmlzQXZhaWxhYmxlKCkpOwogfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlv
bkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIoZmFsc2UpOworfQogI2VuZGlmIC8v
ICFIQVZFKFVOSUZJRURfQVNDX0FVVEhfVUkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKaW5kZXgg
ODY5NzFkYTdjODYwOGE4N2IwYmRmZThhMzY4NDk5MTE5OGM2MzQ4MS4uMzljODNjY2FiZmIwZmJk
M2RiMmY2YWEyMGQxZWJlNTVjYjRhNzVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgpAQCAtNjksOCArNzAsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUmVjZWl2
ZXJzLgogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBG
cmFtZUluZm9EYXRhJiYsIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiwgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGdldEFzc2VydGlvbihXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgVmVjdG9yPHVpbnQ4X3Q+JiYg
aGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYsIGJvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
dm9pZCBnZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRh
JiYsIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyYmLCBXZWJDb3JlOjpDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM6Ok1lZGlh
dGlvblJlcXVpcmVtZW50LCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50
aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBpc0Nv
bmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJik7CiAK
ICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmLCBS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggY2I5
M2M4OWYyNDQ3MGYzOTlhMGIxOWIxZDMyOWU3N2E3Zjc1NmFmYS4uMWQ3NWE4ODFlZDVmNzMwNDFl
N2Q0YzNhNWQ1OWIzMTNhNGJiZmM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTI3LDcgKzI3
LDggQEAKIG1lc3NhZ2VzIC0+IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IE5vdFJl
ZkNvdW50ZWQgewogCiAgICAgTWFrZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBWZWN0b3I8
dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmludCBXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCi0gICAgR2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1l
SW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUp
IC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVt
OmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgR2V0QXNzZXJ0aW9u
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgZW51bTppbnQgV2ViQ29y
ZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudCBtZWRpYXRp
b24sIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRv
ckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhj
ZXB0aW9uKSBBc3luYworICAgIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoKSAtPiAo
Ym9vbCByZXN1bHQpIEFzeW5jCiAgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKCkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IGJlYzI2YWQ4NDZmNGMz
MGE3NzA2MzZlZmQ4NTY0MThmZTk3NjEzZDguLmIxYmEzZTQxM2RiNzMyZjkwNWM2OGZhNzIwNDM0
NmQ3ZGE2ODJjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3VyCiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6TWFrZUNyZWRlbnRpYWwoaGFzaCwgb3B0aW9ucywgaXNQcm9jZXNz
aW5nVXNlckdlc3R1cmUpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9u
SGFuZGxlciYmIGhhbmRsZXIpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0
QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyYgb3B0aW9ucywgTWVkaWF0aW9uUmVxdWlyZW1lbnQgbWVkaWF0aW9uLCBSZXF1ZXN0
Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewogICAgIGF1dG8qIHdlYkZyYW1lID0gV2Vi
RnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogICAgIGlmICghd2ViRnJhbWUpCkBAIC05Nyw3
ICs5Nyw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24o
Y29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1cml0CiAgICAgYm9vbCB1c2VXZWJBdXRoblBy
b2Nlc3MgPSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkF1dGhl
bnRpY2F0aW9uTW9kZXJuRW5hYmxlZCgpOwogI2VuZGlmCiAgICAgaWYgKCF1c2VXZWJBdXRoblBy
b2Nlc3MpIHsKLSAgICAgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2VydGlvbih3ZWJGcmFtZS0+
ZnJhbWVJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBoYXNoLCBvcHRpb25zLCBpc1Byb2Nlc3NpbmdV
c2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxlcikpOworICAgICAgICBtX3dlYlBhZ2Uuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
R2V0QXNzZXJ0aW9uKHdlYkZyYW1lLT5mcmFtZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIGhhc2gs
IG9wdGlvbnMsIG1lZGlhdGlvbiwgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBXVEZNb3ZlKGhh
bmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA2LDYgKzEwNiwxMSBAQCB2
b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1l
JiBmcmFtZSwgY29uc3QgU2VjdXJpdAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZVdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEFzc2VydGlv
bihoYXNoLCBvcHRpb25zLCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxl
cikpOwogfQogCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25h
bE1lZGlhdGlvbkF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sK
KyAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eTo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSgpLCBX
VEZNb3ZlKGhhbmRsZXIpKTsKK307CisKIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21w
bGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAjaWYgSEFWRShVTklGSUVEX0FTQ19BVVRIX1VJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IDVl
MWM3ZGRmNTE4ZTk5Y2RhN2UwNjBkODA3YTA5ODI4NGVkMDRmNGQuLjI1OWM5ZTU2MmMzOTNiMGU2
M2ViYjc4ZTNmNzdjMjc5ZGE2OTcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmgKQEAgLTQxLDcgKzQxLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICAvLyBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQKICAgICB2b2lkIG1h
a2VDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFdlYkNvcmU6OkZy
YW1lJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
cyYsIFdlYkNvcmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lk
IGdldEFzc2VydGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpNZWRpYXRpb25SZXF1
aXJlbWVudCwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAg
IHZvaWQgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CiAgICAgdm9pZCByZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1lbnQoKSBmaW5hbCB7IG1f
cmVxdWlyZVVzZXJHZXN0dXJlID0gZmFsc2U7IH0KIAo=
</data>
<flag name="commit-queue"
          id="479515"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452466</attachid>
            <date>2022-02-17 19:10:02 -0800</date>
            <delta_ts>2022-02-17 20:02:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236820-20220217191001.patch</filename>
            <type>text/plain</type>
            <size>48662</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU1MzU4ZDE1MDliNzEw
ZDAyYzQ4MjZiNzkyN2Y3OTM2ZjYyYThiNS4uMDhmOTdiM2Y1YjhkNzAxMzBmOWJlODIzMzJiMGI1
YzE2MDFhNjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE3ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
Zm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODIwCisgICAgICAgIHJkYXI6Ly84NDgyMTk0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBtZWRpYXRpb24sIGFzIGRlZmluZWQgaW4gdGhlCisg
ICAgICAgIGNyZWRlbnRpYWxzIG1hbmFnZW1lbnQgc3BlYzogaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3dlYmFwcHNlYy1jcmVkZW50aWFsLW1hbmFnZW1lbnQvI2RvbS1jcmVkZW50aWFsbWVkaWF0aW9u
cmVxdWlyZW1lbnQtY29uZGl0aW9uYWwKKworICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1h
bmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljQ3Jl
ZGVudGlhbDo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSk6CisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucy5pZGw6CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9D
cmVkZW50aWFsc0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0Nv
bnRhaW5lcjo6Z2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJs
ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAyMi0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIENsZWFuIHVwIC8gb3B0aW1pemUgY2FsbCBzaXRlcyBjb25zdHJ1Y3RpbmcgdmVjdG9ycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBjYzQ1YzhjNDg4YWZlYzc4NzcxOTY5ODgyZjE5YzczNWEwOGM2ODlmLi5hYWY5
ODU4NGNjOWI5MWFjMWFlMjU4Mjg0NjRlOGQxZWRjZDkwYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMxIEBACisyMDIyLTAyLTE3ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgZm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODIwCisgICAgICAg
IHJkYXI6Ly84NDgyMTk0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBtZWRpYXRp
b24sIGFzIGRlZmluZWQgaW4gdGhlCisgICAgICAgIGNyZWRlbnRpYWxzIG1hbmFnZW1lbnQgc3Bl
YzogaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jcmVkZW50aWFsLW1hbmFnZW1lbnQv
I2RvbS1jcmVkZW50aWFsbWVkaWF0aW9ucmVxdWlyZW1lbnQtY29uZGl0aW9uYWwKKworICAgICAg
ICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29uZmlndXJhdGlvbkFz
c2VydGlvblJlcXVlc3RDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6OmNvbnRleHRGb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzQ29uZGl0aW9u
YWxNZWRpYXRpb25BdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VD
cmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaDoKKwogMjAyMi0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIC8gb3B0aW1pemUgY2FsbCBzaXRlcyBjb25zdHJ1
Y3RpbmcgdmVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwCmluZGV4IGEyM2RmMTA3
ZjE2NWRmYjcxMTRjZTI5OGI1NDg4MGE3Yjc5Y2U2MmYuLmU0ZDYwYjBmMjdhZGVmYzU3NWY4YTkw
NzAzZmRkODViMDc3YjI0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5jcHAKQEAgLTI2
LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCYXNpY0NyZWRlbnRp
YWwuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIgorCiAjaWYgRU5B
QkxFKFdFQl9BVVRITikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNiArNTIsMTEgQEAg
U3RyaW5nIEJhc2ljQ3JlZGVudGlhbDo6dHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiB9CiAKK3ZvaWQgQmFzaWNDcmVkZW50aWFsOjppc0NvbmRpdGlvbmFsTWVkaWF0aW9u
QXZhaWxhYmxlKERvY3VtZW50JiBkb2N1bWVudCwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xl
YW4+JiYgcHJvbWlzZSkKK3sKKyAgICBkb2N1bWVudC5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcigpLmlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoV1RGTW92ZShwcm9taXNl
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaAppbmRleCAzYjhmMTQyMjJlYzRhYzVmNjcy
MTA3OTBhNWY5ZmE1NWQzZWNhYTE5Li41ZDdlNDQxMjM2NGU3ZTc0OGNkNjY1YjI5MDJlODI0MTU4
MGZiMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVi
bGljOgogICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAgICAgRGlzY292ZXJ5IGRpc2NvdmVyeSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzY292ZXJ5OyB9CiAKKyAgICBzdGF0aWMgdm9pZCBpc0NvbmRp
dGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKERvY3VtZW50JiwgRE9NUHJvbWlzZURlZmVycmVkPElE
TEJvb2xlYW4+JiYpOworCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkOwogICAgIFR5cGUgbV90
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdl
bWVudC9CYXNpY0NyZWRlbnRpYWwuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaWRsCmluZGV4IDQ5OTMxN2U3OGNlNzc0MTk4
NGM3NTYyYzAxZjVlZmQ5NGRkNTQzMGQuLjI0OTIyMjVjMDVhZTM1NDgzYjQ0Y2M5MWNmMmQ0Y2Qx
YWI3NTQ5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1h
bmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGwKQEAgLTMzLDQgKzMzLDYg
QEAKIF0gaW50ZXJmYWNlIEJhc2ljQ3JlZGVudGlhbCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFVTVlN0cmluZyBpZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CisK
KyAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBp
c0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKaW5kZXggODFjOTRlYWFmYTc1OWRkOGQyNjk1NTNhZTMx
OGI2OGY0MWZkZDU4My4uOWJmMzE4ODg4MWZhNDM1ODg1ZGNkZWY1MDIxMDk4MzM5YTZmZjM3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9D
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Ny
ZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCkBAIC0zNSw4ICsz
NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFib3J0U2lnbmFsOwogCitlbnVt
IGNsYXNzIE1lZGlhdGlvblJlcXVpcmVtZW50IHsgU2lsZW50LCBPcHRpb25hbCwgUmVxdWlyZWQs
IENvbmRpdGlvbmFsIH07CisKIHN0cnVjdCBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgewotICAg
IGVudW0gY2xhc3MgTWVkaWF0aW9uUmVxdWlyZW1lbnQgeyBTaWxlbnQsIE9wdGlvbmFsLCBSZXF1
aXJlZCB9OworICAgIHVzaW5nIE1lZGlhdGlvblJlcXVpcmVtZW50ID0gTWVkaWF0aW9uUmVxdWly
ZW1lbnQ7CiAKICAgICBNZWRpYXRpb25SZXF1aXJlbWVudCBtZWRpYXRpb247CiAgICAgUmVmUHRy
PEFib3J0U2lnbmFsPiBzaWduYWw7CkBAIC00NSw0ICs0NywxOSBAQCBzdHJ1Y3QgQ3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
OjpNZWRpYXRpb25SZXF1aXJlbWVudCwKKyAgICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudDo6U2lsZW50LAorICAgICAgICBXZWJDb3Jl
OjpDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50OjpPcHRpb25h
bCwKKyAgICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25S
ZXF1aXJlbWVudDo6UmVxdWlyZWQsCisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9uczo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ6OkNvbmRpdGlvbmFsCisgICAgPjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaWRsCmluZGV4IDkzYTBjZjE0
NzI4YWEyODY5ZTU4MDlmNTNlZmYxOTgyYjNhODdlYTkuLjdkYjU5ZDlhYjIxMmIxMTcxYWM4MWI2
YmM0NDQxYWQyYjhhODFiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucy5pZGwKQEAgLTI5LDcgKzI5LDggQEAKIF0gZW51bSBDcmVkZW50aWFsTWVkaWF0aW9u
UmVxdWlyZW1lbnQgewogICAgICJzaWxlbnQiLAogICAgICJvcHRpb25hbCIsCi0gICAgInJlcXVp
cmVkIgorICAgICJyZXF1aXJlZCIsCisgICAgImNvbmRpdGlvbmFsIgogfTsKIAogWwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50
aWFsc0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAppbmRleCBjMWFjNzBiZjY3MmM5MGEwNWM4
N2FhNDE5MzA1ZWQ1NWQzNmE3YzI5Li45NjA2MDhjYTEzNWY4YWM2OTU2ZmE5Y2YyM2YyM2E4OTU0
ZTQ4YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcApAQCAtOTgs
NyArOTgsNyBAQCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zJiYgb3B0aW9ucywgQ3JlZGVudGlhbFBybwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5k
aXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNLZXku
dmFsdWUoKSwgc2NvcGUoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlz
ZSkpOworICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCku
ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoKm1fZG9jdW1lbnQsIFdURk1vdmUob3B0aW9ucyks
IHNjb3BlKCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFp
bmVyOjpzdG9yZShjb25zdCBCYXNpY0NyZWRlbnRpYWwmLCBDcmVkZW50aWFsUHJvbWlzZSYmIHBy
b21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggNWQ0Nzc3YjhjMDNhMDkyZjcxOTFk
ZTQ0NDU0OGVhN2Y5YzZmM2M3Ni4uOTczNGY5Y2FlNDdhM2RhN2Y3NmE2MWNlNGMxNjU4NTljNmNl
ZGE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmVhdHVyZVBvbGljeS5oIgogI2luY2x1ZGUgIkpT
QmFzaWNDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiSlNDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMu
aCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlB1YmxpY0tl
eUNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zLmgiCkBAIC0xNzYsMTIgKzE3NywxMyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6Y3JlYXRlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAg
IG1fY2xpZW50LT5tYWtlQ3JlZGVudGlhbCgqZnJhbWUsIGNhbGxlck9yaWdpbiwgY2xpZW50RGF0
YUpzb25IYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYg
b3B0aW9ucywgV2ViQXV0aG46OlNjb3BlIHNjb3BlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJv
cnRTaWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3ZvaWQgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIHJlcXVlc3RPcHRpb25z
LCBXZWJBdXRobjo6U2NvcGUgc2NvcGUsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29u
c3QKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJu
YWw7CiAKICAgICBhdXRvJiBjYWxsZXJPcmlnaW4gPSBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigp
OwogICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBjb25zdCBhdXRvJiBv
cHRpb25zID0gcmVxdWVzdE9wdGlvbnMucHVibGljS2V5LnZhbHVlKCk7CiAgICAgQVNTRVJUKGZy
YW1lKTsKICAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3Jn
L1RSL3dlYmF1dGhuLyNjcmVhdGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAg
ICAvLyBTdGVwIDEsIDMsIDEzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIuCkBAIC0yMzAsNyAr
MjMyLDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVy
bmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERh
dGFKc29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92
ZShhYm9ydFNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikg
bXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUo
Y2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwg
PSBXVEZNb3ZlKHJlcXVlc3RPcHRpb25zLnNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhJiYgZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9u
RGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBh
Ym9ydFNpZ25hbC0+YWJvcnRlZCgpKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1
bWUKICAgICAgICAgcHJvbWlzZS5yZWplY3QoZXhjZXB0aW9uLnRvRXhjZXB0aW9uKCkpOwogICAg
IH07CiAgICAgLy8gQXN5bmMgb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBp
biB0aGUgbWVzc2VuZ2VyLgotICAgIG1fY2xpZW50LT5nZXRBc3NlcnRpb24oKmZyYW1lLCBjYWxs
ZXJPcmlnaW4sIGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykp
OworICAgIG1fY2xpZW50LT5nZXRBc3NlcnRpb24oKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVu
dERhdGFKc29uSGFzaCwgb3B0aW9ucywgcmVxdWVzdE9wdGlvbnMubWVkaWF0aW9uLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+JiYgcHJvbWlzZSkgY29uc3QKQEAgLTI2Niw2ICsyNjgsMjEgQEAgdm9pZCBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZShET00KICAgICBtX2NsaWVudC0+aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAor
Cit2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2
YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKSBjb25zdAor
eworICAgIGlmICghbV9jbGllbnQpICB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVyYXRpb24gYXJl
IGRpc3BhdGNoZWQgYW5kIGhhbmRsZWQgaW4gdGhlIG1lc3Nlbmdlci4KKyAgICBtX2NsaWVudC0+
aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpyZXNldFVzZXJHZXN0dXJl
UmVxdWlyZW1lbnQoKQogewogICAgIG1fY2xpZW50LT5yZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1l
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IGY0OTUwMzA4NmM5YWNjNzkxOTMzODdmNzZm
YjZhNWJlYTIwNzgwYWIuLjRkOWFiYTY4ZTg4ODMwNTA4OWJmZTE5MzBjMzUwOGNhZGY1M2ZlZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBEb2N1bWVudDsK
IAogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CiBzdHJ1Y3QgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOworc3RydWN0IENyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9uczsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURl
ZmVycmVkOwogCkBAIC01OCw4ICs1OSw5IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZSBmb2xsb3dp
bmcgbWV0aG9kcyBpbXBsZW1lbnQgc3RhdGljIG1ldGhvZHMgb2YgUHVibGljS2V5Q3JlZGVudGlh
bC4KICAgICB2b2lkIGNyZWF0ZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBXZWJBdXRobjo6U2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25h
bD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7Ci0gICAgdm9pZCBkaXNjb3ZlckZyb21F
eHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyYsIFdlYkF1dGhuOjpTY29wZSwgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBD
cmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2b2lkIGRpc2NvdmVyRnJvbUV4dGVybmFs
U291cmNlKGNvbnN0IERvY3VtZW50JiwgQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYsIFdlYkF1
dGhuOjpTY29wZSwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7CiAgICAgdm9pZCBpc1VzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+JiYpIGNvbnN0OworICAgIHZvaWQgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2
YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJikgY29uc3Q7CiAKICAgICB2
b2lkIHJlc2V0VXNlckdlc3R1cmVSZXF1aXJlbWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQuaAppbmRleCA2NDYxYWU5NjRmYWJkODIyZGZiMTAwODcwNTY4MWM2ZTQ1NTdiNDlj
Li43YzE3YzU4M2U4NWM4NjdlYmE3NzRiNzhjNTk2MGRhODIxZjY2NDUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIAogZW51bSBjbGFzcyBBdXRoZW50aWNhdG9yQXR0YWNobWVudDsK
K2VudW0gY2xhc3MgTWVkaWF0aW9uUmVxdWlyZW1lbnQ7CiAKIHN0cnVjdCBBdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7
CkBAIC00Niw3ICs0Nyw3IEBAIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnM7CiB1c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRvckF0dGFjaG1lbnQsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmJik+OwogdXNpbmcgUXVl
cnlDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiB7CitjbGFz
cyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Q2xpZW50KTsKIHB1YmxpYzoKQEAgLTU0LDcgKzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1
YWwgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSB7IH07Ci0gICAgdmlydHVh
bCB2b2lkIGdldEFzc2VydGlvbihjb25zdCBGcmFtZSYsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmLCBNZWRpYXRpb25SZXF1aXJlbWVudCwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIHsg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShRdWVy
eUNvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgaXNVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIm
JikgeyB9OwogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0VXNlckdlc3R1cmVSZXF1aXJlbWVudCgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDM4YjBiMGNmZjM0NGM3NzRlM2NmNTRjNmY3ODFjMDc1ODllZjA0OTcuLjhlZTdm
YThkODZjYzViOTFhMWYxM2YxOWFjMjdhZTcyMWEwYWJmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNzQsNyArMjM3NCw3
IEBACiAJCTc3QTE3QUE3MTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0ExN0FB
MzEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oICovOyB9OwogCQk3
N0Q1MTAwNDFFRDRGNzFFMDBEQTRDODcgLyogSlNDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RDUwRkZGMUVE
NEY3MEMwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovOyB9OwogCQk3
N0Q1MTAwNjFFRDRGNzI1MDBEQTRDODcgLyogSlNDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0Q1MEZGRDFF
RDRGNzBDMDBEQTRDODcgLyogSlNDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi87IH07Ci0J
CTc3RDUxMDBCMUVENUUyODgwMERBNEM4NyAvKiBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RDUwRkZCMUVE
NEYxNkMwMERBNEM4NyAvKiBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCAqLzsgfTsKKwkJNzdE
NTEwMEIxRUQ1RTI4ODAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdENTBGRkIxRUQ0RjE2
QzAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc3RDUxMDBEMUVENUUyOTUwMERBNEM4
NyAvKiBDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0FBRDY4NTFFQ0ZCRDM5MDBCRkEyRDEgLyogQ3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucy5oICovOyB9OwogCQk3N0Q1MTAxNzFFRDYwMjIyMDBEQTRDODcg
LyogQ3JlZGVudGlhbHNDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc3RDUxMDE2MUVENjAyMUIwMERBNEM4NyAvKiBDcmVkZW50aWFsc0Nv
bnRhaW5lci5oICovOyB9OwogCQk3N0Q1MTAxQzFFRDcyMkJGMDBEQTRDODcgLyogSlNDcmVkZW50
aWFsc0NvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzdENTEwMUIxRUQ3MjJCNTAwREE0Qzg3IC8qIEpTQ3JlZGVudGlhbHNDb250YWluZXIu
aCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1
dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Nw
aS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCmluZGV4IGQyMmFiMmNiN2Rh
NTM1Y2I1YTQyNTAwMWI4MzM3ZjVhZjU4NDI2ZGYuLjM3YWQzMWJiNmY0MTUzNjM2YzA0NjkwMDQ2
ZTdhMjVkZGIyODM0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0Nv
Y29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaApAQCAtMjI5
LDYgKzIyOSwxMSBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgQVNDQ3JlZGVudGlh
bFJlcXVlc3RUeXBlcykgewogCiBAZW5kCiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFT
Q3JlZGVudGlhbFJlcXVlc3RTdHlsZSkgeworICAgIEFTQ3JlZGVudGlhbFJlcXVlc3RTdHlsZU1v
ZGFsLAorICAgIEFTQ3JlZGVudGlhbFJlcXVlc3RTdHlsZUF1dG9GaWxsLAorfTsKKwogQGludGVy
ZmFjZSBBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQgOiBOU09iamVjdCA8TlNTZWN1cmVDb2Rp
bmc+CiAKIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOwpAQCAtMjQ1LDYgKzI1
MCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBBU0NDcmVkZW50aWFsUmVxdWVz
dFR5cGVzKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIEFTQ1B1Ymxp
Y0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zICpwbGF0Zm9ybUtleUNyZWRlbnRpYWxBc3Nl
cnRpb25PcHRpb25zOwogQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBBU0NQ
dWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9ucyAqc2VjdXJpdHlLZXlDcmVkZW50aWFs
QXNzZXJ0aW9uT3B0aW9uczsKIAorQHByb3BlcnR5IChub25hdG9taWMpIEFTQ3JlZGVudGlhbFJl
cXVlc3RTdHlsZSByZXF1ZXN0U3R5bGU7CisKIEBlbmQKIAogQHByb3RvY29sIEFTQ0NyZWRlbnRp
YWxQcm90b2NvbCA8TlNPYmplY3QsIE5TU2VjdXJlQ29kaW5nPgpAQCAtMzIwLDYgKzMyNyw4IEBA
IHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVz
KSB7CiAtICh2b2lkKXVzZXJTZWxlY3RlZExvZ2luQ2hvaWNlOihpZCA8QVNDTG9naW5DaG9pY2VQ
cm90b2NvbD4pbG9naW5DaG9pY2UgYXV0aGVudGljYXRlZENvbnRleHQ6KExBQ29udGV4dCAqKWNv
bnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9j
b2w+IF9OdWxsYWJsZSwgTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CiAK
IC0gKHZvaWQpcmVxdWVzdENvbXBsZXRlZFdpdGhDcmVkZW50aWFsOihudWxsYWJsZSBpZDxBU0ND
cmVkZW50aWFsUHJvdG9jb2w+KWNyZWRlbnRpYWwgZXJyb3I6KG51bGxhYmxlIE5TRXJyb3IgKill
cnJvcjsKKworLSAodm9pZClwZXJmb3JtQXV0b0ZpbGxBdXRob3JpemF0aW9uUmVxdWVzdHNGb3JD
b250ZXh0OihBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQgKiljb250ZXh0IHdpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gX051bGxhYmxl
IGNyZWRlbnRpYWwsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVy
OwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggY2EzMDQy
NDJmNzhkMWZhMGE5MTZhY2E4NzNjNzAyMmY4ODgxY2RkZi4uY2UwOTQ2NTg3Mzg1ZTkxODBkNmYz
ODBmYjIxZTQ2ODhjZWExMGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTgx
Miw3ICs4MTIsNyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvbgogICAgICAgICAgICAgaGFuZGxl
cihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6ZXhjZXB0
aW9uLmNvZGUgdXNlckluZm86QHsgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTogZXhjZXB0aW9u
Lm1lc3NhZ2UgfV0pOwogICAgICAgICB9KTsKICAgICB9OwotICAgIF9wYW5lbC0+aGFuZGxlUmVx
dWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRU
b0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0
OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3Rk
OjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJh
Y2spKTsKKyAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBbX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9wdGlv
bnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3Vs
dDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmco
KSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoY2FsbGJhY2spKTsKICNlbmRpZgog
fQogCkBAIC04MjYsNyArODI2LDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb24KICAgICAgICAg
ICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBj
b2RlOmV4Y2VwdGlvbi5jb2RlIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXk6
IGV4Y2VwdGlvbi5tZXNzYWdlIH1dKTsKICAgICAgICAgfSk7CiAgICAgfTsKLSAgICBfcGFuZWwt
PmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGNsaWVudERhdGFIYXNoKSwgW19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRp
b25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5n
KCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIF9wYW5lbC0+aGFuZGxlUmVx
dWVzdCh7IHZlY3RvckZyb21OU0RhdGEoY2xpZW50RGF0YUhhc2gpLCBbX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9u
c10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFp
bGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0
ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoY2FsbGJhY2spKTsKICNlbmRpZgogfQogCkBAIC04
NzYsNyArODc2LDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3AKICAgICAgICAgICAgIGhhbmRs
ZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOwogICAgICAgICB9KTsKICAgICB9OwotICAgIF9wYW5l
bC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxs
cHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBu
dWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RG
TW92ZShjYWxsYmFjaykpOworICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFz
aCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9u
c1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1
ZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAjZW5kaWYKIH0KIApAQCAtODkwLDcgKzg5MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7
CiAgICAgfTsKLSAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGNs
aWVudERhdGFIYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJl
cXVlc3RPcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9w
dCwgeyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgX3BhbmVsLT5oYW5kbGVSZXF1ZXN0KHsgdmVjdG9yRnJvbU5TRGF0YShjbGllbnREYXRhSGFz
aCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9u
c1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1
ZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQppbmRleCAxOWFiN2ExOGQyMmZmZTNjZWI2MmI5NjBk
OWExZTBiMDU5MmJmYzUzLi42NzgzNTljMjMxZDNiODc0NmMzNDMxZTgzODM1YzczNDFhMWE4MDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8QVND
Q3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29u
dGV4CiAgICAgcmV0dXJuIHJlcXVlc3RDb250ZXh0OwogfQogCi1zdGF0aWMgUmV0YWluUHRyPEFT
Q0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RD
b250ZXh0KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywg
VmVjdG9yPHVpbnQ4X3Q+IGhhc2gpCitzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1
ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgVmVjdG9yPHVpbnQ4X3Q+
IGhhc2gsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ+IG1lZGlh
dGlvbikKIHsKICAgICBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVzIHJlcXVlc3RUeXBlcyA9IEFT
Q0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVBsYXRmb3JtUHVibGljS2V5QXNzZXJ0aW9uIHwgQVNDQ3Jl
ZGVudGlhbFJlcXVlc3RUeXBlU2VjdXJpdHlLZXlQdWJsaWNLZXlBc3NlcnRpb247CiAKQEAgLTI2
MCw2ICsyNjAsOCBAQCBzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4
dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZQogCiAgICAgYXV0byByZXF1ZXN0
Q29udGV4dCA9IGFkb3B0TlMoW2FsbG9jQVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0SW5zdGFu
Y2UoKSBpbml0V2l0aFJlcXVlc3RUeXBlczpyZXF1ZXN0VHlwZXNdKTsKICAgICBbcmVxdWVzdENv
bnRleHQgc2V0UmVseWluZ1BhcnR5SWRlbnRpZmllcjpvcHRpb25zLnJwSWRdOworICAgIGlmICht
ZWRpYXRpb24gJiYgKm1lZGlhdGlvbiA9PSBNZWRpYXRpb25SZXF1aXJlbWVudDo6Q29uZGl0aW9u
YWwgJiYgW3JlcXVlc3RDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UmVx
dWVzdFN0eWxlOildKQorICAgICAgICByZXF1ZXN0Q29udGV4dC5nZXQoKS5yZXF1ZXN0U3R5bGUg
PSBBU0NyZWRlbnRpYWxSZXF1ZXN0U3R5bGVBdXRvRmlsbDsKIAogICAgIGlmIChyZXF1ZXN0VHlw
ZXMgJiBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbikg
ewogICAgICAgICBhdXRvIGFzc2VydGlvbk9wdGlvbnMgPSBhZG9wdE5TKGFsbG9jQVNDUHVibGlj
S2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpKTsKQEAgLTMwMCw3ICszMDIs
NyBAQCBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eTo6Y29udGV4dAogICAgIFdURjo6c3dpdGNoT24ocmVxdWVzdERh
dGEub3B0aW9ucywgWyZdKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
IG9wdGlvbnMpIHsKICAgICAgICAgcmVzdWx0ID0gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVz
dENvbnRleHQob3B0aW9ucywgcmVxdWVzdERhdGEuaGFzaCk7CiAgICAgfSwgWyZdKGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykgewotICAgICAgICByZXN1
bHQgPSBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQob3B0aW9ucywgcmVxdWVz
dERhdGEuaGFzaCk7CisgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1
ZXN0Q29udGV4dChvcHRpb25zLCByZXF1ZXN0RGF0YS5oYXNoLCByZXF1ZXN0RGF0YS5tZWRpYXRp
b24pOwogICAgIH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zMDksODUgKzMxMSwxMDAg
QEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cGVyZm9ybVJlcXVlc3Qo
UmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXEKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHROUyhb
YWxsb2NBU0NBZ2VudFByb3h5SW5zdGFuY2UoKSBpbml0XSk7CiAKKyAgICBhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oaWQg
PEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxl
ciksIGNyZWRlbnRpYWwgPSByZXRhaW5QdHIoY3JlZGVudGlhbCksIGVycm9yID0gcmV0YWluUHRy
KGVycm9yKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhIHJlc3BvbnNlID0geyB9OworICAgICAgICAgICAgQXV0aGVudGljYXRvckF0dGFjaG1lbnQg
YXR0YWNobWVudDsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uRGF0YSA9IHsg
fTsKKworICAgICAgICAgICAgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDUGxh
dGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKKyAgICAgICAg
ICAgICAgICBhdHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtOwor
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UgPSB0cnVlOworCisgICAgICAgICAgICAgICAgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50
aWFsUmVnaXN0cmF0aW9uICpyZWdpc3RyYXRpb25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQo
KTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0
cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOworICAgICAgICAgICAgICAgIHJlc3BvbnNl
LmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFs
LmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2NyZWRlbnRpYWwg
aXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3Ry
YXRpb25DbGFzcygpXSkgeworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNh
dG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5p
c0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0
cmF0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CisgICAgICAgICAgICAgICAgcmVz
cG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuY3JlZGVu
dGlhbElEKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCA9IHRv
QXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDUGxh
dGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uQ2xhc3MoKV0pIHsKKyAgICAgICAgICAg
ICAgICBhdHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtOworICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Ug
PSBmYWxzZTsKKworICAgICAgICAgICAgICAgIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlh
bEFzc2VydGlvbiAqYXNzZXJ0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CisgICAg
ICAgICAgICAgICAgcmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRl
bnRpYWwuY3JlZGVudGlhbElEKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5hdXRoZW50aWNh
dG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5hdXRoZW50aWNhdG9y
RGF0YSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2lnbmF0dXJlID0gdG9BcnJheUJ1ZmZl
cihhc3NlcnRpb25DcmVkZW50aWFsLnNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgcmVzcG9u
c2UudXNlckhhbmRsZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC51c2VySGFu
ZGxlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpn
ZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25DbGFzcygpXSkgewor
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jv
c3NQbGF0Zm9ybTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBBU0NTZWN1cml0eUtl
eVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVk
ZW50aWFsLmdldCgpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1
ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJRCk7CisgICAgICAgICAgICAgICAg
cmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRl
bnRpYWwuYXV0aGVudGljYXRvckRhdGEpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNpZ25h
dHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1cmUpOworICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLnVzZXJIYW5kbGUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlv
bkNyZWRlbnRpYWwudXNlckhhbmRsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnQgPSAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpIDA7CisgICAgICAg
ICAgICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOworICAgICAgICAgICAgICAgIE5T
U3RyaW5nICplcnJvck1lc3NhZ2UgPSBuaWw7CisgICAgICAgICAgICAgICAgaWYgKFtlcnJvci5n
ZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOldLRXJyb3JEb21haW5dKSB7CisgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbkNvZGUgPSB0b0V4Y2VwdGlvbkNvZGUoZXJyb3IuZ2V0KCkuY29k
ZSk7CisgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVycm9yLmdldCgpLnVzZXJJ
bmZvW05TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNvZGUgPSBOb3RBbGxvd2VkRXJyb3I7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKFtlcnJvci5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3Ry
aW5nOkFTQ0F1dGhvcml6YXRpb25FcnJvckRvbWFpbl0gJiYgZXJyb3IuZ2V0KCkuY29kZSA9PSBB
U0NBdXRob3JpemF0aW9uRXJyb3JVc2VyQ2FuY2VsZWQpCisgICAgICAgICAgICAgICAgICAgICAg
ICBlcnJvck1lc3NhZ2UgPSBAIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhl
IHVzZXIuIjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gQCJPcGVyYXRpb24gZmFpbGVkLiI7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgZXhjZXB0aW9uRGF0YSA9IHsgZXhjZXB0aW9uQ29kZSwgZXJy
b3JNZXNzYWdlIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGhhbmRsZXIocmVzcG9u
c2UsIGF0dGFjaG1lbnQsIGV4Y2VwdGlvbkRhdGEpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAg
ICAKKyAgICBpZiAoW3JlcXVlc3RDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
cmVxdWVzdFN0eWxlKV0gJiYgcmVxdWVzdENvbnRleHQuZ2V0KCkucmVxdWVzdFN0eWxlID09IEFT
Q3JlZGVudGlhbFJlcXVlc3RTdHlsZUF1dG9GaWxsKSB7CisgICAgICAgIFtwcm94eSBwZXJmb3Jt
QXV0b0ZpbGxBdXRob3JpemF0aW9uUmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0Lmdl
dCgpIHdpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3Byb3h5ID0gV1RGTW92ZShw
cm94eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGlk
IDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9yKTsK
KyAgICAgICAgfSkuZ2V0KCldOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogI2lmIFBM
QVRGT1JNKElPUykKLSAgICBbcHJveHkgcGVyZm9ybUF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNv
bnRleHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIHByb3h5ID0gV1RGTW92ZShwcm94eSld
KGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW2hhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBjcmVkZW50aWFsID0gcmV0YWluUHRyKGNy
ZWRlbnRpYWwpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUgeworICAgIFtw
cm94eSBwZXJmb3JtQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29udGV4
dC5nZXQoKSB3aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtwcm94eSA9IFdURk1v
dmUocHJveHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVkZW50aWFsLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9yKTsK
KyAgICB9KS5nZXQoKV07CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPE5TV2lu
ZG93PiB3aW5kb3cgPSBtX3dlYlBhZ2VQcm94eS5wbGF0Zm9ybVdpbmRvdygpOwotICAgIFtwcm94
eSBwZXJmb3JtQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29udGV4dC5n
ZXQoKSB3aXRoQ2xlYXJhbmNlSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCB3aW5kb3cgPSBXVEZNb3Zl
KHdpbmRvdyksIHByb3h5ID0gV1RGTW92ZShwcm94eSldKE5TWFBDTGlzdGVuZXJFbmRwb2ludCAq
ZGFlbW9uRW5kcG9pbnQsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgd2luZG93
ID0gV1RGTW92ZSh3aW5kb3cpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBkYWVtb25FbmRwb2lu
dCA9IHJldGFpblB0cihkYWVtb25FbmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0g
KCkgbXV0YWJsZSB7CisgICAgW3Byb3h5IHBlcmZvcm1BdXRob3JpemF0aW9uUmVxdWVzdHNGb3JD
b250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhDbGVhcmFuY2VIYW5kbGVyOm1ha2VCbG9j
a1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBwcm94
eSA9IFdURk1vdmUocHJveHkpXShOU1hQQ0xpc3RlbmVyRW5kcG9pbnQgKmRhZW1vbkVuZHBvaW50
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3
ZWFrVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
d2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBkYWVtb25F
bmRwb2ludCA9IHJldGFpblB0cihkYWVtb25FbmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVy
cm9yKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkYWVtb25F
bmRwb2ludCkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNvbm5lY3Qg
dG8gYXV0aG9yaXphdGlvbiBkYWVtb246ICVAXG4iLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25E
YXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJl
c2VudGVyID0gYWRvcHROUyhbYWxsb2NBU0NBdXRob3JpemF0aW9uUmVtb3RlUHJlc2VudGVySW5z
dGFuY2UoKSBpbml0XSk7Ci0gICAgICAgICAgICBbd2Vha1RoaXMtPm1fcHJlc2VudGVyIHByZXNl
bnRXaXRoV2luZG93OndpbmRvdy5nZXQoKSBkYWVtb25FbmRwb2ludDpkYWVtb25FbmRwb2ludC5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2hhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpLCBwcm94eSA9IFdURk1vdmUocHJveHkpXShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29s
PiBjcmVkZW50aWFsTm90UmV0YWluLCBOU0Vycm9yICplcnJvck5vdFJldGFpbikgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgYXV0byBjcmVkZW50aWFsID0gcmV0YWluUHRyKGNyZWRlbnRpYWxO
b3RSZXRhaW4pOwotICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSByZXRhaW5QdHIoZXJyb3JO
b3RSZXRhaW4pOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgQXV0aGVudGljYXRvclJlc3BvbnNl
RGF0YSByZXNwb25zZSA9IHsgfTsKLSAgICAgICAgICAgICAgICBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCBhdHRhY2htZW50OwotICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9u
RGF0YSA9IHsgfTsKLQotICAgICAgICAgICAgICAgIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNs
YXNzOmdldEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbkNsYXNzKCld
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudDo6UGxhdGZvcm07Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIEFT
Q1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0cmF0aW9uQ3Jl
ZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
LnJhd0lkID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJ
RCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9B
cnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVND
U2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpD
cm9zc1BsYXRmb3JtOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NT
ZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb24gKnJlZ2lzdHJhdGlvbkNy
ZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdldCgpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25z
ZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFs
SUQpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCA9IHRv
QXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNsYXNzOmdldEFT
Q1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbkNsYXNzKCldKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZv
cm07Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NQbGF0Zm9ybVB1
YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50
aWFsLmdldCgpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlC
dWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgICAg
ICAgICByZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9u
Q3JlZGVudGlhbC5hdXRoZW50aWNhdG9yRGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3Bv
bnNlLnNpZ25hdHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1
cmUpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9BcnJheUJ1
ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLnVzZXJIYW5kbGUpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1cml0eUtleVB1Ymxp
Y0tleUNyZWRlbnRpYWxBc3NlcnRpb25DbGFzcygpXSkgewotICAgICAgICAgICAgICAgICAgICBh
dHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm07Ci0gICAg
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NTZWN1cml0eUtleVB1YmxpY0tl
eUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdl
dCgpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIo
YXNzZXJ0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVu
dGlhbC5hdXRoZW50aWNhdG9yRGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNp
Z25hdHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1cmUpOwot
ICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9BcnJheUJ1ZmZlcihh
c3NlcnRpb25DcmVkZW50aWFsLnVzZXJIYW5kbGUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSAoQXV0aGVudGljYXRvckF0dGFjaG1l
bnQpIDA7Ci0gICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsK
LSAgICAgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IG5pbDsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKFtlcnJvci5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOldL
RXJyb3JEb21haW5dKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25Db2RlID0g
dG9FeGNlcHRpb25Db2RlKGVycm9yLmdldCgpLmNvZGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gZXJyb3IuZ2V0KCkudXNlckluZm9bTlNMb2NhbGl6ZWREZXNjcmlw
dGlvbktleV07Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25Db2RlID0gTm90QWxsb3dlZEVycm9yOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoW2Vycm9yLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6QVNDQXV0
aG9yaXphdGlvbkVycm9yRG9tYWluXSAmJiBlcnJvci5nZXQoKS5jb2RlID09IEFTQ0F1dGhvcml6
YXRpb25FcnJvclVzZXJDYW5jZWxlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
ck1lc3NhZ2UgPSBAIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIu
IjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvck1lc3NhZ2UgPSBAIk9wZXJhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRhdGEgPSB7IGV4Y2VwdGlv
bkNvZGUsIGVycm9yTWVzc2FnZSB9OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGhhbmRsZXIocmVzcG9uc2UsIGF0dGFjaG1lbnQsIGV4Y2VwdGlvbkRhdGEpOwotI2lmIFBM
QVRGT1JNKE1BQykKKyAgICAgICAgICAgIFt3ZWFrVGhpcy0+bV9wcmVzZW50ZXIgcHJlc2VudFdp
dGhXaW5kb3c6d2luZG93LmdldCgpIGRhZW1vbkVuZHBvaW50OmRhZW1vbkVuZHBvaW50LmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcHJveHkgPSBXVEZNb3ZlKHByb3h5KSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oaWQgPEFTQ0Ny
ZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9yKTsKICAg
ICAgICAgICAgIH0pLmdldCgpXTsKLSNlbmRpZgogICAgICAgICB9KTsKICAgICB9KS5nZXQoKV07
CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIoW2dldEFTQ1dlYktpdFNQSVN1
cHBvcnRDbGFzcygpIHNob3VsZFVzZUFsdGVybmF0ZUNyZWRlbnRpYWxTdG9yZV0pOwogfQogCiB2
b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKaW5kZXgg
MDgyMTc3ODE2ODgzNTEyNzhlMGNlODA4NDFiYmZjZjczNmYyNWQ5Yi4uYjgzOTY1MDRlMWM5NDMx
ZDRhZmUzMDY3MDdhODA5ZGY0NzNlYThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0aW9uUmVxdWVzdERhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwuaCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
cy5oPgpAQCAtNTYsNiArNTcsNyBAQCBzdHJ1Y3QgV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0
YSB7CiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmU7CiAgICAgU3RyaW5nIGNhY2hlZFBp
bjsgLy8gT25seSB1c2VkIHRvIGltcHJvdmUgTkZDIENsaWVudCBQSU4gZXhwZXJpZW5jZS4KICAg
ICBXZWFrUHRyPEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbD4gd2Vha1BhbmVsOworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ+IG1lZGlhdGlvbjsKIH07
CiAKIFdlYkNvcmU6OkNsaWVudERhdGFUeXBlIGdldENsaWVudERhdGFUeXBlKGNvbnN0IHN0ZDo6
dmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLCBXZWJD
b3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYjExYzU4
OTUzMjliZDI1ZGVmODI5YTQxYTExYzE1MjYwNzRjZGNjNy4uZjU5ZTk0YTk1NjlmNWU4MTRjMjlm
M2JiYzJkZTFmZWEzMjQ3ODk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHko
KQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlh
bChGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgVmVj
dG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYm
IG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBtX3dlYlBhZ2VQcm94eSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2Vi
UGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1vdmUoZnJhbWVJbmZvKSwgcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRsZXIp
KTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwg
bV93ZWJQYWdlUHJveHksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxl
LCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdl
SUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsK
IH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9u
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBWZWN0
b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiBv
cHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5k
bGVyJiYgaGFuZGxlcikKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Omdl
dEFzc2VydGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zJiYgb3B0aW9ucywgTWVkaWF0aW9uUmVxdWlyZW1lbnQgbWVkaWF0aW9uLCBib29sIHBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
IHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwg
bV93ZWJQYWdlUHJveHksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxl
LCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdl
SUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVx
dWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1fd2ViUGFnZVByb3h5LCBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFs
RnJhbWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSwg
V1RGTW92ZShmcmFtZUluZm8pLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBudWxs
cHRyLCBtZWRpYXRpb24gfSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25S
ZXF1ZXN0RGF0YSYmIGRhdGEsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCkBA
IC0xMDYsNiArMTA2LDExIEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsCiB7CiAgICAgaGFuZGxl
cihMb2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxlKCkpOwogfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5
Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIoZmFsc2UpOworfQog
I2VuZGlmIC8vICFIQVZFKFVOSUZJRURfQVNDX0FVVEhfVUkpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmgKaW5kZXggODY5NzFkYTdjODYwOGE4N2IwYmRmZThhMzY4NDk5MTE5OGM2MzQ4MS4uMzljODNj
Y2FiZmIwZmJkM2RiMmY2YWEyMGQxZWJlNTVjYjRhNzVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNjksOCArNzAsOSBAQCBwcml2YXRlOgogCiAgICAg
Ly8gUmVjZWl2ZXJzLgogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiwgYm9vbCBwcm9jZXNzaW5nVXNl
ckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGdldEFzc2Vy
dGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgVmVjdG9yPHVp
bnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
JiYsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgdm9pZCBnZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFt
ZUluZm9EYXRhJiYsIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmLCBXZWJDb3JlOjpDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50LCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
dm9pZCBpc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRs
ZXImJik7CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0
RGF0YSYmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggY2I5M2M4OWYyNDQ3MGYzOTlhMGIxOWIxZDMyOWU3N2E3Zjc1NmFmYS4uMWQ3NWE4ODFl
ZDVmNzMwNDFlN2Q0YzNhNWQ1OWIzMTNhNGJiZmM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAg
LTI3LDcgKzI3LDggQEAKIG1lc3NhZ2VzIC0+IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgTWFrZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
LCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+
IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmlu
dCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCi0gICAgR2V0QXNzZXJ0aW9uKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBk
YXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50
LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgR2V0
QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0
OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgZW51bTpp
bnQgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVu
dCBtZWRpYXRpb24sIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0
aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFi
bGUoKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlKCkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IGJlYzI2
YWQ4NDZmNGMzMGE3NzA2MzZlZmQ4NTY0MThmZTk3NjEzZDguLmIxYmEzZTQxM2RiNzMyZjkwNWM2
OGZhNzIwNDM0NmQ3ZGE2ODJjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNl
Y3VyCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlV2ViQXV0aG5Qcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1
dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TWFrZUNyZWRlbnRpYWwoaGFzaCwgb3B0aW9ucywg
aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJh
bWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RD
b21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgTWVkaWF0aW9uUmVxdWlyZW1lbnQgbWVkaWF0aW9u
LCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewogICAgIGF1dG8qIHdlYkZy
YW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogICAgIGlmICghd2ViRnJhbWUp
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRB
c3NlcnRpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1cml0CiAgICAgYm9vbCB1c2VX
ZWJBdXRoblByb2Nlc3MgPSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LndlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCgpOwogI2VuZGlmCiAgICAgaWYgKCF1c2VX
ZWJBdXRoblByb2Nlc3MpIHsKLSAgICAgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2VydGlvbih3
ZWJGcmFtZS0+ZnJhbWVJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBoYXNoLCBvcHRpb25zLCBpc1By
b2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxlcikpOworICAgICAgICBtX3dlYlBh
Z2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eTo6R2V0QXNzZXJ0aW9uKHdlYkZyYW1lLT5mcmFtZUlEKCksIHdlYkZyYW1lLT5pbmZv
KCksIGhhc2gsIG9wdGlvbnMsIG1lZGlhdGlvbiwgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBX
VEZNb3ZlKGhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA2LDYgKzEw
NiwxMSBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKGNv
bnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZVdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okdl
dEFzc2VydGlvbihoYXNoLCBvcHRpb25zLCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1v
dmUoaGFuZGxlcikpOwogfQogCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXND
b25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFu
ZGxlcikKK3sKKyAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWls
YWJsZSgpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK307CisKIHZvaWQgV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUo
UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAjaWYgSEFWRShVTklGSUVEX0FT
Q19BVVRIX1VJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
CmluZGV4IDVlMWM3ZGRmNTE4ZTk5Y2RhN2UwNjBkODA3YTA5ODI4NGVkMDRmNGQuLjI1OWM5ZTU2
MmMzOTNiMGU2M2ViYjc4ZTNmNzdjMjc5ZGE2OTcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTQxLDcgKzQxLDggQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICAvLyBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQKICAg
ICB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFdl
YkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucyYsIFdlYkNvcmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
KyAgICB2b2lkIGdldEFzc2VydGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpNZWRp
YXRpb25SZXF1aXJlbWVudCwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOworICAgIHZvaWQgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShXZWJDb3JlOjpR
dWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5Q29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CiAgICAgdm9pZCByZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1lbnQoKSBm
aW5hbCB7IG1fcmVxdWlyZVVzZXJHZXN0dXJlID0gZmFsc2U7IH0KIAo=
</data>
<flag name="commit-queue"
          id="479513"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452479</attachid>
            <date>2022-02-17 21:56:21 -0800</date>
            <delta_ts>2022-02-18 11:34:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236820-20220217215620.patch</filename>
            <type>text/plain</type>
            <size>54506</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU1MzU4ZDE1MDliNzEw
ZDAyYzQ4MjZiNzkyN2Y3OTM2ZjYyYThiNS4uMDhmOTdiM2Y1YjhkNzAxMzBmOWJlODIzMzJiMGI1
YzE2MDFhNjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE3ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
Zm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODIwCisgICAgICAgIHJkYXI6Ly84NDgyMTk0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBtZWRpYXRpb24sIGFzIGRlZmluZWQgaW4gdGhlCisg
ICAgICAgIGNyZWRlbnRpYWxzIG1hbmFnZW1lbnQgc3BlYzogaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3dlYmFwcHNlYy1jcmVkZW50aWFsLW1hbmFnZW1lbnQvI2RvbS1jcmVkZW50aWFsbWVkaWF0aW9u
cmVxdWlyZW1lbnQtY29uZGl0aW9uYWwKKworICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1h
bmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljQ3Jl
ZGVudGlhbDo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSk6CisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucy5pZGw6CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9D
cmVkZW50aWFsc0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0Nv
bnRhaW5lcjo6Z2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJs
ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAyMi0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIENsZWFuIHVwIC8gb3B0aW1pemUgY2FsbCBzaXRlcyBjb25zdHJ1Y3RpbmcgdmVjdG9ycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBjYzQ1YzhjNDg4YWZlYzc4NzcxOTY5ODgyZjE5YzczNWEwOGM2ODlmLi5hYWY5
ODU4NGNjOWI5MWFjMWFlMjU4Mjg0NjRlOGQxZWRjZDkwYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMxIEBACisyMDIyLTAyLTE3ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgZm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODIwCisgICAgICAg
IHJkYXI6Ly84NDgyMTk0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBtZWRpYXRp
b24sIGFzIGRlZmluZWQgaW4gdGhlCisgICAgICAgIGNyZWRlbnRpYWxzIG1hbmFnZW1lbnQgc3Bl
YzogaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jcmVkZW50aWFsLW1hbmFnZW1lbnQv
I2RvbS1jcmVkZW50aWFsbWVkaWF0aW9ucmVxdWlyZW1lbnQtY29uZGl0aW9uYWwKKworICAgICAg
ICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29uZmlndXJhdGlvbkFz
c2VydGlvblJlcXVlc3RDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6OmNvbnRleHRGb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzQ29uZGl0aW9u
YWxNZWRpYXRpb25BdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VD
cmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaDoKKwogMjAyMi0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIC8gb3B0aW1pemUgY2FsbCBzaXRlcyBjb25zdHJ1
Y3RpbmcgdmVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwCmluZGV4IGEyM2RmMTA3
ZjE2NWRmYjcxMTRjZTI5OGI1NDg4MGE3Yjc5Y2U2MmYuLmU0ZDYwYjBmMjdhZGVmYzU3NWY4YTkw
NzAzZmRkODViMDc3YjI0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5jcHAKQEAgLTI2
LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCYXNpY0NyZWRlbnRp
YWwuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIgorCiAjaWYgRU5B
QkxFKFdFQl9BVVRITikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNiArNTIsMTEgQEAg
U3RyaW5nIEJhc2ljQ3JlZGVudGlhbDo6dHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiB9CiAKK3ZvaWQgQmFzaWNDcmVkZW50aWFsOjppc0NvbmRpdGlvbmFsTWVkaWF0aW9u
QXZhaWxhYmxlKERvY3VtZW50JiBkb2N1bWVudCwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xl
YW4+JiYgcHJvbWlzZSkKK3sKKyAgICBkb2N1bWVudC5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcigpLmlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoV1RGTW92ZShwcm9taXNl
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaAppbmRleCAzYjhmMTQyMjJlYzRhYzVmNjcy
MTA3OTBhNWY5ZmE1NWQzZWNhYTE5Li41ZDdlNDQxMjM2NGU3ZTc0OGNkNjY1YjI5MDJlODI0MTU4
MGZiMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVi
bGljOgogICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAgICAgRGlzY292ZXJ5IGRpc2NvdmVyeSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzY292ZXJ5OyB9CiAKKyAgICBzdGF0aWMgdm9pZCBpc0NvbmRp
dGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKERvY3VtZW50JiwgRE9NUHJvbWlzZURlZmVycmVkPElE
TEJvb2xlYW4+JiYpOworCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkOwogICAgIFR5cGUgbV90
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdl
bWVudC9CYXNpY0NyZWRlbnRpYWwuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaWRsCmluZGV4IDQ5OTMxN2U3OGNlNzc0MTk4
NGM3NTYyYzAxZjVlZmQ5NGRkNTQzMGQuLjI0OTIyMjVjMDVhZTM1NDgzYjQ0Y2M5MWNmMmQ0Y2Qx
YWI3NTQ5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1h
bmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGwKQEAgLTMzLDQgKzMzLDYg
QEAKIF0gaW50ZXJmYWNlIEJhc2ljQ3JlZGVudGlhbCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFVTVlN0cmluZyBpZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CisK
KyAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBp
c0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKaW5kZXggODFjOTRlYWFmYTc1OWRkOGQyNjk1NTNhZTMx
OGI2OGY0MWZkZDU4My4uOWJmMzE4ODg4MWZhNDM1ODg1ZGNkZWY1MDIxMDk4MzM5YTZmZjM3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9D
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Ny
ZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCkBAIC0zNSw4ICsz
NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFib3J0U2lnbmFsOwogCitlbnVt
IGNsYXNzIE1lZGlhdGlvblJlcXVpcmVtZW50IHsgU2lsZW50LCBPcHRpb25hbCwgUmVxdWlyZWQs
IENvbmRpdGlvbmFsIH07CisKIHN0cnVjdCBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgewotICAg
IGVudW0gY2xhc3MgTWVkaWF0aW9uUmVxdWlyZW1lbnQgeyBTaWxlbnQsIE9wdGlvbmFsLCBSZXF1
aXJlZCB9OworICAgIHVzaW5nIE1lZGlhdGlvblJlcXVpcmVtZW50ID0gTWVkaWF0aW9uUmVxdWly
ZW1lbnQ7CiAKICAgICBNZWRpYXRpb25SZXF1aXJlbWVudCBtZWRpYXRpb247CiAgICAgUmVmUHRy
PEFib3J0U2lnbmFsPiBzaWduYWw7CkBAIC00NSw0ICs0NywxOSBAQCBzdHJ1Y3QgQ3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
OjpNZWRpYXRpb25SZXF1aXJlbWVudCwKKyAgICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudDo6U2lsZW50LAorICAgICAgICBXZWJDb3Jl
OjpDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50OjpPcHRpb25h
bCwKKyAgICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25S
ZXF1aXJlbWVudDo6UmVxdWlyZWQsCisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9uczo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ6OkNvbmRpdGlvbmFsCisgICAgPjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaWRsCmluZGV4IDkzYTBjZjE0
NzI4YWEyODY5ZTU4MDlmNTNlZmYxOTgyYjNhODdlYTkuLjdkYjU5ZDlhYjIxMmIxMTcxYWM4MWI2
YmM0NDQxYWQyYjhhODFiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucy5pZGwKQEAgLTI5LDcgKzI5LDggQEAKIF0gZW51bSBDcmVkZW50aWFsTWVkaWF0aW9u
UmVxdWlyZW1lbnQgewogICAgICJzaWxlbnQiLAogICAgICJvcHRpb25hbCIsCi0gICAgInJlcXVp
cmVkIgorICAgICJyZXF1aXJlZCIsCisgICAgImNvbmRpdGlvbmFsIgogfTsKIAogWwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50
aWFsc0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAppbmRleCBjMWFjNzBiZjY3MmM5MGEwNWM4
N2FhNDE5MzA1ZWQ1NWQzNmE3YzI5Li45NjA2MDhjYTEzNWY4YWM2OTU2ZmE5Y2YyM2YyM2E4OTU0
ZTQ4YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcApAQCAtOTgs
NyArOTgsNyBAQCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zJiYgb3B0aW9ucywgQ3JlZGVudGlhbFBybwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5k
aXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNLZXku
dmFsdWUoKSwgc2NvcGUoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlz
ZSkpOworICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCku
ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoKm1fZG9jdW1lbnQsIFdURk1vdmUob3B0aW9ucyks
IHNjb3BlKCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFp
bmVyOjpzdG9yZShjb25zdCBCYXNpY0NyZWRlbnRpYWwmLCBDcmVkZW50aWFsUHJvbWlzZSYmIHBy
b21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggNWQ0Nzc3YjhjMDNhMDkyZjcxOTFk
ZTQ0NDU0OGVhN2Y5YzZmM2M3Ni4uOTczNGY5Y2FlNDdhM2RhN2Y3NmE2MWNlNGMxNjU4NTljNmNl
ZGE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmVhdHVyZVBvbGljeS5oIgogI2luY2x1ZGUgIkpT
QmFzaWNDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiSlNDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMu
aCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlB1YmxpY0tl
eUNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zLmgiCkBAIC0xNzYsMTIgKzE3NywxMyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6Y3JlYXRlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAg
IG1fY2xpZW50LT5tYWtlQ3JlZGVudGlhbCgqZnJhbWUsIGNhbGxlck9yaWdpbiwgY2xpZW50RGF0
YUpzb25IYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYg
b3B0aW9ucywgV2ViQXV0aG46OlNjb3BlIHNjb3BlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJv
cnRTaWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3ZvaWQgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIHJlcXVlc3RPcHRpb25z
LCBXZWJBdXRobjo6U2NvcGUgc2NvcGUsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29u
c3QKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJu
YWw7CiAKICAgICBhdXRvJiBjYWxsZXJPcmlnaW4gPSBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigp
OwogICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBjb25zdCBhdXRvJiBv
cHRpb25zID0gcmVxdWVzdE9wdGlvbnMucHVibGljS2V5LnZhbHVlKCk7CiAgICAgQVNTRVJUKGZy
YW1lKTsKICAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3Jn
L1RSL3dlYmF1dGhuLyNjcmVhdGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAg
ICAvLyBTdGVwIDEsIDMsIDEzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIuCkBAIC0yMzAsNyAr
MjMyLDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVy
bmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERh
dGFKc29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92
ZShhYm9ydFNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikg
bXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUo
Y2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwg
PSBXVEZNb3ZlKHJlcXVlc3RPcHRpb25zLnNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhJiYgZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9u
RGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBh
Ym9ydFNpZ25hbC0+YWJvcnRlZCgpKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1
bWUKICAgICAgICAgcHJvbWlzZS5yZWplY3QoZXhjZXB0aW9uLnRvRXhjZXB0aW9uKCkpOwogICAg
IH07CiAgICAgLy8gQXN5bmMgb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBp
biB0aGUgbWVzc2VuZ2VyLgotICAgIG1fY2xpZW50LT5nZXRBc3NlcnRpb24oKmZyYW1lLCBjYWxs
ZXJPcmlnaW4sIGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykp
OworICAgIG1fY2xpZW50LT5nZXRBc3NlcnRpb24oKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVu
dERhdGFKc29uSGFzaCwgb3B0aW9ucywgcmVxdWVzdE9wdGlvbnMubWVkaWF0aW9uLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+JiYgcHJvbWlzZSkgY29uc3QKQEAgLTI2Niw2ICsyNjgsMjEgQEAgdm9pZCBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZShET00KICAgICBtX2NsaWVudC0+aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAor
Cit2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2
YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKSBjb25zdAor
eworICAgIGlmICghbV9jbGllbnQpICB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVyYXRpb24gYXJl
IGRpc3BhdGNoZWQgYW5kIGhhbmRsZWQgaW4gdGhlIG1lc3Nlbmdlci4KKyAgICBtX2NsaWVudC0+
aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpyZXNldFVzZXJHZXN0dXJl
UmVxdWlyZW1lbnQoKQogewogICAgIG1fY2xpZW50LT5yZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1l
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IGY0OTUwMzA4NmM5YWNjNzkxOTMzODdmNzZm
YjZhNWJlYTIwNzgwYWIuLjRkOWFiYTY4ZTg4ODMwNTA4OWJmZTE5MzBjMzUwOGNhZGY1M2ZlZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBEb2N1bWVudDsK
IAogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CiBzdHJ1Y3QgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOworc3RydWN0IENyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9uczsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURl
ZmVycmVkOwogCkBAIC01OCw4ICs1OSw5IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZSBmb2xsb3dp
bmcgbWV0aG9kcyBpbXBsZW1lbnQgc3RhdGljIG1ldGhvZHMgb2YgUHVibGljS2V5Q3JlZGVudGlh
bC4KICAgICB2b2lkIGNyZWF0ZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBXZWJBdXRobjo6U2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25h
bD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7Ci0gICAgdm9pZCBkaXNjb3ZlckZyb21F
eHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyYsIFdlYkF1dGhuOjpTY29wZSwgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBD
cmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2b2lkIGRpc2NvdmVyRnJvbUV4dGVybmFs
U291cmNlKGNvbnN0IERvY3VtZW50JiwgQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYsIFdlYkF1
dGhuOjpTY29wZSwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7CiAgICAgdm9pZCBpc1VzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+JiYpIGNvbnN0OworICAgIHZvaWQgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2
YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJikgY29uc3Q7CiAKICAgICB2
b2lkIHJlc2V0VXNlckdlc3R1cmVSZXF1aXJlbWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQuaAppbmRleCA2NDYxYWU5NjRmYWJkODIyZGZiMTAwODcwNTY4MWM2ZTQ1NTdiNDlj
Li43YzE3YzU4M2U4NWM4NjdlYmE3NzRiNzhjNTk2MGRhODIxZjY2NDUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIAogZW51bSBjbGFzcyBBdXRoZW50aWNhdG9yQXR0YWNobWVudDsK
K2VudW0gY2xhc3MgTWVkaWF0aW9uUmVxdWlyZW1lbnQ7CiAKIHN0cnVjdCBBdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7
CkBAIC00Niw3ICs0Nyw3IEBAIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnM7CiB1c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRvckF0dGFjaG1lbnQsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmJik+OwogdXNpbmcgUXVl
cnlDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiB7CitjbGFz
cyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Q2xpZW50KTsKIHB1YmxpYzoKQEAgLTU0LDcgKzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1
YWwgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSB7IH07Ci0gICAgdmlydHVh
bCB2b2lkIGdldEFzc2VydGlvbihjb25zdCBGcmFtZSYsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmLCBNZWRpYXRpb25SZXF1aXJlbWVudCwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIHsg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShRdWVy
eUNvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgaXNVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIm
JikgeyB9OwogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0VXNlckdlc3R1cmVSZXF1aXJlbWVudCgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDM4YjBiMGNmZjM0NGM3NzRlM2NmNTRjNmY3ODFjMDc1ODllZjA0OTcuLjhlZTdm
YThkODZjYzViOTFhMWYxM2YxOWFjMjdhZTcyMWEwYWJmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNzQsNyArMjM3NCw3
IEBACiAJCTc3QTE3QUE3MTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0ExN0FB
MzEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oICovOyB9OwogCQk3
N0Q1MTAwNDFFRDRGNzFFMDBEQTRDODcgLyogSlNDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RDUwRkZGMUVE
NEY3MEMwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovOyB9OwogCQk3
N0Q1MTAwNjFFRDRGNzI1MDBEQTRDODcgLyogSlNDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0Q1MEZGRDFF
RDRGNzBDMDBEQTRDODcgLyogSlNDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi87IH07Ci0J
CTc3RDUxMDBCMUVENUUyODgwMERBNEM4NyAvKiBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RDUwRkZCMUVE
NEYxNkMwMERBNEM4NyAvKiBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCAqLzsgfTsKKwkJNzdE
NTEwMEIxRUQ1RTI4ODAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdENTBGRkIxRUQ0RjE2
QzAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc3RDUxMDBEMUVENUUyOTUwMERBNEM4
NyAvKiBDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0FBRDY4NTFFQ0ZCRDM5MDBCRkEyRDEgLyogQ3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucy5oICovOyB9OwogCQk3N0Q1MTAxNzFFRDYwMjIyMDBEQTRDODcg
LyogQ3JlZGVudGlhbHNDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc3RDUxMDE2MUVENjAyMUIwMERBNEM4NyAvKiBDcmVkZW50aWFsc0Nv
bnRhaW5lci5oICovOyB9OwogCQk3N0Q1MTAxQzFFRDcyMkJGMDBEQTRDODcgLyogSlNDcmVkZW50
aWFsc0NvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzdENTEwMUIxRUQ3MjJCNTAwREE0Qzg3IC8qIEpTQ3JlZGVudGlhbHNDb250YWluZXIu
aCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1
dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Nw
aS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCmluZGV4IGQyMmFiMmNiN2Rh
NTM1Y2I1YTQyNTAwMWI4MzM3ZjVhZjU4NDI2ZGYuLjM3YWQzMWJiNmY0MTUzNjM2YzA0NjkwMDQ2
ZTdhMjVkZGIyODM0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0Nv
Y29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaApAQCAtMjI5
LDYgKzIyOSwxMSBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgQVNDQ3JlZGVudGlh
bFJlcXVlc3RUeXBlcykgewogCiBAZW5kCiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFT
Q3JlZGVudGlhbFJlcXVlc3RTdHlsZSkgeworICAgIEFTQ3JlZGVudGlhbFJlcXVlc3RTdHlsZU1v
ZGFsLAorICAgIEFTQ3JlZGVudGlhbFJlcXVlc3RTdHlsZUF1dG9GaWxsLAorfTsKKwogQGludGVy
ZmFjZSBBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQgOiBOU09iamVjdCA8TlNTZWN1cmVDb2Rp
bmc+CiAKIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOwpAQCAtMjQ1LDYgKzI1
MCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBBU0NDcmVkZW50aWFsUmVxdWVz
dFR5cGVzKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIEFTQ1B1Ymxp
Y0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zICpwbGF0Zm9ybUtleUNyZWRlbnRpYWxBc3Nl
cnRpb25PcHRpb25zOwogQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBBU0NQ
dWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9ucyAqc2VjdXJpdHlLZXlDcmVkZW50aWFs
QXNzZXJ0aW9uT3B0aW9uczsKIAorQHByb3BlcnR5IChub25hdG9taWMpIEFTQ3JlZGVudGlhbFJl
cXVlc3RTdHlsZSByZXF1ZXN0U3R5bGU7CisKIEBlbmQKIAogQHByb3RvY29sIEFTQ0NyZWRlbnRp
YWxQcm90b2NvbCA8TlNPYmplY3QsIE5TU2VjdXJlQ29kaW5nPgpAQCAtMzIwLDYgKzMyNyw4IEBA
IHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVz
KSB7CiAtICh2b2lkKXVzZXJTZWxlY3RlZExvZ2luQ2hvaWNlOihpZCA8QVNDTG9naW5DaG9pY2VQ
cm90b2NvbD4pbG9naW5DaG9pY2UgYXV0aGVudGljYXRlZENvbnRleHQ6KExBQ29udGV4dCAqKWNv
bnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9j
b2w+IF9OdWxsYWJsZSwgTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CiAK
IC0gKHZvaWQpcmVxdWVzdENvbXBsZXRlZFdpdGhDcmVkZW50aWFsOihudWxsYWJsZSBpZDxBU0ND
cmVkZW50aWFsUHJvdG9jb2w+KWNyZWRlbnRpYWwgZXJyb3I6KG51bGxhYmxlIE5TRXJyb3IgKill
cnJvcjsKKworLSAodm9pZClwZXJmb3JtQXV0b0ZpbGxBdXRob3JpemF0aW9uUmVxdWVzdHNGb3JD
b250ZXh0OihBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQgKiljb250ZXh0IHdpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gX051bGxhYmxl
IGNyZWRlbnRpYWwsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVy
OwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggY2EzMDQy
NDJmNzhkMWZhMGE5MTZhY2E4NzNjNzAyMmY4ODgxY2RkZi4uY2UwOTQ2NTg3Mzg1ZTkxODBkNmYz
ODBmYjIxZTQ2ODhjZWExMGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTgx
Miw3ICs4MTIsNyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvbgogICAgICAgICAgICAgaGFuZGxl
cihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6ZXhjZXB0
aW9uLmNvZGUgdXNlckluZm86QHsgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTogZXhjZXB0aW9u
Lm1lc3NhZ2UgfV0pOwogICAgICAgICB9KTsKICAgICB9OwotICAgIF9wYW5lbC0+aGFuZGxlUmVx
dWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRU
b0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0
OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3Rk
OjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJh
Y2spKTsKKyAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBbX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9wdGlv
bnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3Vs
dDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmco
KSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoY2FsbGJhY2spKTsKICNlbmRpZgog
fQogCkBAIC04MjYsNyArODI2LDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb24KICAgICAgICAg
ICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBj
b2RlOmV4Y2VwdGlvbi5jb2RlIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXk6
IGV4Y2VwdGlvbi5tZXNzYWdlIH1dKTsKICAgICAgICAgfSk7CiAgICAgfTsKLSAgICBfcGFuZWwt
PmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGNsaWVudERhdGFIYXNoKSwgW19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRp
b25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5n
KCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIF9wYW5lbC0+aGFuZGxlUmVx
dWVzdCh7IHZlY3RvckZyb21OU0RhdGEoY2xpZW50RGF0YUhhc2gpLCBbX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9u
c10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFp
bGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0
ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoY2FsbGJhY2spKTsKICNlbmRpZgogfQogCkBAIC04
NzYsNyArODc2LDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3AKICAgICAgICAgICAgIGhhbmRs
ZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOwogICAgICAgICB9KTsKICAgICB9OwotICAgIF9wYW5l
bC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxs
cHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBu
dWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RG
TW92ZShjYWxsYmFjaykpOworICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFz
aCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9u
c1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1
ZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAjZW5kaWYKIH0KIApAQCAtODkwLDcgKzg5MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7
CiAgICAgfTsKLSAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGNs
aWVudERhdGFIYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJl
cXVlc3RPcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9w
dCwgeyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgX3BhbmVsLT5oYW5kbGVSZXF1ZXN0KHsgdmVjdG9yRnJvbU5TRGF0YShjbGllbnREYXRhSGFz
aCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9u
c1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1
ZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQppbmRleCAxOWFiN2ExOGQyMmZmZTNjZWI2MmI5NjBk
OWExZTBiMDU5MmJmYzUzLi42NzgzNTljMjMxZDNiODc0NmMzNDMxZTgzODM1YzczNDFhMWE4MDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8QVND
Q3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29u
dGV4CiAgICAgcmV0dXJuIHJlcXVlc3RDb250ZXh0OwogfQogCi1zdGF0aWMgUmV0YWluUHRyPEFT
Q0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RD
b250ZXh0KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywg
VmVjdG9yPHVpbnQ4X3Q+IGhhc2gpCitzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1
ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgVmVjdG9yPHVpbnQ4X3Q+
IGhhc2gsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ+IG1lZGlh
dGlvbikKIHsKICAgICBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVzIHJlcXVlc3RUeXBlcyA9IEFT
Q0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVBsYXRmb3JtUHVibGljS2V5QXNzZXJ0aW9uIHwgQVNDQ3Jl
ZGVudGlhbFJlcXVlc3RUeXBlU2VjdXJpdHlLZXlQdWJsaWNLZXlBc3NlcnRpb247CiAKQEAgLTI2
MCw2ICsyNjAsOCBAQCBzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4
dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZQogCiAgICAgYXV0byByZXF1ZXN0
Q29udGV4dCA9IGFkb3B0TlMoW2FsbG9jQVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0SW5zdGFu
Y2UoKSBpbml0V2l0aFJlcXVlc3RUeXBlczpyZXF1ZXN0VHlwZXNdKTsKICAgICBbcmVxdWVzdENv
bnRleHQgc2V0UmVseWluZ1BhcnR5SWRlbnRpZmllcjpvcHRpb25zLnJwSWRdOworICAgIGlmICht
ZWRpYXRpb24gJiYgKm1lZGlhdGlvbiA9PSBNZWRpYXRpb25SZXF1aXJlbWVudDo6Q29uZGl0aW9u
YWwgJiYgW3JlcXVlc3RDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UmVx
dWVzdFN0eWxlOildKQorICAgICAgICByZXF1ZXN0Q29udGV4dC5nZXQoKS5yZXF1ZXN0U3R5bGUg
PSBBU0NyZWRlbnRpYWxSZXF1ZXN0U3R5bGVBdXRvRmlsbDsKIAogICAgIGlmIChyZXF1ZXN0VHlw
ZXMgJiBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbikg
ewogICAgICAgICBhdXRvIGFzc2VydGlvbk9wdGlvbnMgPSBhZG9wdE5TKGFsbG9jQVNDUHVibGlj
S2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpKTsKQEAgLTMwMCw3ICszMDIs
NyBAQCBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eTo6Y29udGV4dAogICAgIFdURjo6c3dpdGNoT24ocmVxdWVzdERh
dGEub3B0aW9ucywgWyZdKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
IG9wdGlvbnMpIHsKICAgICAgICAgcmVzdWx0ID0gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVz
dENvbnRleHQob3B0aW9ucywgcmVxdWVzdERhdGEuaGFzaCk7CiAgICAgfSwgWyZdKGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykgewotICAgICAgICByZXN1
bHQgPSBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQob3B0aW9ucywgcmVxdWVz
dERhdGEuaGFzaCk7CisgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1
ZXN0Q29udGV4dChvcHRpb25zLCByZXF1ZXN0RGF0YS5oYXNoLCByZXF1ZXN0RGF0YS5tZWRpYXRp
b24pOwogICAgIH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zMDksODUgKzMxMSwxMDAg
QEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cGVyZm9ybVJlcXVlc3Qo
UmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXEKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHROUyhb
YWxsb2NBU0NBZ2VudFByb3h5SW5zdGFuY2UoKSBpbml0XSk7CiAKKyAgICBhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oaWQg
PEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxl
ciksIGNyZWRlbnRpYWwgPSByZXRhaW5QdHIoY3JlZGVudGlhbCksIGVycm9yID0gcmV0YWluUHRy
KGVycm9yKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhIHJlc3BvbnNlID0geyB9OworICAgICAgICAgICAgQXV0aGVudGljYXRvckF0dGFjaG1lbnQg
YXR0YWNobWVudDsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uRGF0YSA9IHsg
fTsKKworICAgICAgICAgICAgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDUGxh
dGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKKyAgICAgICAg
ICAgICAgICBhdHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtOwor
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UgPSB0cnVlOworCisgICAgICAgICAgICAgICAgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50
aWFsUmVnaXN0cmF0aW9uICpyZWdpc3RyYXRpb25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQo
KTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0
cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOworICAgICAgICAgICAgICAgIHJlc3BvbnNl
LmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFs
LmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2NyZWRlbnRpYWwg
aXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3Ry
YXRpb25DbGFzcygpXSkgeworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNh
dG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5p
c0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0
cmF0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CisgICAgICAgICAgICAgICAgcmVz
cG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuY3JlZGVu
dGlhbElEKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCA9IHRv
QXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDUGxh
dGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uQ2xhc3MoKV0pIHsKKyAgICAgICAgICAg
ICAgICBhdHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtOworICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Ug
PSBmYWxzZTsKKworICAgICAgICAgICAgICAgIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlh
bEFzc2VydGlvbiAqYXNzZXJ0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CisgICAg
ICAgICAgICAgICAgcmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRl
bnRpYWwuY3JlZGVudGlhbElEKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5hdXRoZW50aWNh
dG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5hdXRoZW50aWNhdG9y
RGF0YSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2lnbmF0dXJlID0gdG9BcnJheUJ1ZmZl
cihhc3NlcnRpb25DcmVkZW50aWFsLnNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgcmVzcG9u
c2UudXNlckhhbmRsZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC51c2VySGFu
ZGxlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpn
ZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25DbGFzcygpXSkgewor
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jv
c3NQbGF0Zm9ybTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBBU0NTZWN1cml0eUtl
eVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVk
ZW50aWFsLmdldCgpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1
ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJRCk7CisgICAgICAgICAgICAgICAg
cmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRl
bnRpYWwuYXV0aGVudGljYXRvckRhdGEpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNpZ25h
dHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1cmUpOworICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLnVzZXJIYW5kbGUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlv
bkNyZWRlbnRpYWwudXNlckhhbmRsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnQgPSAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpIDA7CisgICAgICAg
ICAgICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOworICAgICAgICAgICAgICAgIE5T
U3RyaW5nICplcnJvck1lc3NhZ2UgPSBuaWw7CisgICAgICAgICAgICAgICAgaWYgKFtlcnJvci5n
ZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOldLRXJyb3JEb21haW5dKSB7CisgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbkNvZGUgPSB0b0V4Y2VwdGlvbkNvZGUoZXJyb3IuZ2V0KCkuY29k
ZSk7CisgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVycm9yLmdldCgpLnVzZXJJ
bmZvW05TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNvZGUgPSBOb3RBbGxvd2VkRXJyb3I7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKFtlcnJvci5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3Ry
aW5nOkFTQ0F1dGhvcml6YXRpb25FcnJvckRvbWFpbl0gJiYgZXJyb3IuZ2V0KCkuY29kZSA9PSBB
U0NBdXRob3JpemF0aW9uRXJyb3JVc2VyQ2FuY2VsZWQpCisgICAgICAgICAgICAgICAgICAgICAg
ICBlcnJvck1lc3NhZ2UgPSBAIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhl
IHVzZXIuIjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gQCJPcGVyYXRpb24gZmFpbGVkLiI7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgZXhjZXB0aW9uRGF0YSA9IHsgZXhjZXB0aW9uQ29kZSwgZXJy
b3JNZXNzYWdlIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGhhbmRsZXIocmVzcG9u
c2UsIGF0dGFjaG1lbnQsIGV4Y2VwdGlvbkRhdGEpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAg
ICAKKyAgICBpZiAoW3JlcXVlc3RDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
cmVxdWVzdFN0eWxlKV0gJiYgcmVxdWVzdENvbnRleHQuZ2V0KCkucmVxdWVzdFN0eWxlID09IEFT
Q3JlZGVudGlhbFJlcXVlc3RTdHlsZUF1dG9GaWxsKSB7CisgICAgICAgIFtwcm94eSBwZXJmb3Jt
QXV0b0ZpbGxBdXRob3JpemF0aW9uUmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0Lmdl
dCgpIHdpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3Byb3h5ID0gV1RGTW92ZShw
cm94eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGlk
IDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9yKTsK
KyAgICAgICAgfSkuZ2V0KCldOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogI2lmIFBM
QVRGT1JNKElPUykKLSAgICBbcHJveHkgcGVyZm9ybUF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNv
bnRleHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIHByb3h5ID0gV1RGTW92ZShwcm94eSld
KGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW2hhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBjcmVkZW50aWFsID0gcmV0YWluUHRyKGNy
ZWRlbnRpYWwpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUgeworICAgIFtw
cm94eSBwZXJmb3JtQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29udGV4
dC5nZXQoKSB3aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtwcm94eSA9IFdURk1v
dmUocHJveHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVkZW50aWFsLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9yKTsK
KyAgICB9KS5nZXQoKV07CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPE5TV2lu
ZG93PiB3aW5kb3cgPSBtX3dlYlBhZ2VQcm94eS5wbGF0Zm9ybVdpbmRvdygpOwotICAgIFtwcm94
eSBwZXJmb3JtQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29udGV4dC5n
ZXQoKSB3aXRoQ2xlYXJhbmNlSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCB3aW5kb3cgPSBXVEZNb3Zl
KHdpbmRvdyksIHByb3h5ID0gV1RGTW92ZShwcm94eSldKE5TWFBDTGlzdGVuZXJFbmRwb2ludCAq
ZGFlbW9uRW5kcG9pbnQsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgd2luZG93
ID0gV1RGTW92ZSh3aW5kb3cpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBkYWVtb25FbmRwb2lu
dCA9IHJldGFpblB0cihkYWVtb25FbmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0g
KCkgbXV0YWJsZSB7CisgICAgW3Byb3h5IHBlcmZvcm1BdXRob3JpemF0aW9uUmVxdWVzdHNGb3JD
b250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhDbGVhcmFuY2VIYW5kbGVyOm1ha2VCbG9j
a1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBwcm94
eSA9IFdURk1vdmUocHJveHkpXShOU1hQQ0xpc3RlbmVyRW5kcG9pbnQgKmRhZW1vbkVuZHBvaW50
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3
ZWFrVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
d2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBkYWVtb25F
bmRwb2ludCA9IHJldGFpblB0cihkYWVtb25FbmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVy
cm9yKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkYWVtb25F
bmRwb2ludCkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNvbm5lY3Qg
dG8gYXV0aG9yaXphdGlvbiBkYWVtb246ICVAXG4iLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25E
YXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJl
c2VudGVyID0gYWRvcHROUyhbYWxsb2NBU0NBdXRob3JpemF0aW9uUmVtb3RlUHJlc2VudGVySW5z
dGFuY2UoKSBpbml0XSk7Ci0gICAgICAgICAgICBbd2Vha1RoaXMtPm1fcHJlc2VudGVyIHByZXNl
bnRXaXRoV2luZG93OndpbmRvdy5nZXQoKSBkYWVtb25FbmRwb2ludDpkYWVtb25FbmRwb2ludC5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2hhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpLCBwcm94eSA9IFdURk1vdmUocHJveHkpXShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29s
PiBjcmVkZW50aWFsTm90UmV0YWluLCBOU0Vycm9yICplcnJvck5vdFJldGFpbikgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgYXV0byBjcmVkZW50aWFsID0gcmV0YWluUHRyKGNyZWRlbnRpYWxO
b3RSZXRhaW4pOwotICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSByZXRhaW5QdHIoZXJyb3JO
b3RSZXRhaW4pOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgQXV0aGVudGljYXRvclJlc3BvbnNl
RGF0YSByZXNwb25zZSA9IHsgfTsKLSAgICAgICAgICAgICAgICBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCBhdHRhY2htZW50OwotICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9u
RGF0YSA9IHsgfTsKLQotICAgICAgICAgICAgICAgIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNs
YXNzOmdldEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbkNsYXNzKCld
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudDo6UGxhdGZvcm07Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIEFT
Q1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0cmF0aW9uQ3Jl
ZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
LnJhd0lkID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJ
RCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9B
cnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVND
U2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpD
cm9zc1BsYXRmb3JtOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NT
ZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb24gKnJlZ2lzdHJhdGlvbkNy
ZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdldCgpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25z
ZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFs
SUQpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCA9IHRv
QXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNsYXNzOmdldEFT
Q1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbkNsYXNzKCldKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZv
cm07Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NQbGF0Zm9ybVB1
YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50
aWFsLmdldCgpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlC
dWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgICAg
ICAgICByZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9u
Q3JlZGVudGlhbC5hdXRoZW50aWNhdG9yRGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3Bv
bnNlLnNpZ25hdHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1
cmUpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9BcnJheUJ1
ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLnVzZXJIYW5kbGUpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1cml0eUtleVB1Ymxp
Y0tleUNyZWRlbnRpYWxBc3NlcnRpb25DbGFzcygpXSkgewotICAgICAgICAgICAgICAgICAgICBh
dHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm07Ci0gICAg
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NTZWN1cml0eUtleVB1YmxpY0tl
eUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdl
dCgpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIo
YXNzZXJ0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVu
dGlhbC5hdXRoZW50aWNhdG9yRGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNp
Z25hdHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1cmUpOwot
ICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9BcnJheUJ1ZmZlcihh
c3NlcnRpb25DcmVkZW50aWFsLnVzZXJIYW5kbGUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSAoQXV0aGVudGljYXRvckF0dGFjaG1l
bnQpIDA7Ci0gICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsK
LSAgICAgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IG5pbDsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKFtlcnJvci5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOldL
RXJyb3JEb21haW5dKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25Db2RlID0g
dG9FeGNlcHRpb25Db2RlKGVycm9yLmdldCgpLmNvZGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gZXJyb3IuZ2V0KCkudXNlckluZm9bTlNMb2NhbGl6ZWREZXNjcmlw
dGlvbktleV07Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25Db2RlID0gTm90QWxsb3dlZEVycm9yOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoW2Vycm9yLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6QVNDQXV0
aG9yaXphdGlvbkVycm9yRG9tYWluXSAmJiBlcnJvci5nZXQoKS5jb2RlID09IEFTQ0F1dGhvcml6
YXRpb25FcnJvclVzZXJDYW5jZWxlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
ck1lc3NhZ2UgPSBAIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIu
IjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvck1lc3NhZ2UgPSBAIk9wZXJhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRhdGEgPSB7IGV4Y2VwdGlv
bkNvZGUsIGVycm9yTWVzc2FnZSB9OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGhhbmRsZXIocmVzcG9uc2UsIGF0dGFjaG1lbnQsIGV4Y2VwdGlvbkRhdGEpOwotI2lmIFBM
QVRGT1JNKE1BQykKKyAgICAgICAgICAgIFt3ZWFrVGhpcy0+bV9wcmVzZW50ZXIgcHJlc2VudFdp
dGhXaW5kb3c6d2luZG93LmdldCgpIGRhZW1vbkVuZHBvaW50OmRhZW1vbkVuZHBvaW50LmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcHJveHkgPSBXVEZNb3ZlKHByb3h5KSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oaWQgPEFTQ0Ny
ZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9yKTsKICAg
ICAgICAgICAgIH0pLmdldCgpXTsKLSNlbmRpZgogICAgICAgICB9KTsKICAgICB9KS5nZXQoKV07
CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIoW2dldEFTQ1dlYktpdFNQSVN1
cHBvcnRDbGFzcygpIHNob3VsZFVzZUFsdGVybmF0ZUNyZWRlbnRpYWxTdG9yZV0pOwogfQogCiB2
b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKaW5kZXgg
MDgyMTc3ODE2ODgzNTEyNzhlMGNlODA4NDFiYmZjZjczNmYyNWQ5Yi4uYjgzOTY1MDRlMWM5NDMx
ZDRhZmUzMDY3MDdhODA5ZGY0NzNlYThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0aW9uUmVxdWVzdERhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwuaCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
cy5oPgpAQCAtNTYsNiArNTcsNyBAQCBzdHJ1Y3QgV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0
YSB7CiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmU7CiAgICAgU3RyaW5nIGNhY2hlZFBp
bjsgLy8gT25seSB1c2VkIHRvIGltcHJvdmUgTkZDIENsaWVudCBQSU4gZXhwZXJpZW5jZS4KICAg
ICBXZWFrUHRyPEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbD4gd2Vha1BhbmVsOworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ+IG1lZGlhdGlvbjsKIH07
CiAKIFdlYkNvcmU6OkNsaWVudERhdGFUeXBlIGdldENsaWVudERhdGFUeXBlKGNvbnN0IHN0ZDo6
dmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLCBXZWJD
b3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYjExYzU4
OTUzMjliZDI1ZGVmODI5YTQxYTExYzE1MjYwNzRjZGNjNy4uZjU5ZTk0YTk1NjlmNWU4MTRjMjlm
M2JiYzJkZTFmZWEzMjQ3ODk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHko
KQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlh
bChGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgVmVj
dG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYm
IG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBtX3dlYlBhZ2VQcm94eSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2Vi
UGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1vdmUoZnJhbWVJbmZvKSwgcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRsZXIp
KTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwg
bV93ZWJQYWdlUHJveHksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxl
LCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdl
SUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsK
IH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9u
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBWZWN0
b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiBv
cHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5k
bGVyJiYgaGFuZGxlcikKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Omdl
dEFzc2VydGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zJiYgb3B0aW9ucywgTWVkaWF0aW9uUmVxdWlyZW1lbnQgbWVkaWF0aW9uLCBib29sIHBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
IHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwg
bV93ZWJQYWdlUHJveHksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxl
LCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdl
SUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVx
dWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1fd2ViUGFnZVByb3h5LCBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFs
RnJhbWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSwg
V1RGTW92ZShmcmFtZUluZm8pLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBudWxs
cHRyLCBtZWRpYXRpb24gfSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25S
ZXF1ZXN0RGF0YSYmIGRhdGEsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCkBA
IC0xMDYsNiArMTA2LDExIEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsCiB7CiAgICAgaGFuZGxl
cihMb2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxlKCkpOwogfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5
Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIoZmFsc2UpOworfQog
I2VuZGlmIC8vICFIQVZFKFVOSUZJRURfQVNDX0FVVEhfVUkpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmgKaW5kZXggODY5NzFkYTdjODYwOGE4N2IwYmRmZThhMzY4NDk5MTE5OGM2MzQ4MS4uMzljODNj
Y2FiZmIwZmJkM2RiMmY2YWEyMGQxZWJlNTVjYjRhNzVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNjksOCArNzAsOSBAQCBwcml2YXRlOgogCiAgICAg
Ly8gUmVjZWl2ZXJzLgogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiwgYm9vbCBwcm9jZXNzaW5nVXNl
ckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGdldEFzc2Vy
dGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgVmVjdG9yPHVp
bnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
JiYsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgdm9pZCBnZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFt
ZUluZm9EYXRhJiYsIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmLCBXZWJDb3JlOjpDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50LCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
dm9pZCBpc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRs
ZXImJik7CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0
RGF0YSYmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggY2I5M2M4OWYyNDQ3MGYzOTlhMGIxOWIxZDMyOWU3N2E3Zjc1NmFmYS4uMWQ3NWE4ODFl
ZDVmNzMwNDFlN2Q0YzNhNWQ1OWIzMTNhNGJiZmM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAg
LTI3LDcgKzI3LDggQEAKIG1lc3NhZ2VzIC0+IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgTWFrZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
LCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+
IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmlu
dCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCi0gICAgR2V0QXNzZXJ0aW9uKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBk
YXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50
LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgR2V0
QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0
OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgZW51bTpp
bnQgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVu
dCBtZWRpYXRpb24sIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0
aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFi
bGUoKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlKCkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5D
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAxNzIxZThiZWE1NDBiNjgxOGFhYjE0Njk2
OTgzYzA3MmFmMjhhZjM5Li4xODJlNmUzZDMyOGM5YWViZjlkNmFiYjc2NDVmM2FhZWE3YzUwMTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNz
L1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTk2LDEyICs5NiwxMiBAQCBi
b29sIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lYwogCiB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6bWFrZUNyZWRlbnRpYWwoVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0
dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJl
cXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBudWxscHRyLCBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0
LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92
ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUo
b3B0aW9ucyksIG51bGxwdHIsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxh
YmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBT
dHJpbmcoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQog
Ci12b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0QXNzZXJ0aW9uKFZlY3Rv
cjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIG9w
dGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldEFz
c2VydGlvbihWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMmJiBvcHRpb25zLCBNZWRpYXRpb25SZXF1aXJlbWVudCBtZWRpYXRpb24sIGJvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVy
KQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMp
LCBudWxscHRyLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVs
bHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCks
IG51bGxwdHIgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdURk1v
dmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIsIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgcHJvY2Vz
c2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdURk1v
dmUoaGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYgZGF0YSwgUmVxdWVz
dENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKQEAgLTEyMiw2ICsxMjIsMTEgQEAgdm9pZCBX
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWIKICAgICBoYW5kbGVyKExvY2FsU2VydmljZTo6aXNBdmFpbGFibGUo
KSk7CiB9CiAKK3ZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjppc0NvbmRpdGlv
bmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQor
eworICAgIGhhbmRsZXIoTG9jYWxTZXJ2aWNlOjppc0F2YWlsYWJsZSgpKTsKK30KKwogdm9pZCBX
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYm
IGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgbV9XZWJBdXRoblByb2Nlc3MtPnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGVjNzU3NjMzNjY2YmJmYjY4ZmM0OWQwNTNkOWJjYmFk
N2IzZjc3ZDguLjRmZDVlYjAyY2E5NDI0MWJiOGVkYzZiYWIxZTY4ZGUxM2VmOGI1NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhu
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGVudW0gY2xhc3MgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ7CitlbnVtIGNsYXNz
IE1lZGlhdGlvblJlcXVpcmVtZW50Owogc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE7
CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOwpAQCAtNzgsOCArNzksOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUmVjZWl2ZXJz
LgogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmLCBib29sIHByb2Nlc3NpbmdV
c2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZ2V0QXNz
ZXJ0aW9uKFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyYmLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENv
bXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKFZlY3Rvcjx1aW50OF90
PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmLCBX
ZWJDb3JlOjpNZWRpYXRpb25SZXF1aXJlbWVudCwgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpOwor
ICAgIHZvaWQgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25I
YW5kbGVyJiYpOwogICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bihXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOwogCiAgICAg
dm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiwgUmVxdWVz
dENvbXBsZXRpb25IYW5kbGVyJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRo
blByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IGU5OGQwYTYyODUyNGE5MDAzMGFjM2IzNDdjNDYyNTUwZmI5NDNm
N2EuLjk1MjM0MGM0ZGZjZjk0YjA4NjU4OGM2Njc2NGEyMGMwYmU0MDZjZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJB
dXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDggQEAK
IG1lc3NhZ2VzIC0+IFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNo
TWVzc2FnZSB7CiAKICAgICBNYWtlQ3JlZGVudGlhbChWZWN0b3I8dWludDhfdD4gaGFzaCwgc3Ry
dWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucywg
Ym9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0
YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRp
b24pIEFzeW5jCi0gICAgR2V0QXNzZXJ0aW9uKFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1l
bnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBB
c3luYworICAgIEdldEFzc2VydGlvbihWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zLCBXZWJDb3JlOjpD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50IG1lZGlhdGlvbiwg
Ym9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0
YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRp
b24pIEFzeW5jCisgICAgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSgpIC0+IChib29s
IHJlc3VsdCkgQXN5bmMKICAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JB
dmFpbGFibGUoKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKICAgICBTZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRleCBiZWMyNmFkODQ2ZjRjMzBhNzcwNjM2ZWZk
ODU2NDE4ZmU5NzYxM2Q4Li5lYThmYzQwYzE1YTQ1YjBlYmY5ZDg3NzAxOTc4MmU2NDMwNWYxODk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApA
QCAtODQsNyArODQsNyBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNy
ZWRlbnRpYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1cgogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZVdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6Ok1ha2VDcmVkZW50aWFsKGhhc2gsIG9wdGlvbnMsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1cml0eU9y
aWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBo
YW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihj
b25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9w
dGlvbnMsIE1lZGlhdGlvblJlcXVpcmVtZW50IG1lZGlhdGlvbiwgUmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyJiYgaGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9t
Q29yZUZyYW1lKGZyYW1lKTsKICAgICBpZiAoIXdlYkZyYW1lKQpAQCAtOTcsMTUgKzk3LDIwIEBA
IHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBTZWN1cml0CiAgICAgYm9vbCB1c2VXZWJBdXRoblByb2Nlc3MgPSBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkF1dGhlbnRpY2F0aW9u
TW9kZXJuRW5hYmxlZCgpOwogI2VuZGlmCiAgICAgaWYgKCF1c2VXZWJBdXRoblByb2Nlc3MpIHsK
LSAgICAgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2VydGlvbih3ZWJGcmFtZS0+ZnJhbWVJRCgp
LCB3ZWJGcmFtZS0+aW5mbygpLCBoYXNoLCBvcHRpb25zLCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVy
ZSksIFdURk1vdmUoaGFuZGxlcikpOworICAgICAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6R2V0QXNzZXJ0
aW9uKHdlYkZyYW1lLT5mcmFtZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIGhhc2gsIG9wdGlvbnMs
IG1lZGlhdGlvbiwgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghaXNXZWJCcm93c2VyKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVXZWJBdXRoblBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRBc3NlcnRpb24oaGFzaCwgb3B0
aW9ucywgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aG5Db25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpHZXRBc3NlcnRpb24oaGFzaCwgb3B0aW9ucywgbWVkaWF0aW9uLCBp
c1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxlcikpOwogfQogCit2b2lkIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJs
ZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBtX3dlYlBhZ2Uuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eTo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSgpLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
K307CisKIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQ
bGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCiB7CiAjaWYgSEFWRShVTklGSUVEX0FTQ19BVVRIX1VJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IDVlMWM3ZGRmNTE4ZTk5Y2RhN2Uw
NjBkODA3YTA5ODI4NGVkMDRmNGQuLjI1OWM5ZTU2MmMzOTNiMGU2M2ViYjc4ZTNmNzdjMjc5ZGE2
OTcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgK
QEAgLTQxLDcgKzQxLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQKICAgICB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0
IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkNvcmU6OlJlcXVl
c3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGdldEFzc2VydGlvbihjb25z
dCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpNZWRpYXRpb25SZXF1aXJlbWVudCwgV2ViQ29yZTo6
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgaXNDb25kaXRpb25h
bE1lZGlhdGlvbkF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxh
YmxlKFdlYkNvcmU6OlF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBy
ZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1lbnQoKSBmaW5hbCB7IG1fcmVxdWlyZVVzZXJHZXN0dXJl
ID0gZmFsc2U7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452551</attachid>
            <date>2022-02-18 11:34:51 -0800</date>
            <delta_ts>2022-02-18 11:56:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236820-20220218113450.patch</filename>
            <type>text/plain</type>
            <size>49084</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTliZTFmYWY2Zjg0OGVk
MTE2YzgxY2FmMmVjNGQzNjA5OGM4M2U0MC4uOGMyNmVjMzYyYTNkYjRjOTQ0M2UyMTE2NDY2Mjg1
MzI3YmQyMjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE4ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
Zm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODIwCisgICAgICAgIHJkYXI6Ly84NDgyMTk0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBtZWRpYXRpb24sIGFzIGRlZmluZWQgaW4gdGhlCisg
ICAgICAgIGNyZWRlbnRpYWxzIG1hbmFnZW1lbnQgc3BlYzogaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3dlYmFwcHNlYy1jcmVkZW50aWFsLW1hbmFnZW1lbnQvI2RvbS1jcmVkZW50aWFsbWVkaWF0aW9u
cmVxdWlyZW1lbnQtY29uZGl0aW9uYWwKKworICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1h
bmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljQ3Jl
ZGVudGlhbDo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSk6CisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucy5pZGw6CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9D
cmVkZW50aWFsc0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0Nv
bnRhaW5lcjo6Z2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJs
ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAyMi0wMi0xOCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtDTWFrZV0gQ2Fubm90IGZpbmQgT3BlbkdMIHdoZW4gc3lzdGVtIHBy
b3ZpZGVzIG9wZW5nbC5wYyBpbnN0ZWFkIG9mIGdsLnBjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY4ZDZiZGUxNjNl
ZmYxNDQwMTA4YmE1YmMzYjA1YTU2MjkwMGI0ZTIuLmVkYzAxODg0OGRlMmFjMTVhMzA5MWFkYzQz
ZDc1Y2Y2NjAxMWU5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDItMTggIEog
UGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gU3VwcG9y
dCBmb3IgY29uZGl0aW9uYWwgbWVkaWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4MjAKKyAgICAgICAgcmRhcjovLzg0ODIxOTQ3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIHN1cHBvcnQgZm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbiwgYXMgZGVmaW5lZCBpbiB0aGUK
KyAgICAgICAgY3JlZGVudGlhbHMgbWFuYWdlbWVudCBzcGVjOiBodHRwczovL3czYy5naXRodWIu
aW8vd2ViYXBwc2VjLWNyZWRlbnRpYWwtbWFuYWdlbWVudC8jZG9tLWNyZWRlbnRpYWxtZWRpYXRp
b25yZXF1aXJlbWVudC1jb25kaXRpb25hbAorCisgICAgICAgICogUGxhdGZvcm0vc3BpL0NvY29h
L0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0Ojpjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Y29u
dGV4dEZvclJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
UmVxdWVzdERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzQ29u
ZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorCiAy
MDIyLTAyLTE4ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0NNYWtlXSBDYW5ub3QgZmluZCBPcGVuR0wgd2hlbiBzeXN0ZW0gcHJvdmlkZXMg
b3BlbmdsLnBjIGluc3RlYWQgb2YgZ2wucGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcApp
bmRleCBhMjNkZjEwN2YxNjVkZmI3MTE0Y2UyOThiNTQ4ODBhN2I3OWNlNjJmLi41ODk0ZGU4NWY3
Y2E4YzI2NmI2NmM1N2RjZWRkMWQ1YTUwMzg4NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRp
YWwuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
QmFzaWNDcmVkZW50aWFsLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aCIKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUw
LDYgKzUyLDE0IEBAIFN0cmluZyBCYXNpY0NyZWRlbnRpYWw6OnR5cGUoKSBjb25zdAogICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogfQogCit2b2lkIEJhc2ljQ3JlZGVudGlhbDo6aXNDb25kaXRp
b25hbE1lZGlhdGlvbkF2YWlsYWJsZShEb2N1bWVudCYgZG9jdW1lbnQsIERPTVByb21pc2VEZWZl
cnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCit7CisgICAgYXV0byogcGFnZSA9IGRvY3VtZW50
LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5hdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5pc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFdU
Rk1vdmUocHJvbWlzZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmgKaW5kZXggM2I4ZjE0
MjIyZWM0YWM1ZjY3MjEwNzkwYTVmOWZhNTVkM2VjYWExOS4uNWQ3ZTQ0MTIzNjRlN2U3NDhjZDY2
NWIyOTAyZTgyNDE1ODBmYjFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oCkBAIC01Myw2
ICs1Myw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0OwogICAgIERpc2NvdmVy
eSBkaXNjb3ZlcnkoKSBjb25zdCB7IHJldHVybiBtX2Rpc2NvdmVyeTsgfQogCisgICAgc3RhdGlj
IHZvaWQgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShEb2N1bWVudCYsIERPTVByb21p
c2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pZDsK
ICAgICBUeXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmlkbAppbmRleCA0OTkz
MTdlNzhjZTc3NDE5ODRjNzU2MmMwMWY1ZWZkOTRkZDU0MzBkLi4yNDkyMjI1YzA1YWUzNTQ4M2I0
NGNjOTFjZjJkNGNkMWFiNzU0OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaWRsCkBA
IC0zMyw0ICszMyw2IEBACiBdIGludGVyZmFjZSBCYXNpY0NyZWRlbnRpYWwgewogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyB0eXBlOworCisgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVudF0gc3RhdGljIFByb21p
c2U8Ym9vbGVhbj4gaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSgpOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxt
YW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCmluZGV4IDgxYzk0ZWFhZmE3NTlk
ZDhkMjY5NTUzYWUzMThiNjhmNDFmZGQ1ODMuLmI2Y2Y0MTYwNTk2ZjQ2Mzc2YmY0ZTY4OWIxMGM1
NDEwNzY1Y2MxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlh
bG1hbmFnZW1lbnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMu
aApAQCAtMzUsOCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBYm9ydFNp
Z25hbDsKIAorZW51bSBjbGFzcyBNZWRpYXRpb25SZXF1aXJlbWVudCA6IHVpbnQ4X3QgeyBTaWxl
bnQsIE9wdGlvbmFsLCBSZXF1aXJlZCwgQ29uZGl0aW9uYWwgfTsKKwogc3RydWN0IENyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyB7Ci0gICAgZW51bSBjbGFzcyBNZWRpYXRpb25SZXF1aXJlbWVudCB7
IFNpbGVudCwgT3B0aW9uYWwsIFJlcXVpcmVkIH07CisgICAgdXNpbmcgTWVkaWF0aW9uUmVxdWly
ZW1lbnQgPSBNZWRpYXRpb25SZXF1aXJlbWVudDsKIAogICAgIE1lZGlhdGlvblJlcXVpcmVtZW50
IG1lZGlhdGlvbjsKICAgICBSZWZQdHI8QWJvcnRTaWduYWw+IHNpZ25hbDsKQEAgLTQ1LDQgKzQ3
LDE5IEBAIHN0cnVjdCBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgewogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6TWVkaWF0aW9uUmVxdWlyZW1l
bnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50LAorICAgICAgICBX
ZWJDb3JlOjpDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50OjpT
aWxlbnQsCisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6TWVkaWF0
aW9uUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsLAorICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50OjpSZXF1aXJlZCwKKyAgICAgICAgV2Vi
Q29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudDo6Q29u
ZGl0aW9uYWwKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKwogI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Ny
ZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucy5pZGwKaW5kZXggOTNhMGNmMTQ3MjhhYTI4NjllNTgwOWY1M2VmZjE5ODJiM2E4N2VhOS4u
N2RiNTlkOWFiMjEyYjExNzFhYzgxYjZiYzQ0NDFhZDJiOGE4MWI5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbApAQCAtMjksNyArMjksOCBAQAogXSBl
bnVtIENyZWRlbnRpYWxNZWRpYXRpb25SZXF1aXJlbWVudCB7CiAgICAgInNpbGVudCIsCiAgICAg
Im9wdGlvbmFsIiwKLSAgICAicmVxdWlyZWQiCisgICAgInJlcXVpcmVkIiwKKyAgICAiY29uZGl0
aW9uYWwiCiB9OwogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRl
bnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwCmlu
ZGV4IGMxYWM3MGJmNjcyYzkwYTA1Yzg3YWE0MTkzMDVlZDU1ZDM2YTdjMjkuLjk2MDYwOGNhMTM1
ZjhhYzY5NTZmYTljZjIzZjIzYTg5NTRlNDhhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlh
bHNDb250YWluZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgQ3JlZGVudGlhbHNDb250YWlu
ZXI6OmdldChDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBDcmVkZW50aWFsUHJv
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcigpLmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKCptX2RvY3Vt
ZW50LCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBzY29wZSgpLCBXVEZNb3ZlKG9wdGlvbnMu
c2lnbmFsKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5kaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSgqbV9kb2N1
bWVudCwgV1RGTW92ZShvcHRpb25zKSwgc2NvcGUoKSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAK
IHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6OnN0b3JlKGNvbnN0IEJhc2ljQ3JlZGVudGlhbCYs
IENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRl
eCA1ZDQ3NzdiOGMwM2EwOTJmNzE5MWRlNDQ0NTQ4ZWE3ZjljNmYzYzc2Li41NDk2NWZmMmVhZWNl
YWU3ZWM4ODcwMGVjNjJmMTQzNzljN2ZkYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGZWF0dXJl
UG9saWN5LmgiCiAjaW5jbHVkZSAiSlNCYXNpY0NyZWRlbnRpYWwuaCIKKyNpbmNsdWRlICJKU0Ny
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCIKQEAgLTE3NiwxMiArMTc3LDEzIEBAIHZvaWQg
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBQdWJsaWNLZXlDCiAgICAgbV9jbGllbnQtPm1ha2VDcmVkZW50aWFsKCpmcmFtZSwg
Y2FsbGVyT3JpZ2luLCBjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY2FsbGJh
Y2spKTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4
dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBXZWJBdXRobjo6U2NvcGUgc2NvcGUsIFJl
ZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9t
aXNlKSBjb25zdAordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4
dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgQ3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zJiYgcmVxdWVzdE9wdGlvbnMsIFdlYkF1dGhuOjpTY29wZSBzY29wZSwgQ3JlZGVudGlh
bFByb21pc2UmJiBwcm9taXNlKSBjb25zdAogewogICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDsKIAogICAgIGF1dG8mIGNhbGxlck9yaWdpbiA9IGRv
Y3VtZW50LnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFt
ZSgpOworICAgIGNvbnN0IGF1dG8mIG9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucy5wdWJsaWNLZXku
dmFsdWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVt
ZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNyZWRlbnRpYWwgYXMg
b2YgNSBEZWNlbWJlciAyMDE3LgogICAgIC8vIFN0ZXAgMSwgMywgMTMgYXJlIGhhbmRsZWQgYnkg
dGhlIGNhbGxlci4KQEAgLTIzMCw3ICsyMzIsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRh
SnNvbiA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgYWJvcnRTaWduYWwgPSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKEF1dGhlbnRpY2F0b3JSZXNw
b25zZURhdGEmJiBkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBFeGNl
cHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2Ns
aWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUocmVxdWVzdE9wdGlvbnMuc2lnbmFsKV0g
KEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dCBhdHRhY2htZW50LCBFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLT5hYm9ydGVkKCkpIHsKICAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5IEFi
b3J0U2lnbmFsLiJfcyB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0NSw3ICsyNDcsNyBA
QCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3Vy
Y2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQogICAgICAgICBwcm9taXNlLnJlamVjdChleGNlcHRp
b24udG9FeGNlcHRpb24oKSk7CiAgICAgfTsKICAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBk
aXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAgbV9jbGllbnQtPmdl
dEFzc2VydGlvbigqZnJhbWUsIGNhbGxlck9yaWdpbiwgY2xpZW50RGF0YUpzb25IYXNoLCBvcHRp
b25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jbGllbnQtPmdldEFzc2VydGlvbigqZnJh
bWUsIGNhbGxlck9yaWdpbiwgY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25zLCByZXF1ZXN0T3B0
aW9ucy5tZWRpYXRpb24sIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKSBjb25zdApAQCAt
MjY2LDYgKzI2OCwyMSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTQogICAgIG1fY2xpZW50LT5p
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCisKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpp
c0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29s
ZWFuPiYmIHByb21pc2UpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NsaWVudCkgIHsKKyAgICAgICAg
cHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5h
bCBlcnJvci4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBwcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9OworICAg
IC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQgYW5kIGhhbmRsZWQgaW4gdGhlIG1l
c3Nlbmdlci4KKyAgICBtX2NsaWVudC0+aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpyZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1lbnQoKQogewogICAgIG1fY2xpZW50LT5y
ZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IGY0
OTUwMzA4NmM5YWNjNzkxOTMzODdmNzZmYjZhNWJlYTIwNzgwYWIuLjRkOWFiYTY4ZTg4ODMwNTA4
OWJmZTE5MzBjMzUwOGNhZGY1M2ZlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtNDQsNiAr
NDQsNyBAQCBjbGFzcyBEb2N1bWVudDsKIAogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnM7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwor
c3RydWN0IENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURM
VHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwogCkBAIC01OCw4ICs1OSw5IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgc3RhdGljIG1ldGhv
ZHMgb2YgUHVibGljS2V5Q3JlZGVudGlhbC4KICAgICB2b2lkIGNyZWF0ZShjb25zdCBEb2N1bWVu
dCYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBXZWJBdXRobjo6
U2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7
Ci0gICAgdm9pZCBkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkF1dGhuOjpTY29wZSwg
UmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2
b2lkIGRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiwgQ3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zJiYsIFdlYkF1dGhuOjpTY29wZSwgQ3JlZGVudGlhbFByb21pc2UmJikg
Y29uc3Q7CiAgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFp
bGFibGUoRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpIGNvbnN0OworICAgIHZvaWQg
aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9v
bGVhbj4mJikgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0VXNlckdlc3R1cmVSZXF1aXJlbWVudCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaAppbmRleCA2NDYxYWU5NjRmYWJkODIy
ZGZiMTAwODcwNTY4MWM2ZTQ1NTdiNDljLi4zYmI2NWE4NmI4ZjMzZGNiMzYyNDZiODljZWZkOTZh
ZGIyN2I5M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4
LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogZW51bSBjbGFzcyBB
dXRoZW50aWNhdG9yQXR0YWNobWVudDsKK2VudW0gY2xhc3MgTWVkaWF0aW9uUmVxdWlyZW1lbnQg
OiB1aW50OF90OwogCiBzdHJ1Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTsKIHN0cnVjdCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOwpAQCAtNDYsMTYgKzQ3LDE3IEBAIHN0
cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiB1c2luZyBSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGEmJiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQsIFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmJik+OwogdXNpbmcgUXVlcnlDb21wbGV0aW9uSGFuZGxlciA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiB7CitjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KTsKIHB1YmxpYzoKICAg
ICBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVh
bCB+QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmly
dHVhbCB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0IEZyYW1lJiwgY29uc3QgU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgeyB9OwotICAgIHZpcnR1YWwg
dm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlD
b21wbGV0aW9uSGFuZGxlciYmKSB7IH07CisgICAgdmlydHVhbCB2b2lkIG1ha2VDcmVkZW50aWFs
KGNvbnN0IEZyYW1lJiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgUmVxdWVzdENv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QXNzZXJ0aW9uKGNv
bnN0IEZyYW1lJiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBNZWRpYXRpb25SZXF1
aXJlbWVudCwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50
aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHJlc2V0VXNlckdlc3R1cmVSZXF1aXJlbWVudCgpIHsgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMGUy
NDFlNzEyNTBjMTVhNTdmZjRlYzQ3NzdhY2M0ZDI5ODVlMTBjLi43NDEwNzYyMDEwNTNlZjc1N2Iz
MzdmMDJiZjVjZmJhOWE2ZTQ0ZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzc0LDcgKzIzNzQsNyBAQAogCQk3N0ExN0FB
NzEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdBMTdBQTMxMkYyOEIyQTAwNEUw
MkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuaCAqLzsgfTsKIAkJNzdENTEwMDQxRUQ0Rjcx
RTAwREE0Qzg3IC8qIEpTQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0Q1MEZGRjFFRDRGNzBDMDBEQTRDODcg
LyogSlNDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCAqLzsgfTsKIAkJNzdENTEwMDYxRUQ0Rjcy
NTAwREE0Qzg3IC8qIEpTQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdENTBGRkQxRUQ0RjcwQzAwREE0Qzg3
IC8qIEpTQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oICovOyB9OwotCQk3N0Q1MTAwQjFFRDVF
Mjg4MDBEQTRDODcgLyogQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0Q1MEZGQjFFRDRGMTZDMDBEQTRDODcg
LyogQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggKi87IH07CisJCTc3RDUxMDBCMUVENUUyODgw
MERBNEM4NyAvKiBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RDUwRkZCMUVENEYxNkMwMERBNEM4NyAvKiBD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3N0Q1MTAwRDFFRDVFMjk1MDBEQTRDODcgLyogQ3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzdBQUQ2ODUxRUNGQkQzOTAwQkZBMkQxIC8qIENyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaCAqLzsgfTsKIAkJNzdENTEwMTcxRUQ2MDIyMjAwREE0Qzg3IC8qIENyZWRlbnRpYWxz
Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3N0Q1MTAxNjFFRDYwMjFCMDBEQTRDODcgLyogQ3JlZGVudGlhbHNDb250YWluZXIuaCAqLzsg
fTsKIAkJNzdENTEwMUMxRUQ3MjJCRjAwREE0Qzg3IC8qIEpTQ3JlZGVudGlhbHNDb250YWluZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RDUxMDFC
MUVENzIyQjUwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxzQ29udGFpbmVyLmggKi87IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNl
cnZpY2VzQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVu
dGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaAppbmRleCBkMjJhYjJjYjdkYTUzNWNiNWE0MjUwMDFi
ODMzN2Y1YWY1ODQyNmRmLi4zN2FkMzFiYjZmNDE1MzYzNmMwNDY5MDA0NmU3YTI1ZGRiMjgzNDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNh
dGlvblNlcnZpY2VzQ29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0Nv
Y29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKQEAgLTIyOSw2ICsyMjksMTEgQEAg
dHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZXMp
IHsKIAogQGVuZAogCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBU0NyZWRlbnRpYWxSZXF1
ZXN0U3R5bGUpIHsKKyAgICBBU0NyZWRlbnRpYWxSZXF1ZXN0U3R5bGVNb2RhbCwKKyAgICBBU0Ny
ZWRlbnRpYWxSZXF1ZXN0U3R5bGVBdXRvRmlsbCwKK307CisKIEBpbnRlcmZhY2UgQVNDQ3JlZGVu
dGlhbFJlcXVlc3RDb250ZXh0IDogTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPgogCiAtIChpbnN0
YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKQEAgLTI0NSw2ICsyNTAsOCBAQCB0eXBlZGVm
IE5TX09QVElPTlMoTlNVSW50ZWdlciwgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlcykgewogQHBy
b3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBBU0NQdWJsaWNLZXlDcmVkZW50aWFs
QXNzZXJ0aW9uT3B0aW9ucyAqcGxhdGZvcm1LZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uczsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgQVNDUHVibGljS2V5Q3JlZGVu
dGlhbEFzc2VydGlvbk9wdGlvbnMgKnNlY3VyaXR5S2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlv
bnM7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBBU0NyZWRlbnRpYWxSZXF1ZXN0U3R5bGUgcmVx
dWVzdFN0eWxlOworCiBAZW5kCiAKIEBwcm90b2NvbCBBU0NDcmVkZW50aWFsUHJvdG9jb2wgPE5T
T2JqZWN0LCBOU1NlY3VyZUNvZGluZz4KQEAgLTMyMCw2ICszMjcsOCBAQCB0eXBlZGVmIE5TX09Q
VElPTlMoTlNVSW50ZWdlciwgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlcykgewogLSAodm9pZCl1
c2VyU2VsZWN0ZWRMb2dpbkNob2ljZTooaWQgPEFTQ0xvZ2luQ2hvaWNlUHJvdG9jb2w+KWxvZ2lu
Q2hvaWNlIGF1dGhlbnRpY2F0ZWRDb250ZXh0OihMQUNvbnRleHQgKiljb250ZXh0IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBfTnVsbGFibGUs
IE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAtICh2b2lkKXJlcXVl
c3RDb21wbGV0ZWRXaXRoQ3JlZGVudGlhbDoobnVsbGFibGUgaWQ8QVNDQ3JlZGVudGlhbFByb3Rv
Y29sPiljcmVkZW50aWFsIGVycm9yOihudWxsYWJsZSBOU0Vycm9yICopZXJyb3I7CisKKy0gKHZv
aWQpcGVyZm9ybUF1dG9GaWxsQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDooQVNDQ3Jl
ZGVudGlhbFJlcXVlc3RDb250ZXh0ICopY29udGV4dCB3aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IF9OdWxsYWJsZSBjcmVkZW50aWFsLCBO
U0Vycm9yICogX051bGxhYmxlIGVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKICNlbmRpZgogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDdkNGQ2MGQ5NzFmMWY1OGEzMTZi
MjhhZGZjNjVjOTcwNDljZGFiMTcuLmNlODM0Njc5ODJjNjg5YzY0NWVjY2I2M2UxNzFkNTBjZjlj
YmUxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC04MTMsNyArODEzLDcgQEAg
c3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gd2tB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb24KICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOmV4Y2VwdGlvbi5jb2RlIHVzZXJJ
bmZvOkB7IE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXk6IGV4Y2VwdGlvbi5tZXNzYWdlIH1dKTsK
ICAgICAgICAgfSk7CiAgICAgfTsKLSAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyBXVEZNb3Zl
KGhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25P
cHRpb25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9
LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgX3Bh
bmVsLT5oYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgY29udmVydFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBu
dWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxl
LCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0
ZDo6bnVsbG9wdCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAjZW5kaWYKIH0KIApAQCAtODI3LDcg
KzgyNyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uCiAgICAgICAgICAgICBoYW5kbGVyKG5p
bCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpleGNlcHRpb24u
Y29kZSB1c2VySW5mbzpAeyBOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5OiBleGNlcHRpb24ubWVz
c2FnZSB9XSk7CiAgICAgICAgIH0pOwogICAgIH07Ci0gICAgX3BhbmVsLT5oYW5kbGVSZXF1ZXN0
KHsgdmVjdG9yRnJvbU5TRGF0YShjbGllbnREYXRhSGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsIGNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwg
bnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJs
ZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBudWxscHRyIH0s
IFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JG
cm9tTlNEYXRhKGNsaWVudERhdGFIYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29u
dmVydFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBX
ZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRy
LCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9w
dCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAjZW5kaWYKIH0KIApAQCAtODc3LDcgKzg3Nyw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiB3a0F1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwCiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2Vy
SW5mbzpuaWxdKTsKICAgICAgICAgfSk7CiAgICAgfTsKLSAgICBfcGFuZWwtPmhhbmRsZVJlcXVl
c3QoeyBXVEZNb3ZlKGhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9D
b3JlUmVxdWVzdE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpu
dWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2sp
KTsKKyAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBbX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlUmVxdWVzdE9wdGlvbnNXaXRoT3B0aW9uczpv
cHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpV
bmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBu
dWxscHRyLCBzdGQ6Om51bGxvcHQgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogI2VuZGlmCiB9CiAK
QEAgLTg5MSw3ICs4OTEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcAogICAgICAgICAgICAg
aGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6
V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSk7CiAgICAgICAgIH0pOwogICAgIH07Ci0gICAg
X3BhbmVsLT5oYW5kbGVSZXF1ZXN0KHsgdmVjdG9yRnJvbU5TRGF0YShjbGllbnREYXRhSGFzaCks
IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dp
dGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwg
U3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIF9wYW5lbC0+aGFu
ZGxlUmVxdWVzdCh7IHZlY3RvckZyb21OU0RhdGEoY2xpZW50RGF0YUhhc2gpLCBbX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlUmVxdWVzdE9wdGlvbnNXaXRoT3B0aW9uczpv
cHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpV
bmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBu
dWxscHRyLCBzdGQ6Om51bGxvcHQgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogI2VuZGlmCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkubW0KaW5kZXggMTlhYjdhMThkMjJmZmUzY2ViNjJiOTYwZDlhMWUwYjA1OTJiZmM1
My4uNzI1ODEwYjYxMDY4MzZlMDgyYzAzMDQyMWMzZTU3MThiOTVmNWJhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
bW0KQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1
ZXN0Q29udGV4dD4gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleAogICAgIHJldHVy
biByZXF1ZXN0Q29udGV4dDsKIH0KIAotc3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVx
dWVzdENvbnRleHQ+IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4dChjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFZlY3Rvcjx1aW50OF90
PiBoYXNoKQorc3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNv
bmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4dChjb25zdCBQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6Ok1lZGlhdGlvblJlcXVpcmVtZW50PiBtZWRpYXRpb24pCiB7CiAgICAg
QVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlcyByZXF1ZXN0VHlwZXMgPSBBU0NDcmVkZW50aWFsUmVx
dWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbiB8IEFTQ0NyZWRlbnRpYWxSZXF1ZXN0
VHlwZVNlY3VyaXR5S2V5UHVibGljS2V5QXNzZXJ0aW9uOwogCkBAIC0yNjAsNiArMjYwLDggQEAg
c3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyYXRp
b25Bc3NlcnRpb25SZXF1ZXN0Q29udGUKIAogICAgIGF1dG8gcmVxdWVzdENvbnRleHQgPSBhZG9w
dE5TKFthbGxvY0FTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dEluc3RhbmNlKCkgaW5pdFdpdGhS
ZXF1ZXN0VHlwZXM6cmVxdWVzdFR5cGVzXSk7CiAgICAgW3JlcXVlc3RDb250ZXh0IHNldFJlbHlp
bmdQYXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5ycElkXTsKKyAgICBpZiAobWVkaWF0aW9uID09IE1l
ZGlhdGlvblJlcXVpcmVtZW50OjpDb25kaXRpb25hbCAmJiBbcmVxdWVzdENvbnRleHQgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRSZXF1ZXN0U3R5bGU6KV0pCisgICAgICAgIHJlcXVl
c3RDb250ZXh0LmdldCgpLnJlcXVlc3RTdHlsZSA9IEFTQ3JlZGVudGlhbFJlcXVlc3RTdHlsZUF1
dG9GaWxsOwogCiAgICAgaWYgKHJlcXVlc3RUeXBlcyAmIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlw
ZVBsYXRmb3JtUHVibGljS2V5QXNzZXJ0aW9uKSB7CiAgICAgICAgIGF1dG8gYXNzZXJ0aW9uT3B0
aW9ucyA9IGFkb3B0TlMoYWxsb2NBU0NQdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9u
c0luc3RhbmNlKCkpOwpAQCAtMzAwLDcgKzMwMiw3IEBAIFJldGFpblB0cjxBU0NDcmVkZW50aWFs
UmVxdWVzdENvbnRleHQ+IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojpjb250ZXh0
CiAgICAgV1RGOjpzd2l0Y2hPbihyZXF1ZXN0RGF0YS5vcHRpb25zLCBbJl0oY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykgewogICAgICAgICByZXN1bHQg
PSBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4dChvcHRpb25zLCByZXF1ZXN0RGF0
YS5oYXNoKTsKICAgICB9LCBbJl0oY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiBvcHRpb25zKSB7Ci0gICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25S
ZXF1ZXN0Q29udGV4dChvcHRpb25zLCByZXF1ZXN0RGF0YS5oYXNoKTsKKyAgICAgICAgcmVzdWx0
ID0gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KG9wdGlvbnMsIHJlcXVlc3RE
YXRhLmhhc2gsIHJlcXVlc3REYXRhLm1lZGlhdGlvbik7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KQEAgLTMwOSw4NSArMzExLDEwMCBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5OjpwZXJmb3JtUmVxdWVzdChSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcQog
ewogICAgIGF1dG8gcHJveHkgPSBhZG9wdE5TKFthbGxvY0FTQ0FnZW50UHJveHlJbnN0YW5jZSgp
IGluaXRdKTsKIAorICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2hh
bmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVk
ZW50aWFsLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGVuc3VyZU9uTWFpblJ1
bkxvb3AoW2hhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBjcmVkZW50aWFsID0gcmV0YWluUHRy
KGNyZWRlbnRpYWwpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUgeworICAg
ICAgICAgICAgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSByZXNwb25zZTsKKyAgICAgICAgICAg
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQ7CisgICAgICAgICAgICBFeGNlcHRp
b25EYXRhIGV4Y2VwdGlvbkRhdGE7CisKKyAgICAgICAgICAgIGlmIChbY3JlZGVudGlhbCBpc0tp
bmRPZkNsYXNzOmdldEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbkNs
YXNzKCldKSB7CisgICAgICAgICAgICAgICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50OjpQbGF0Zm9ybTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIEFTQ1BsYXRm
b3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0cmF0aW9uQ3JlZGVudGlh
bCA9IGNyZWRlbnRpYWwuZ2V0KCk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UucmF3SWQgPSB0
b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuY3JlZGVudGlhbElEKTsKKyAgICAg
ICAgICAgICAgICByZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCA9IHRvQXJyYXlCdWZmZXIocmVn
aXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDU2VjdXJpdHlLZXlQdWJsaWNL
ZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKKyAgICAgICAgICAgICAgICBhdHRh
Y2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm07CisgICAgICAg
ICAgICAgICAgcmVzcG9uc2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IHRy
dWU7CisKKyAgICAgICAgICAgICAgICBBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxS
ZWdpc3RyYXRpb24gKnJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdldCgpOwor
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRp
b25DcmVkZW50aWFsLmNyZWRlbnRpYWxJRCk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXR0
ZXN0YXRpb25PYmplY3QgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuYXR0
ZXN0YXRpb25PYmplY3QpOworICAgICAgICAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBpc0tp
bmRPZkNsYXNzOmdldEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbkNsYXNz
KCldKSB7CisgICAgICAgICAgICAgICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50OjpQbGF0Zm9ybTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBBU0NQbGF0Zm9y
bVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVk
ZW50aWFsLmdldCgpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1
ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJRCk7CisgICAgICAgICAgICAgICAg
cmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRl
bnRpYWwuYXV0aGVudGljYXRvckRhdGEpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNpZ25h
dHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1cmUpOworICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLnVzZXJIYW5kbGUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlv
bkNyZWRlbnRpYWwudXNlckhhbmRsZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKFtjcmVkZW50
aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsQXNz
ZXJ0aW9uQ2xhc3MoKV0pIHsKKyAgICAgICAgICAgICAgICBhdHRhY2htZW50ID0gQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm07CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uu
aXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IGZhbHNlOworCisgICAgICAgICAg
ICAgICAgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uICphc3NlcnRp
b25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQoKTsKKyAgICAgICAgICAgICAgICByZXNwb25z
ZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQp
OworICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhID0gdG9BcnJheUJ1
ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmF1dGhlbnRpY2F0b3JEYXRhKTsKKyAgICAgICAgICAg
ICAgICByZXNwb25zZS5zaWduYXR1cmUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRp
YWwuc2lnbmF0dXJlKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9B
cnJheUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLnVzZXJIYW5kbGUpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdHRhY2htZW50ID0gKEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50KSAwOworICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsK
KyAgICAgICAgICAgICAgICBOU1N0cmluZyAqZXJyb3JNZXNzYWdlID0gbmlsOworICAgICAgICAg
ICAgICAgIGlmIChbZXJyb3IuZ2V0KCkuZG9tYWluIGlzRXF1YWxUb1N0cmluZzpXS0Vycm9yRG9t
YWluXSkgeworICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25Db2RlID0gdG9FeGNlcHRpb25D
b2RlKGVycm9yLmdldCgpLmNvZGUpOworICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2Ug
PSBlcnJvci5nZXQoKS51c2VySW5mb1tOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25Db2RlID0g
Tm90QWxsb3dlZEVycm9yOworCisgICAgICAgICAgICAgICAgICAgIGlmIChbZXJyb3IuZ2V0KCku
ZG9tYWluIGlzRXF1YWxUb1N0cmluZzpBU0NBdXRob3JpemF0aW9uRXJyb3JEb21haW5dICYmIGVy
cm9yLmdldCgpLmNvZGUgPT0gQVNDQXV0aG9yaXphdGlvbkVycm9yVXNlckNhbmNlbGVkKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJUaGlzIHJlcXVlc3QgaGFzIGJl
ZW4gY2FuY2VsbGVkIGJ5IHRoZSB1c2VyLiI7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAiT3BlcmF0aW9uIGZhaWxlZC4i
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRhdGEgPSB7
IGV4Y2VwdGlvbkNvZGUsIGVycm9yTWVzc2FnZSB9OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBoYW5kbGVyKHJlc3BvbnNlLCBhdHRhY2htZW50LCBleGNlcHRpb25EYXRhKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisgICAgCisgICAgaWYgKFtyZXF1ZXN0Q29udGV4dCByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHJlcXVlc3RTdHlsZSldICYmIHJlcXVlc3RDb250ZXh0LmdldCgp
LnJlcXVlc3RTdHlsZSA9PSBBU0NyZWRlbnRpYWxSZXF1ZXN0U3R5bGVBdXRvRmlsbCkgeworICAg
ICAgICBbcHJveHkgcGVyZm9ybUF1dG9GaWxsQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4
dDpyZXF1ZXN0Q29udGV4dC5nZXQoKSB3aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtwcm94eSA9IFdURk1vdmUocHJveHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVkZW50aWFsLCBO
U0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihj
cmVkZW50aWFsLCBlcnJvcik7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKICNpZiBQTEFURk9STShJT1MpCi0gICAgW3Byb3h5IHBlcmZvcm1BdXRob3Jp
emF0aW9uUmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhDb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2hhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBwcm94
eSA9IFdURk1vdmUocHJveHkpXShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVkZW50aWFs
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFto
YW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgcHJveHkgPSBXVEZNb3ZlKHByb3h5KSwgY3JlZGVu
dGlhbCA9IHJldGFpblB0cihjcmVkZW50aWFsKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSAo
KSBtdXRhYmxlIHsKKyAgICBbcHJveHkgcGVyZm9ybUF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNv
bnRleHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbcHJveHkgPSBXVEZNb3ZlKHByb3h5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlh
bCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihj
cmVkZW50aWFsLCBlcnJvcik7CisgICAgfSkuZ2V0KCldOwogI2VsaWYgUExBVEZPUk0oTUFDKQog
ICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gbV93ZWJQYWdlUHJveHkucGxhdGZvcm1X
aW5kb3coKTsKLSAgICBbcHJveHkgcGVyZm9ybUF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNvbnRl
eHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENsZWFyYW5jZUhhbmRsZXI6bWFrZUJsb2NrUHRy
KFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVy
KSwgd2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBwcm94eSA9IFdURk1vdmUocHJveHkpXShOU1hQ
Q0xpc3RlbmVyRW5kcG9pbnQgKmRhZW1vbkVuZHBvaW50LCBOU0Vycm9yICplcnJvcikgbXV0YWJs
ZSB7Ci0gICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcywgaGFuZGxlciA9IFdURk1v
dmUoaGFuZGxlciksIHdpbmRvdyA9IFdURk1vdmUod2luZG93KSwgcHJveHkgPSBXVEZNb3ZlKHBy
b3h5KSwgZGFlbW9uRW5kcG9pbnQgPSByZXRhaW5QdHIoZGFlbW9uRW5kcG9pbnQpLCBlcnJvciA9
IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUgeworICAgIFtwcm94eSBwZXJmb3JtQXV0aG9y
aXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29udGV4dC5nZXQoKSB3aXRoQ2xlYXJh
bmNlSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHdpbmRvdyA9IFdU
Rk1vdmUod2luZG93KSwgcHJveHkgPSBXVEZNb3ZlKHByb3h5KV0oTlNYUENMaXN0ZW5lckVuZHBv
aW50ICpkYWVtb25FbmRwb2ludCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBj
YWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHdpbmRvdyA9IFdURk1vdmUod2luZG93KSwgcHJveHkgPSBXVEZN
b3ZlKHByb3h5KSwgZGFlbW9uRW5kcG9pbnQgPSByZXRhaW5QdHIoZGFlbW9uRW5kcG9pbnQpLCBl
cnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhZGFlbW9uRW5kcG9pbnQpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBjb25uZWN0IHRvIGF1dGhvcml6YXRpb24gZGFlbW9uOiAlQFxuIiwgZXJyb3Iu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFj
aG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiBmYWls
ZWQuIiB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIGVycm9yLmdl
dCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIHdlYWtUaGlzLT5tX3ByZXNlbnRlciA9IGFkb3B0TlMoW2FsbG9jQVNDQXV0aG9yaXphdGlv
blJlbW90ZVByZXNlbnRlckluc3RhbmNlKCkgaW5pdF0pOwotICAgICAgICAgICAgW3dlYWtUaGlz
LT5tX3ByZXNlbnRlciBwcmVzZW50V2l0aFdpbmRvdzp3aW5kb3cuZ2V0KCkgZGFlbW9uRW5kcG9p
bnQ6ZGFlbW9uRW5kcG9pbnQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFto
YW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgcHJveHkgPSBXVEZNb3ZlKHByb3h5KV0oaWQgPEFT
Q0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbE5vdFJldGFpbiwgTlNFcnJvciAqZXJyb3JO
b3RSZXRhaW4pIG11dGFibGUgewotICAgICAgICAgICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IHJl
dGFpblB0cihjcmVkZW50aWFsTm90UmV0YWluKTsKLSAgICAgICAgICAgICAgICBhdXRvIGVycm9y
ID0gcmV0YWluUHRyKGVycm9yTm90UmV0YWluKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIEF1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgcmVzcG9uc2UgPSB7IH07Ci0gICAgICAgICAgICAgICAg
QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudDsKLSAgICAgICAgICAgICAgICBFeGNl
cHRpb25EYXRhIGV4Y2VwdGlvbkRhdGEgPSB7IH07Ci0KLSAgICAgICAgICAgICAgICBpZiAoW2Ny
ZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxS
ZWdpc3RyYXRpb25DbGFzcygpXSkgewotICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50ID0g
QXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtOwotICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZS5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKLQotICAg
ICAgICAgICAgICAgICAgICBBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRp
b24gKnJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdldCgpOwotICAgICAgICAg
ICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3Jl
ZGVudGlhbC5jcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5hdHRl
c3RhdGlvbk9iamVjdCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRl
c3RhdGlvbk9iamVjdCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBp
c0tpbmRPZkNsYXNzOmdldEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJh
dGlvbkNsYXNzKCldKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50
aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybTsKLSAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IHRydWU7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0
aW9uICpyZWdpc3RyYXRpb25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNy
ZWRlbnRpYWwuY3JlZGVudGlhbElEKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXR0
ZXN0YXRpb25PYmplY3QgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuYXR0
ZXN0YXRpb25PYmplY3QpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoW2NyZWRlbnRpYWwg
aXNLaW5kT2ZDbGFzczpnZXRBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25D
bGFzcygpXSkgewotICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50ID0gQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQ6OlBsYXRmb3JtOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gZmFsc2U7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uICphc3NlcnRpb25D
cmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9u
c2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRpYWwuY3JlZGVudGlhbElE
KTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEgPSB0b0Fy
cmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRpYWwuYXV0aGVudGljYXRvckRhdGEpOwotICAgICAg
ICAgICAgICAgICAgICByZXNwb25zZS5zaWduYXR1cmUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlv
bkNyZWRlbnRpYWwuc2lnbmF0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXNl
ckhhbmRsZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC51c2VySGFuZGxlKTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0
QVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uQ2xhc3MoKV0pIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpD
cm9zc1BsYXRmb3JtOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAgICAgQVND
U2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uICphc3NlcnRpb25DcmVkZW50
aWFsID0gY3JlZGVudGlhbC5nZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmF3
SWQgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRpYWwuY3JlZGVudGlhbElEKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEgPSB0b0FycmF5QnVm
ZmVyKGFzc2VydGlvbkNyZWRlbnRpYWwuYXV0aGVudGljYXRvckRhdGEpOwotICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZS5zaWduYXR1cmUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRl
bnRpYWwuc2lnbmF0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXNlckhhbmRs
ZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC51c2VySGFuZGxlKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50ID0gKEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50KSAwOwotICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25D
b2RlIGV4Y2VwdGlvbkNvZGU7Ci0gICAgICAgICAgICAgICAgICAgIE5TU3RyaW5nICplcnJvck1l
c3NhZ2UgPSBuaWw7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChbZXJyb3IuZ2V0KCkuZG9tYWlu
IGlzRXF1YWxUb1N0cmluZzpXS0Vycm9yRG9tYWluXSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uQ29kZSA9IHRvRXhjZXB0aW9uQ29kZShlcnJvci5nZXQoKS5jb2RlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVycm9yLmdldCgpLnVzZXJJbmZv
W05TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ29kZSA9IE5vdEFsbG93ZWRFcnJv
cjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFtlcnJvci5nZXQoKS5kb21haW4gaXNF
cXVhbFRvU3RyaW5nOkFTQ0F1dGhvcml6YXRpb25FcnJvckRvbWFpbl0gJiYgZXJyb3IuZ2V0KCku
Y29kZSA9PSBBU0NBdXRob3JpemF0aW9uRXJyb3JVc2VyQ2FuY2VsZWQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gY2Fu
Y2VsbGVkIGJ5IHRoZSB1c2VyLiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJPcGVyYXRpb24gZmFpbGVk
LiI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25EYXRhID0geyBleGNlcHRpb25Db2RlLCBlcnJvck1lc3NhZ2UgfTsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICBoYW5kbGVyKHJlc3BvbnNlLCBhdHRhY2htZW50LCBleGNl
cHRpb25EYXRhKTsKLSNpZiBQTEFURk9STShNQUMpCisgICAgICAgICAgICBbd2Vha1RoaXMtPm1f
cHJlc2VudGVyIHByZXNlbnRXaXRoV2luZG93OndpbmRvdy5nZXQoKSBkYWVtb25FbmRwb2ludDpk
YWVtb25FbmRwb2ludC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3Byb3h5
ID0gV1RGTW92ZShwcm94eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3Ig
KmVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjcmVk
ZW50aWFsLCBlcnJvcik7CiAgICAgICAgICAgICB9KS5nZXQoKV07Ci0jZW5kaWYKICAgICAgICAg
fSk7CiAgICAgfSkuZ2V0KCldOworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKK30KKwordm9pZCBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2
YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBoYW5kbGVy
KFtnZXRBU0NXZWJLaXRTUElTdXBwb3J0Q2xhc3MoKSBzaG91bGRVc2VBbHRlcm5hdGVDcmVkZW50
aWFsU3RvcmVdKTsKIH0KIAogdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25S
ZXF1ZXN0RGF0YS5oCmluZGV4IDA4MjE3NzgxNjg4MzUxMjc4ZTBjZTgwODQxYmJmY2Y3MzZmMjVk
OWIuLmI4Mzk2NTA0ZTFjOTQzMWQ0YWZlMzA2NzA3YTgwOWRmNDczZWE4ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
aW9uUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgiCiAjaW5jbHVkZSAiRnJhbWVJ
bmZvRGF0YS5oIgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KQEAgLTU2LDYgKzU3LDcgQEAgc3RydWN0IFdlYkF1dGhl
bnRpY2F0aW9uUmVxdWVzdERhdGEgewogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlOwog
ICAgIFN0cmluZyBjYWNoZWRQaW47IC8vIE9ubHkgdXNlZCB0byBpbXByb3ZlIE5GQyBDbGllbnQg
UElOIGV4cGVyaWVuY2UuCiAgICAgV2Vha1B0cjxBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw+
IHdlYWtQYW5lbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhdGlvblJlcXVpcmVt
ZW50PiBtZWRpYXRpb247CiB9OwogCiBXZWJDb3JlOjpDbGllbnREYXRhVHlwZSBnZXRDbGllbnRE
YXRhVHlwZShjb25zdCBzdGQ6OnZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucywgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuY3BwCmluZGV4IGIxMWM1ODk1MzI5YmQyNWRlZjgyOWE0MWExMWMxNTI2MDc0Y2RjYzcuLmY1
OWU5NGE5NTY5ZjVlODE0YzI5ZjNiYmMyZGUxZmVhMzI0Nzg5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTU4LDEyICs1
OCwxMiBAQCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6fldlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5KCkKIAogdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eTo6bWFrZUNyZWRlbnRpYWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSWQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMmJiBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwg
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0
KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbV93ZWJQYWdlUHJveHksIFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFt
ZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZN
b3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIg
fSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCks
IFdURk1vdmUob3B0aW9ucyksIG1fd2ViUGFnZVByb3h5LCBXZWJBdXRoZW50aWNhdGlvblBhbmVs
UmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFsRnJhbWVJZGVudGlmaWVyIHsgbV93
ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSwgV1RGTW92ZShmcmFtZUluZm8pLCBw
cm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQgfSwg
V1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6OmdldEFzc2VydGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFJl
cXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSWQsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIE1lZGlhdGlvblJlcXVpcmVtZW50
IG1lZGlhdGlvbiwgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9u
SGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCks
IFdURk1vdmUob3B0aW9ucyksIG1fd2ViUGFnZVByb3h5LCBXZWJBdXRoZW50aWNhdGlvblBhbmVs
UmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFsRnJhbWVJZGVudGlmaWVyIHsgbV93
ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSwgV1RGTW92ZShmcmFtZUluZm8pLCBw
cm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxl
cikpOworICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMp
LCBtX3dlYlBhZ2VQcm94eSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFi
bGUsIG51bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBh
Z2VJRCgpLCBmcmFtZUlkIH0sIFdURk1vdmUoZnJhbWVJbmZvKSwgcHJvY2Vzc2luZ1VzZXJHZXN0
dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbWVkaWF0aW9uIH0sIFdURk1vdmUoaGFuZGxlcikpOwog
fQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5kbGVSZXF1ZXN0
KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhLCBSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXImJiBoYW5kbGVyKQpAQCAtMTA2LDYgKzEwNiwxMSBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JB
dmFpbAogewogICAgIGhhbmRsZXIoTG9jYWxTZXJ2aWNlOjppc0F2YWlsYWJsZSgpKTsKIH0KKwor
dm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNDb25kaXRpb25hbE1lZGlh
dGlvbkF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBo
YW5kbGVyKGZhbHNlKTsKK30KICNlbmRpZiAvLyAhSEFWRShVTklGSUVEX0FTQ19BVVRIX1VJKQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDg2OTcxZGE3Yzg2MDhhODdiMGJkZmU4YTM2ODQ5
OTExOThjNjM0ODEuLjM5YzgzY2NhYmZiMGZiZDNkYjJmNmFhMjBkMWViZTU1Y2I0YTc1YWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTY5LDggKzcwLDkg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFJlY2VpdmVycy4KICAgICB2b2lkIG1ha2VDcmVkZW50aWFs
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBWZWN0b3I8dWludDhf
dD4mJiBoYXNoLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYs
IGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7
Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUlu
Zm9EYXRhJiYsIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucyYmLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVz
dENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiwgV2ViQ29yZTo6Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudCwgYm9vbCBwcm9jZXNz
aW5nVXNlckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIHZvaWQgaXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShR
dWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkF1
dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGNiOTNjODlmMjQ0NzBmMzk5YTBiMTliMWQzMjllNzdh
N2Y3NTZhZmEuLmI0MDFiZGY1ZGE5ZjhhZjA4MjZlMzQ4YTdiZjc1M2FiMzAxOTRjMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw4IEBACiBtZXNzYWdlcyAtPiBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBOb3RSZWZDb3VudGVkIHsKIAogICAgIE1ha2VDcmVkZW50
aWFsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFt
ZUluZm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25z
ZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0
YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwot
ICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBz
dHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMs
IGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0
dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0
aW9uKSBBc3luYworICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1aW50
OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zIG9wdGlvbnMsIGVudW06dWludDhfdCBXZWJDb3JlOjpDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50IG1lZGlhdGlvbiwgYm9vbCBwcm9jZXNzaW5nVXNlckdl
c3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRh
LCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBz
dHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgaXNDb25k
aXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSgpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKICAgICBJ
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoKSAtPiAoYm9vbCBy
ZXN1bHQpIEFzeW5jCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHAKaW5kZXggYmVjMjZhZDg0NmY0YzMwYTc3MDYzNmVmZDg1NjQxOGZlOTc2MTNk
OC4uYjFiYTNlNDEzZGI3MzJmOTA1YzY4ZmE3MjA0MzQ2ZDdkYTY4MmNkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0
IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpNYWtlQ3Jl
ZGVudGlhbChoYXNoLCBvcHRpb25zLCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUo
aGFuZGxlcikpOwogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNz
ZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQg
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZy
YW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwg
Y29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBNZWRpYXRp
b25SZXF1aXJlbWVudCBtZWRpYXRpb24sIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRs
ZXIpCiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFt
ZSk7CiAgICAgaWYgKCF3ZWJGcmFtZSkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IFNlY3VyaXQKICAgICBib29sIHVzZVdlYkF1dGhuUHJvY2VzcyA9IFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkKCk7
CiAjZW5kaWYKICAgICBpZiAoIXVzZVdlYkF1dGhuUHJvY2VzcykgewotICAgICAgICBtX3dlYlBh
Z2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eTo6R2V0QXNzZXJ0aW9uKHdlYkZyYW1lLT5mcmFtZUlEKCksIHdlYkZyYW1lLT5pbmZv
KCksIGhhc2gsIG9wdGlvbnMsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSwgV1RGTW92ZShoYW5k
bGVyKSk7CisgICAgICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpHZXRBc3NlcnRpb24od2ViRnJhbWUtPmZy
YW1lSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgaGFzaCwgb3B0aW9ucywgbWVkaWF0aW9uLCBpc1By
b2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxlcikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMDYsNiArMTA2LDExIEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1cml0CiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhuQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0QXNzZXJ0aW9uKGhhc2gsIG9wdGlvbnMsIGlzUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKK3ZvaWQgV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5
Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojppc0Nv
bmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKCksIFdURk1vdmUoaGFuZGxlcikpOworfTsKKwog
dm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
IHsKICNpZiBIQVZFKFVOSUZJRURfQVNDX0FVVEhfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggNWUxYzdkZGY1MThlOTljZGE3ZTA2MGQ4MDdh
MDk4Mjg0ZWQwNGY0ZC4uMjU5YzllNTYyYzM5M2IwZTYzZWJiNzhlM2Y3N2MyNzlkYTY5NzJmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtNDEs
NyArNDEsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudAogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgV2ViQ29y
ZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9p
ZCBnZXRBc3NlcnRpb24oY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFdlYkNv
cmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyYsIFdlYkNvcmU6Ok1lZGlhdGlvblJlcXVpcmVtZW50LCBXZWJDb3JlOjpSZXF1ZXN0
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBpc0NvbmRpdGlvbmFsTWVkaWF0
aW9uQXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAg
ICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV2Vi
Q29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0VXNl
ckdlc3R1cmVSZXF1aXJlbWVudCgpIGZpbmFsIHsgbV9yZXF1aXJlVXNlckdlc3R1cmUgPSBmYWxz
ZTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452555</attachid>
            <date>2022-02-18 11:56:45 -0800</date>
            <delta_ts>2022-02-18 12:47:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236820-20220218115644.patch</filename>
            <type>text/plain</type>
            <size>49125</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTliZTFmYWY2Zjg0OGVk
MTE2YzgxY2FmMmVjNGQzNjA5OGM4M2U0MC4uZDBiYjY0ZmNlYjkxYTEyN2ZlZmY3YzcwZDllODg1
YzFhMWM5YWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE4ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
Zm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODIwCisgICAgICAgIHJkYXI6Ly84NDgyMTk0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IHN1cHBvcnQgZm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbiwgYXMgZGVmaW5lZCBpbiB0aGUKKyAg
ICAgICAgY3JlZGVudGlhbHMgbWFuYWdlbWVudCBzcGVjOiBodHRwczovL3czYy5naXRodWIuaW8v
d2ViYXBwc2VjLWNyZWRlbnRpYWwtbWFuYWdlbWVudC8jZG9tLWNyZWRlbnRpYWxtZWRpYXRpb25y
ZXF1aXJlbWVudC1jb25kaXRpb25hbAorCisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFu
YWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDcmVk
ZW50aWFsOjppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKToKKyAgICAgICAgKiBNb2R1
bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oOgorICAgICAgICAqIE1v
ZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5o
OgorICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Ny
ZWRlbnRpYWxzQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxzQ29u
dGFpbmVyOjpnZXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxl
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDIyLTAyLTE4ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0NNYWtlXSBDYW5ub3QgZmluZCBPcGVuR0wgd2hlbiBzeXN0ZW0gcHJv
dmlkZXMgb3BlbmdsLnBjIGluc3RlYWQgb2YgZ2wucGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjhkNmJkZTE2M2Vm
ZjE0NDAxMDhiYTViYzNiMDVhNTYyOTAwYjRlMi4uMWNiNDcyN2M3NGYzYjgyMGFhMzY1NDQ0YTg0
ZTU1YTM2ZjE2ZjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMi0wMi0xOCAgSiBQ
YXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0
IGZvciBjb25kaXRpb25hbCBtZWRpYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjgyMAorICAgICAgICByZGFyOi8vODQ4MjE5NDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBtZWRpYXRpb24sIGFzIGRlZmluZWQgaW4gdGhlCisg
ICAgICAgIGNyZWRlbnRpYWxzIG1hbmFnZW1lbnQgc3BlYzogaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3dlYmFwcHNlYy1jcmVkZW50aWFsLW1hbmFnZW1lbnQvI2RvbS1jcmVkZW50aWFsbWVkaWF0aW9u
cmVxdWlyZW1lbnQtY29uZGl0aW9uYWwKKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9B
dXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbToK
KyAgICAgICAgKFdlYktpdDo6Y29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmNvbnRl
eHRGb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHk6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6OmlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJl
cXVlc3REYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmdldEFzc2VydGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojppc0NvbmRp
dGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDoKKwogMjAy
Mi0wMi0xOCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtDTWFrZV0gQ2Fubm90IGZpbmQgT3BlbkdMIHdoZW4gc3lzdGVtIHByb3ZpZGVzIG9w
ZW5nbC5wYyBpbnN0ZWFkIG9mIGdsLnBjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5jcHAKaW5k
ZXggYTIzZGYxMDdmMTY1ZGZiNzExNGNlMjk4YjU0ODgwYTdiNzljZTYyZi4uODhmY2ExY2IxMDhi
MDMyZDI4N2FiODkwODUyMDc5Mzc5OGNlMDM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFs
LmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJh
c2ljQ3JlZGVudGlhbC5oIgogCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgi
CisKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw2
ICs1MiwxNCBAQCBTdHJpbmcgQmFzaWNDcmVkZW50aWFsOjp0eXBlKCkgY29uc3QKICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAordm9pZCBCYXNpY0NyZWRlbnRpYWw6OmlzQ29uZGl0aW9u
YWxNZWRpYXRpb25BdmFpbGFibGUoRG9jdW1lbnQmIGRvY3VtZW50LCBET01Qcm9taXNlRGVmZXJy
ZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQoreworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1l
bnQucGFnZSgpKQorICAgICAgICBwYWdlLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5pc0Nv
bmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFdURk1vdmUocHJvbWlzZSkpOworICAgIGVsc2UK
KyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2Vt
ZW50L0Jhc2ljQ3JlZGVudGlhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFs
bWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaAppbmRleCAzYjhmMTQyMjJlYzRhYzVmNjcyMTA3
OTBhNWY5ZmE1NWQzZWNhYTE5Li41ZDdlNDQxMjM2NGU3ZTc0OGNkNjY1YjI5MDJlODI0MTU4MGZi
MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2Vt
ZW50L0Jhc2ljQ3JlZGVudGlhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVu
dGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGlj
OgogICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAgICAgRGlzY292ZXJ5IGRpc2NvdmVyeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzY292ZXJ5OyB9CiAKKyAgICBzdGF0aWMgdm9pZCBpc0NvbmRpdGlv
bmFsTWVkaWF0aW9uQXZhaWxhYmxlKERvY3VtZW50JiwgRE9NUHJvbWlzZURlZmVycmVkPElETEJv
b2xlYW4+JiYpOworCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkOwogICAgIFR5cGUgbV90eXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVu
dC9CYXNpY0NyZWRlbnRpYWwuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFs
bWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaWRsCmluZGV4IDQ5OTMxN2U3OGNlNzc0MTk4NGM3
NTYyYzAxZjVlZmQ5NGRkNTQzMGQuLjI0OTIyMjVjMDVhZTM1NDgzYjQ0Y2M5MWNmMmQ0Y2QxYWI3
NTQ5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvQmFzaWNDcmVkZW50aWFsLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Ny
ZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGwKQEAgLTMzLDQgKzMzLDYgQEAK
IF0gaW50ZXJmYWNlIEJhc2ljQ3JlZGVudGlhbCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVT
VlN0cmluZyBpZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CisKKyAg
ICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBpc0Nv
bmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zLmgKaW5kZXggODFjOTRlYWFmYTc1OWRkOGQyNjk1NTNhZTMxOGI2
OGY0MWZkZDU4My4uYjZjZjQxNjA1OTZmNDYzNzZiZjRlNjg5YjEwYzU0MTA3NjVjYzE5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRl
bnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCkBAIC0zNSw4ICszNSwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFib3J0U2lnbmFsOwogCitlbnVtIGNs
YXNzIE1lZGlhdGlvblJlcXVpcmVtZW50IDogdWludDhfdCB7IFNpbGVudCwgT3B0aW9uYWwsIFJl
cXVpcmVkLCBDb25kaXRpb25hbCB9OworCiBzdHJ1Y3QgQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
IHsKLSAgICBlbnVtIGNsYXNzIE1lZGlhdGlvblJlcXVpcmVtZW50IHsgU2lsZW50LCBPcHRpb25h
bCwgUmVxdWlyZWQgfTsKKyAgICB1c2luZyBNZWRpYXRpb25SZXF1aXJlbWVudCA9IE1lZGlhdGlv
blJlcXVpcmVtZW50OwogCiAgICAgTWVkaWF0aW9uUmVxdWlyZW1lbnQgbWVkaWF0aW9uOwogICAg
IFJlZlB0cjxBYm9ydFNpZ25hbD4gc2lnbmFsOwpAQCAtNDUsNCArNDcsMTkgQEAgc3RydWN0IENy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudD4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9uczo6TWVkaWF0aW9uUmVxdWlyZW1lbnQsCisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9uczo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ6OlNpbGVudCwKKyAgICAgICAg
V2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudDo6
T3B0aW9uYWwsCisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6TWVk
aWF0aW9uUmVxdWlyZW1lbnQ6OlJlcXVpcmVkLAorICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50OjpDb25kaXRpb25hbAorICAgID47
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1l
bnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbAppbmRleCA5
M2EwY2YxNDcyOGFhMjg2OWU1ODA5ZjUzZWZmMTk4MmIzYTg3ZWE5Li43ZGI1OWQ5YWIyMTJiMTE3
MWFjODFiNmJjNDQ0MWFkMmI4YTgxYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMuaWRsCkBAIC0yOSw3ICsyOSw4IEBACiBdIGVudW0gQ3JlZGVudGlhbE1l
ZGlhdGlvblJlcXVpcmVtZW50IHsKICAgICAic2lsZW50IiwKICAgICAib3B0aW9uYWwiLAotICAg
ICJyZXF1aXJlZCIKKyAgICAicmVxdWlyZWQiLAorICAgICJjb25kaXRpb25hbCIKIH07CiAKIFsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbHNDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKaW5kZXggYzFhYzcwYmY2NzJj
OTBhMDVjODdhYTQxOTMwNWVkNTVkMzZhN2MyOS4uOTYwNjA4Y2ExMzVmOGFjNjk1NmZhOWNmMjNm
MjNhODk1NGU0OGFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAK
QEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KENyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIENyZWRlbnRpYWxQcm8KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5h
dG9yKCkuZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoKm1fZG9jdW1lbnQsIG9wdGlvbnMucHVi
bGljS2V5LnZhbHVlKCksIHNjb3BlKCksIFdURk1vdmUob3B0aW9ucy5zaWduYWwpLCBXVEZNb3Zl
KHByb21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcigpLmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKCptX2RvY3VtZW50LCBXVEZNb3ZlKG9w
dGlvbnMpLCBzY29wZSgpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogdm9pZCBDcmVkZW50aWFs
c0NvbnRhaW5lcjo6c3RvcmUoY29uc3QgQmFzaWNDcmVkZW50aWFsJiwgQ3JlZGVudGlhbFByb21p
c2UmJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IDVkNDc3N2I4YzAzYTA5
MmY3MTkxZGU0NDQ1NDhlYTdmOWM2ZjNjNzYuLjU0OTY1ZmYyZWFlY2VhZTdlYzg4NzAwZWM2MmYx
NDM3OWM3ZmRhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZlYXR1cmVQb2xpY3kuaCIKICNpbmNs
dWRlICJKU0Jhc2ljQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIkpTQ3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQ
dWJsaWNLZXlDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucy5oIgpAQCAtMTc2LDEyICsxNzcsMTMgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmNyZWF0ZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tl
eUMKICAgICBtX2NsaWVudC0+bWFrZUNyZWRlbnRpYWwoKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNs
aWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lk
IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmIG9wdGlvbnMsIFdlYkF1dGhuOjpTY29wZSBzY29wZSwgUmVmUHRyPEFib3J0U2lnbmFs
PiYmIGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0Cit2b2lk
IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiByZXF1ZXN0
T3B0aW9ucywgV2ViQXV0aG46OlNjb3BlIHNjb3BlLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21p
c2UpIGNvbnN0CiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ckludGVybmFsOwogCiAgICAgYXV0byYgY2FsbGVyT3JpZ2luID0gZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKTsKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisgICAgY29uc3Qg
YXV0byYgb3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpOwogICAgIEFT
U0VSVChmcmFtZSk7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIw
MTcuCiAgICAgLy8gU3RlcCAxLCAzLCAxMyBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgpAQCAt
MjMwLDcgKzIzMiw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZy
b21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShj
bGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25hbCA9
IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmIGRhdGEs
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIEV4Y2VwdGlvbkRhdGEmJiBleGNl
cHRpb24pIG11dGFibGUgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBX
VEZNb3ZlKGNsaWVudERhdGFKc29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0
U2lnbmFsID0gV1RGTW92ZShyZXF1ZXN0T3B0aW9ucy5zaWduYWwpXSAoQXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YSYmIGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIEV4
Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoYWJvcnRTaWdu
YWwgJiYgYWJvcnRTaWduYWwtPmFib3J0ZWQoKSkgewogICAgICAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwuIl9zIH0p
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ1LDcgKzI0Nyw3IEBAIHZvaWQgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVu
dCYgZG9jdW1lCiAgICAgICAgIHByb21pc2UucmVqZWN0KGV4Y2VwdGlvbi50b0V4Y2VwdGlvbigp
KTsKICAgICB9OwogICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQgYW5kIGhh
bmRsZWQgaW4gdGhlIG1lc3Nlbmdlci4KLSAgICBtX2NsaWVudC0+Z2V0QXNzZXJ0aW9uKCpmcmFt
ZSwgY2FsbGVyT3JpZ2luLCBjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICBtX2NsaWVudC0+Z2V0QXNzZXJ0aW9uKCpmcmFtZSwgY2FsbGVyT3JpZ2lu
LCBjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIHJlcXVlc3RPcHRpb25zLm1lZGlhdGlvbiwg
V1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6
aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VE
ZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpIGNvbnN0CkBAIC0yNjYsNiArMjY4LDIxIEBA
IHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGUoRE9NCiAgICAgbV9jbGllbnQtPmlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKKwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzQ29uZGl0aW9uYWxNZWRp
YXRpb25BdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlzZSkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fY2xpZW50KSAgeworICAgICAgICBwcm9taXNlLnJlamVjdChF
eGNlcHRpb24geyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIHByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH07CisgICAgLy8gQXN5bmMgb3BlcmF0
aW9ucyBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgorICAgIG1f
Y2xpZW50LT5pc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwogdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OnJlc2V0VXNl
ckdlc3R1cmVSZXF1aXJlbWVudCgpCiB7CiAgICAgbV9jbGllbnQtPnJlc2V0VXNlckdlc3R1cmVS
ZXF1aXJlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggZjQ5NTAzMDg2YzlhY2M3OTE5
MzM4N2Y3NmZiNmE1YmVhMjA3ODBhYi4uNGQ5YWJhNjhlODg4MzA1MDg5YmZlMTkzMGMzNTA4Y2Fk
ZjUzZmVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIERv
Y3VtZW50OwogCiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKIHN0
cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CitzdHJ1Y3QgQ3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Q
cm9taXNlRGVmZXJyZWQ7CiAKQEAgLTU4LDggKzU5LDkgQEAgcHVibGljOgogCiAgICAgLy8gVGhl
IGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCBzdGF0aWMgbWV0aG9kcyBvZiBQdWJsaWNLZXlD
cmVkZW50aWFsLgogICAgIHZvaWQgY3JlYXRlKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIFdlYkF1dGhuOjpTY29wZSwgUmVmUHRyPEFi
b3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKLSAgICB2b2lkIGRpc2Nv
dmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgV2ViQXV0aG46OlNjb3BlLCBSZWZQdHI8QWJvcnRTaWdu
YWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OworICAgIHZvaWQgZGlzY292ZXJGcm9t
RXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1lbnQmLCBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMm
JiwgV2ViQXV0aG46OlNjb3BlLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKICAgICB2b2lk
IGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9taXNl
RGVmZXJyZWQ8SURMQm9vbGVhbj4mJikgY29uc3Q7CisgICAgdm9pZCBpc0NvbmRpdGlvbmFsTWVk
aWF0aW9uQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKSBjb25zdDsK
IAogICAgIHZvaWQgcmVzZXRVc2VyR2VzdHVyZVJlcXVpcmVtZW50KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudC5oCmluZGV4IDY0NjFhZTk2NGZhYmQ4MjJkZmIxMDA4NzA1NjgxYzZl
NDU1N2I0OWMuLjNiYjY1YTg2YjhmMzNkY2IzNjI0NmI4OWNlZmQ5NmFkYjI3YjkzYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBGcmFt
ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50OworZW51bSBjbGFzcyBNZWRpYXRpb25SZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiAKIHN0
cnVjdCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnM7CkBAIC00NiwxNiArNDcsMTcgQEAgc3RydWN0IFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKIHVzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YSYmLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYmKT47CiB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT47CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQ+IHsKK2NsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpOwogcHVibGljOgogICAgIEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudCgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFrZUNy
ZWRlbnRpYWwoY29uc3QgRnJhbWUmLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBnZXRBc3Nl
cnRpb24oY29uc3QgRnJhbWUmLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVl
c3RDb21wbGV0aW9uSGFuZGxlciYmKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGlzVXNlclZlcmlm
eWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVy
JiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgRnJhbWUmLCBj
b25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIm
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmLCBjb25z
dCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIE1lZGlhdGlvblJlcXVpcmVtZW50LCBSZXF1ZXN0
Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpc0NvbmRpdGlvbmFs
TWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUo
UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRV
c2VyR2VzdHVyZVJlcXVpcmVtZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUwZTI0MWU3MTI1MGMxNWE1N2Zm
NGVjNDc3N2FjYzRkMjk4NWUxMGMuLjc0MTA3NjIwMTA1M2VmNzU3YjMzN2YwMmJmNWNmYmE5YTZl
NDRlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTIzNzQsNyArMjM3NCw3IEBACiAJCTc3QTE3QUE3MTJGMjhCMkEwMDRFMDJG
NiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3N0ExN0FBMzEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0
ZXhBcnJheU9iamVjdC5oICovOyB9OwogCQk3N0Q1MTAwNDFFRDRGNzFFMDBEQTRDODcgLyogSlND
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc3RDUwRkZGMUVENEY3MEMwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucy5oICovOyB9OwogCQk3N0Q1MTAwNjFFRDRGNzI1MDBEQTRDODcgLyogSlND
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3N0Q1MEZGRDFFRDRGNzBDMDBEQTRDODcgLyogSlNDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zLmggKi87IH07Ci0JCTc3RDUxMDBCMUVENUUyODgwMERBNEM4NyAvKiBD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc3RDUwRkZCMUVENEYxNkMwMERBNEM4NyAvKiBDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMuaCAqLzsgfTsKKwkJNzdENTEwMEIxRUQ1RTI4ODAwREE0Qzg3IC8qIENyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzdENTBGRkIxRUQ0RjE2QzAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTc3RDUxMDBEMUVENUUyOTUwMERBNEM4NyAvKiBDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0FBRDY4
NTFFQ0ZCRDM5MDBCRkEyRDEgLyogQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oICovOyB9Owog
CQk3N0Q1MTAxNzFFRDYwMjIyMDBEQTRDODcgLyogQ3JlZGVudGlhbHNDb250YWluZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RDUxMDE2MUVENjAy
MUIwMERBNEM4NyAvKiBDcmVkZW50aWFsc0NvbnRhaW5lci5oICovOyB9OwogCQk3N0Q1MTAxQzFF
RDcyMkJGMDBEQTRDODcgLyogSlNDcmVkZW50aWFsc0NvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdENTEwMUIxRUQ3MjJCNTAwREE0Qzg3
IC8qIEpTQ3JlZGVudGlhbHNDb250YWluZXIuaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2Vz
Q29yZVNQSS5oCmluZGV4IGQyMmFiMmNiN2RhNTM1Y2I1YTQyNTAwMWI4MzM3ZjVhZjU4NDI2ZGYu
LjM3YWQzMWJiNmY0MTUzNjM2YzA0NjkwMDQ2ZTdhMjVkZGIyODM0MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3Jl
U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRp
b25TZXJ2aWNlc0NvcmVTUEkuaApAQCAtMjI5LDYgKzIyOSwxMSBAQCB0eXBlZGVmIE5TX09QVElP
TlMoTlNVSW50ZWdlciwgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlcykgewogCiBAZW5kCiAKK3R5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFTQ3JlZGVudGlhbFJlcXVlc3RTdHlsZSkgeworICAg
IEFTQ3JlZGVudGlhbFJlcXVlc3RTdHlsZU1vZGFsLAorICAgIEFTQ3JlZGVudGlhbFJlcXVlc3RT
dHlsZUF1dG9GaWxsLAorfTsKKwogQGludGVyZmFjZSBBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRl
eHQgOiBOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+CiAKIC0gKGluc3RhbmNldHlwZSlpbml0IE5T
X1VOQVZBSUxBQkxFOwpAQCAtMjQ1LDYgKzI1MCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVzKSB7CiBAcHJvcGVydHkgKG5vbmF0b21p
YywgbnVsbGFibGUsIGNvcHkpIEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25z
ICpwbGF0Zm9ybUtleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zOwogQHByb3BlcnR5IChub25h
dG9taWMsIG51bGxhYmxlLCBjb3B5KSBBU0NQdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0
aW9ucyAqc2VjdXJpdHlLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uczsKIAorQHByb3BlcnR5
IChub25hdG9taWMpIEFTQ3JlZGVudGlhbFJlcXVlc3RTdHlsZSByZXF1ZXN0U3R5bGU7CisKIEBl
bmQKIAogQHByb3RvY29sIEFTQ0NyZWRlbnRpYWxQcm90b2NvbCA8TlNPYmplY3QsIE5TU2VjdXJl
Q29kaW5nPgpAQCAtMzIwLDYgKzMyNyw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2Vy
LCBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVzKSB7CiAtICh2b2lkKXVzZXJTZWxlY3RlZExvZ2lu
Q2hvaWNlOihpZCA8QVNDTG9naW5DaG9pY2VQcm90b2NvbD4pbG9naW5DaG9pY2UgYXV0aGVudGlj
YXRlZENvbnRleHQ6KExBQ29udGV4dCAqKWNvbnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IF9OdWxsYWJsZSwgTlNFcnJvciAqIF9OdWxs
YWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CiAKIC0gKHZvaWQpcmVxdWVzdENvbXBsZXRlZFdpdGhD
cmVkZW50aWFsOihudWxsYWJsZSBpZDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+KWNyZWRlbnRpYWwg
ZXJyb3I6KG51bGxhYmxlIE5TRXJyb3IgKillcnJvcjsKKworLSAodm9pZClwZXJmb3JtQXV0b0Zp
bGxBdXRob3JpemF0aW9uUmVxdWVzdHNGb3JDb250ZXh0OihBU0NDcmVkZW50aWFsUmVxdWVzdENv
bnRleHQgKiljb250ZXh0IHdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0Ny
ZWRlbnRpYWxQcm90b2NvbD4gX051bGxhYmxlIGNyZWRlbnRpYWwsIE5TRXJyb3IgKiBfTnVsbGFi
bGUgZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0KaW5kZXggN2Q0ZDYwZDk3MWYxZjU4YTMxNmIyOGFkZmM2NWM5NzA0OWNk
YWIxNy4uY2U4MzQ2Nzk4MmM2ODljNjQ1ZWNjYjYzZTE3MWQ1MGNmOWNiZTEzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTgxMyw3ICs4MTMsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvbgogICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6ZXhjZXB0aW9uLmNvZGUgdXNlckluZm86QHsgTlNMb2NhbGl6
ZWREZXNjcmlwdGlvbktleTogZXhjZXB0aW9uLm1lc3NhZ2UgfV0pOwogICAgICAgICB9KTsKICAg
ICB9OwotICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9u
czpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0
OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygp
LCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBfcGFuZWwtPmhhbmRsZVJlcXVl
c3QoeyBXVEZNb3ZlKGhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9D
b3JlQ3JlYXRpb25PcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6
bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdU
Rk1vdmUoY2FsbGJhY2spKTsKICNlbmRpZgogfQogCkBAIC04MjcsNyArODI3LDcgQEAgc3RhdGlj
IFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb24KICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJv
cldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOmV4Y2VwdGlvbi5jb2RlIHVzZXJJbmZvOkB7
IE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXk6IGV4Y2VwdGlvbi5tZXNzYWdlIH1dKTsKICAgICAg
ICAgfSk7CiAgICAgfTsKLSAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNE
YXRhKGNsaWVudERhdGFIYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRv
Q29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6
Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxsYmFj
aykpOworICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IHZlY3RvckZyb21OU0RhdGEoY2xpZW50
RGF0YUhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRp
b25PcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwg
eyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoY2Fs
bGJhY2spKTsKICNlbmRpZgogfQogCkBAIC04NzcsNyArODc3LDcgQEAgc3RhdGljIFJldGFpblB0
cjxfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3AKICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21h
aW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOwogICAg
ICAgICB9KTsKICAgICB9OwotICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFz
aCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9u
c1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1
ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIF9wYW5lbC0+
aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
IGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRy
LCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxs
cHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0ZDo6bnVs
bG9wdCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAjZW5kaWYKIH0KIApAQCAtODkxLDcgKzg5MSw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiB3
a0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwCiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1
c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7CiAgICAgfTsKLSAgICBfcGFuZWwtPmhhbmRsZVJl
cXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGNsaWVudERhdGFIYXNoKSwgW19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RPcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9u
c10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFp
bGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0
ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgX3BhbmVsLT5oYW5kbGVSZXF1ZXN0KHsgdmVj
dG9yRnJvbU5TRGF0YShjbGllbnREYXRhSGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
IGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRy
LCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxs
cHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0ZDo6bnVs
bG9wdCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQppbmRl
eCAxOWFiN2ExOGQyMmZmZTNjZWI2MmI5NjBkOWExZTBiMDU5MmJmYzUzLi43MjU4MTBiNjEwNjgz
NmUwODJjMDMwNDIxYzNlNTcxOGI5NWY1YmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQpAQCAtMjM2LDcgKzIz
Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25m
aWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3RDb250ZXh0
OwogfQogCi1zdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29u
ZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gpCitzdGF0aWMg
UmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2Vy
dGlvblJlcXVlc3RDb250ZXh0KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
cyYgb3B0aW9ucywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
TWVkaWF0aW9uUmVxdWlyZW1lbnQ+IG1lZGlhdGlvbikKIHsKICAgICBBU0NDcmVkZW50aWFsUmVx
dWVzdFR5cGVzIHJlcXVlc3RUeXBlcyA9IEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVBsYXRmb3Jt
UHVibGljS2V5QXNzZXJ0aW9uIHwgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlU2VjdXJpdHlLZXlQ
dWJsaWNLZXlBc3NlcnRpb247CiAKQEAgLTI2MCw2ICsyNjAsOCBAQCBzdGF0aWMgUmV0YWluUHRy
PEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVl
c3RDb250ZQogCiAgICAgYXV0byByZXF1ZXN0Q29udGV4dCA9IGFkb3B0TlMoW2FsbG9jQVNDQ3Jl
ZGVudGlhbFJlcXVlc3RDb250ZXh0SW5zdGFuY2UoKSBpbml0V2l0aFJlcXVlc3RUeXBlczpyZXF1
ZXN0VHlwZXNdKTsKICAgICBbcmVxdWVzdENvbnRleHQgc2V0UmVseWluZ1BhcnR5SWRlbnRpZmll
cjpvcHRpb25zLnJwSWRdOworICAgIGlmIChtZWRpYXRpb24gPT0gTWVkaWF0aW9uUmVxdWlyZW1l
bnQ6OkNvbmRpdGlvbmFsICYmIFtyZXF1ZXN0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNldFJlcXVlc3RTdHlsZTopXSkKKyAgICAgICAgcmVxdWVzdENvbnRleHQuZ2V0KCku
cmVxdWVzdFN0eWxlID0gQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlQXV0b0ZpbGw7CiAKICAgICBp
ZiAocmVxdWVzdFR5cGVzICYgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlUGxhdGZvcm1QdWJsaWNL
ZXlBc3NlcnRpb24pIHsKICAgICAgICAgYXV0byBhc3NlcnRpb25PcHRpb25zID0gYWRvcHROUyhh
bGxvY0FTQ1B1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zSW5zdGFuY2UoKSk7CkBA
IC0zMDAsNyArMzAyLDcgQEAgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4g
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmNvbnRleHQKICAgICBXVEY6OnN3aXRj
aE9uKHJlcXVlc3REYXRhLm9wdGlvbnMsIFsmXShjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiBvcHRpb25zKSB7CiAgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyZVJlZ2lz
dHJhdGlvblJlcXVlc3RDb250ZXh0KG9wdGlvbnMsIHJlcXVlc3REYXRhLmhhc2gpOwogICAgIH0s
IFsmXShjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMpIHsK
LSAgICAgICAgcmVzdWx0ID0gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KG9w
dGlvbnMsIHJlcXVlc3REYXRhLmhhc2gpOworICAgICAgICByZXN1bHQgPSBjb25maWd1cmF0aW9u
QXNzZXJ0aW9uUmVxdWVzdENvbnRleHQob3B0aW9ucywgcmVxdWVzdERhdGEuaGFzaCwgcmVxdWVz
dERhdGEubWVkaWF0aW9uKTsKICAgICB9KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMzA5
LDg1ICszMTEsMTAwIEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnBl
cmZvcm1SZXF1ZXN0KFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxCiB7CiAgICAgYXV0byBwcm94
eSA9IGFkb3B0TlMoW2FsbG9jQVNDQWdlbnRQcm94eUluc3RhbmNlKCkgaW5pdF0pOwogCisgICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbaGFuZGxlciA9IFdURk1vdmUo
aGFuZGxlcildKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3Ig
KmVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgZW5zdXJlT25NYWluUnVuTG9vcChbaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlciksIGNyZWRlbnRpYWwgPSByZXRhaW5QdHIoY3JlZGVudGlhbCksIGVy
cm9yID0gcmV0YWluUHRyKGVycm9yKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBBdXRoZW50
aWNhdG9yUmVzcG9uc2VEYXRhIHJlc3BvbnNlOworICAgICAgICAgICAgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQgYXR0YWNobWVudDsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9u
RGF0YTsKKworICAgICAgICAgICAgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVND
UGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKKyAgICAg
ICAgICAgICAgICBhdHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3Jt
OworICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UgPSB0cnVlOworCisgICAgICAgICAgICAgICAgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVk
ZW50aWFsUmVnaXN0cmF0aW9uICpyZWdpc3RyYXRpb25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5n
ZXQoKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIocmVn
aXN0cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOworICAgICAgICAgICAgICAgIHJlc3Bv
bnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50
aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2NyZWRlbnRp
YWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxSZWdp
c3RyYXRpb25DbGFzcygpXSkgeworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50
aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybTsKKyAgICAgICAgICAgICAgICByZXNwb25z
ZS5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKKworICAgICAgICAg
ICAgICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVn
aXN0cmF0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CisgICAgICAgICAgICAgICAg
cmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuY3Jl
ZGVudGlhbElEKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCA9
IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7
CisgICAgICAgICAgICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVND
UGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uQ2xhc3MoKV0pIHsKKyAgICAgICAg
ICAgICAgICBhdHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtOwor
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVu
dGlhbEFzc2VydGlvbiAqYXNzZXJ0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7Cisg
ICAgICAgICAgICAgICAgcmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNy
ZWRlbnRpYWwuY3JlZGVudGlhbElEKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5hdXRoZW50
aWNhdG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5hdXRoZW50aWNh
dG9yRGF0YSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2lnbmF0dXJlID0gdG9BcnJheUJ1
ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLnNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgcmVz
cG9uc2UudXNlckhhbmRsZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC51c2Vy
SGFuZGxlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFz
czpnZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25DbGFzcygpXSkg
eworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6
Q3Jvc3NQbGF0Zm9ybTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBBU0NTZWN1cml0
eUtleVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBj
cmVkZW50aWFsLmdldCgpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJh
eUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJRCk7CisgICAgICAgICAgICAg
ICAgcmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNy
ZWRlbnRpYWwuYXV0aGVudGljYXRvckRhdGEpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNp
Z25hdHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1cmUpOwor
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVzZXJIYW5kbGUgPSB0b0FycmF5QnVmZmVyKGFzc2Vy
dGlvbkNyZWRlbnRpYWwudXNlckhhbmRsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnQgPSAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpIDA7CisgICAg
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOworICAgICAgICAgICAgICAg
IE5TU3RyaW5nICplcnJvck1lc3NhZ2UgPSBuaWw7CisgICAgICAgICAgICAgICAgaWYgKFtlcnJv
ci5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOldLRXJyb3JEb21haW5dKSB7CisgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkNvZGUgPSB0b0V4Y2VwdGlvbkNvZGUoZXJyb3IuZ2V0KCku
Y29kZSk7CisgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVycm9yLmdldCgpLnVz
ZXJJbmZvW05TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNvZGUgPSBOb3RBbGxvd2VkRXJyb3I7
CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFtlcnJvci5nZXQoKS5kb21haW4gaXNFcXVhbFRv
U3RyaW5nOkFTQ0F1dGhvcml6YXRpb25FcnJvckRvbWFpbl0gJiYgZXJyb3IuZ2V0KCkuY29kZSA9
PSBBU0NBdXRob3JpemF0aW9uRXJyb3JVc2VyQ2FuY2VsZWQpCisgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvck1lc3NhZ2UgPSBAIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkg
dGhlIHVzZXIuIjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3JNZXNzYWdlID0gQCJPcGVyYXRpb24gZmFpbGVkLiI7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgZXhjZXB0aW9uRGF0YSA9IHsgZXhjZXB0aW9uQ29kZSwg
ZXJyb3JNZXNzYWdlIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGhhbmRsZXIocmVz
cG9uc2UsIGF0dGFjaG1lbnQsIGV4Y2VwdGlvbkRhdGEpOworICAgICAgICB9KTsKKyAgICB9KTsK
KyAgICAKKyAgICBpZiAoW3JlcXVlc3RDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IocmVxdWVzdFN0eWxlKV0gJiYgcmVxdWVzdENvbnRleHQuZ2V0KCkucmVxdWVzdFN0eWxlID09
IEFTQ3JlZGVudGlhbFJlcXVlc3RTdHlsZUF1dG9GaWxsKSB7CisgICAgICAgIFtwcm94eSBwZXJm
b3JtQXV0b0ZpbGxBdXRob3JpemF0aW9uUmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0
LmdldCgpIHdpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3Byb3h5ID0gV1RGTW92
ZShwcm94eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9y
KTsKKyAgICAgICAgfSkuZ2V0KCldOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogI2lm
IFBMQVRGT1JNKElPUykKLSAgICBbcHJveHkgcGVyZm9ybUF1dGhvcml6YXRpb25SZXF1ZXN0c0Zv
ckNvbnRleHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VC
bG9ja1B0cihbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIHByb3h5ID0gV1RGTW92ZShwcm94
eSldKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9y
KSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW2hhbmRsZXIgPSBXVEZNb3Zl
KGhhbmRsZXIpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBjcmVkZW50aWFsID0gcmV0YWluUHRy
KGNyZWRlbnRpYWwpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUgeworICAg
IFtwcm94eSBwZXJmb3JtQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29u
dGV4dC5nZXQoKSB3aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtwcm94eSA9IFdU
Rk1vdmUocHJveHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVkZW50aWFsLCBOU0Vycm9yICplcnJv
cikgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9y
KTsKKyAgICB9KS5nZXQoKV07CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPE5T
V2luZG93PiB3aW5kb3cgPSBtX3dlYlBhZ2VQcm94eS5wbGF0Zm9ybVdpbmRvdygpOwotICAgIFtw
cm94eSBwZXJmb3JtQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29udGV4
dC5nZXQoKSB3aXRoQ2xlYXJhbmNlSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCB3aW5kb3cgPSBXVEZN
b3ZlKHdpbmRvdyksIHByb3h5ID0gV1RGTW92ZShwcm94eSldKE5TWFBDTGlzdGVuZXJFbmRwb2lu
dCAqZGFlbW9uRW5kcG9pbnQsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgY2Fs
bE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgd2lu
ZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBkYWVtb25FbmRw
b2ludCA9IHJldGFpblB0cihkYWVtb25FbmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVycm9y
KV0gKCkgbXV0YWJsZSB7CisgICAgW3Byb3h5IHBlcmZvcm1BdXRob3JpemF0aW9uUmVxdWVzdHNG
b3JDb250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhDbGVhcmFuY2VIYW5kbGVyOm1ha2VC
bG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBw
cm94eSA9IFdURk1vdmUocHJveHkpXShOU1hQQ0xpc3RlbmVyRW5kcG9pbnQgKmRhZW1vbkVuZHBv
aW50LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29w
KFt3ZWFrVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgd2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBwcm94eSA9IFdURk1vdmUocHJveHkpLCBkYWVt
b25FbmRwb2ludCA9IHJldGFpblB0cihkYWVtb25FbmRwb2ludCksIGVycm9yID0gcmV0YWluUHRy
KGVycm9yKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkYWVt
b25FbmRwb2ludCkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNvbm5l
Y3QgdG8gYXV0aG9yaXphdGlvbiBkYWVtb246ICVAXG4iLCBlcnJvci5nZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRp
b25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZXJyb3IuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgd2Vha1RoaXMtPm1f
cHJlc2VudGVyID0gYWRvcHROUyhbYWxsb2NBU0NBdXRob3JpemF0aW9uUmVtb3RlUHJlc2VudGVy
SW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgICAgICAgICBbd2Vha1RoaXMtPm1fcHJlc2VudGVyIHBy
ZXNlbnRXaXRoV2luZG93OndpbmRvdy5nZXQoKSBkYWVtb25FbmRwb2ludDpkYWVtb25FbmRwb2lu
dC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2hhbmRsZXIgPSBXVEZNb3Zl
KGhhbmRsZXIpLCBwcm94eSA9IFdURk1vdmUocHJveHkpXShpZCA8QVNDQ3JlZGVudGlhbFByb3Rv
Y29sPiBjcmVkZW50aWFsTm90UmV0YWluLCBOU0Vycm9yICplcnJvck5vdFJldGFpbikgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgYXV0byBjcmVkZW50aWFsID0gcmV0YWluUHRyKGNyZWRlbnRp
YWxOb3RSZXRhaW4pOwotICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSByZXRhaW5QdHIoZXJy
b3JOb3RSZXRhaW4pOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgQXV0aGVudGljYXRvclJlc3Bv
bnNlRGF0YSByZXNwb25zZSA9IHsgfTsKLSAgICAgICAgICAgICAgICBBdXRoZW50aWNhdG9yQXR0
YWNobWVudCBhdHRhY2htZW50OwotICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkRhdGEgZXhjZXB0
aW9uRGF0YSA9IHsgfTsKLQotICAgICAgICAgICAgICAgIGlmIChbY3JlZGVudGlhbCBpc0tpbmRP
ZkNsYXNzOmdldEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbkNsYXNz
KCldKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0
YWNobWVudDo6UGxhdGZvcm07Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAg
IEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0cmF0aW9u
Q3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3Bv
bnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmNyZWRlbnRp
YWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0g
dG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0
QVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsK
LSAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
OjpDcm9zc1BsYXRmb3JtOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICBB
U0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb24gKnJlZ2lzdHJhdGlv
bkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdldCgpOwotICAgICAgICAgICAgICAgICAgICByZXNw
b25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50
aWFsSUQpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCA9
IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNsYXNzOmdl
dEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbkNsYXNzKCldKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxh
dGZvcm07Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NQbGF0Zm9y
bVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVk
ZW50aWFsLmdldCgpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJy
YXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwotICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0
aW9uQ3JlZGVudGlhbC5hdXRoZW50aWNhdG9yRGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlLnNpZ25hdHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWdu
YXR1cmUpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9BcnJh
eUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLnVzZXJIYW5kbGUpOwotICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1cml0eUtleVB1
YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25DbGFzcygpXSkgewotICAgICAgICAgICAgICAgICAg
ICBhdHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm07Ci0g
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICBBU0NTZWN1cml0eUtleVB1Ymxp
Y0tleUNyZWRlbnRpYWxBc3NlcnRpb24gKmFzc2VydGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFs
LmdldCgpOwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZm
ZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgICAgICAg
ICByZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3Jl
ZGVudGlhbC5hdXRoZW50aWNhdG9yRGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
LnNpZ25hdHVyZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5zaWduYXR1cmUp
OwotICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9BcnJheUJ1ZmZl
cihhc3NlcnRpb25DcmVkZW50aWFsLnVzZXJIYW5kbGUpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSAoQXV0aGVudGljYXRvckF0dGFj
aG1lbnQpIDA7Ci0gICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29k
ZTsKLSAgICAgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IG5pbDsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKFtlcnJvci5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5n
OldLRXJyb3JEb21haW5dKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25Db2Rl
ID0gdG9FeGNlcHRpb25Db2RlKGVycm9yLmdldCgpLmNvZGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3JNZXNzYWdlID0gZXJyb3IuZ2V0KCkudXNlckluZm9bTlNMb2NhbGl6ZWREZXNj
cmlwdGlvbktleV07Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25Db2RlID0gTm90QWxsb3dlZEVycm9yOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoW2Vycm9yLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6QVND
QXV0aG9yaXphdGlvbkVycm9yRG9tYWluXSAmJiBlcnJvci5nZXQoKS5jb2RlID09IEFTQ0F1dGhv
cml6YXRpb25FcnJvclVzZXJDYW5jZWxlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
cnJvck1lc3NhZ2UgPSBAIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVz
ZXIuIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIk9wZXJhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRhdGEgPSB7IGV4Y2Vw
dGlvbkNvZGUsIGVycm9yTWVzc2FnZSB9OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGhhbmRsZXIocmVzcG9uc2UsIGF0dGFjaG1lbnQsIGV4Y2VwdGlvbkRhdGEpOwotI2lm
IFBMQVRGT1JNKE1BQykKKyAgICAgICAgICAgIFt3ZWFrVGhpcy0+bV9wcmVzZW50ZXIgcHJlc2Vu
dFdpdGhXaW5kb3c6d2luZG93LmdldCgpIGRhZW1vbkVuZHBvaW50OmRhZW1vbkVuZHBvaW50Lmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcHJveHkgPSBXVEZNb3ZlKHByb3h5
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oaWQgPEFT
Q0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUg
eworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWRlbnRpYWwsIGVycm9yKTsK
ICAgICAgICAgICAgIH0pLmdldCgpXTsKLSNlbmRpZgogICAgICAgICB9KTsKICAgICB9KS5nZXQo
KV07CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29t
cGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIoW2dldEFTQ1dlYktpdFNQ
SVN1cHBvcnRDbGFzcygpIHNob3VsZFVzZUFsdGVybmF0ZUNyZWRlbnRpYWxTdG9yZV0pOwogfQog
CiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQ
bGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKaW5k
ZXggMDgyMTc3ODE2ODgzNTEyNzhlMGNlODA4NDFiYmZjZjczNmYyNWQ5Yi4uYjgzOTY1MDRlMWM5
NDMxZDRhZmUzMDY3MDdhODA5ZGY0NzNlYThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0aW9uUmVxdWVzdERhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwuaCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5j
bHVkZSAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HbG9iYWxGcmFtZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucy5oPgpAQCAtNTYsNiArNTcsNyBAQCBzdHJ1Y3QgV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0
RGF0YSB7CiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmU7CiAgICAgU3RyaW5nIGNhY2hl
ZFBpbjsgLy8gT25seSB1c2VkIHRvIGltcHJvdmUgTkZDIENsaWVudCBQSU4gZXhwZXJpZW5jZS4K
ICAgICBXZWFrUHRyPEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbD4gd2Vha1BhbmVsOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWF0aW9uUmVxdWlyZW1lbnQ+IG1lZGlhdGlvbjsK
IH07CiAKIFdlYkNvcmU6OkNsaWVudERhdGFUeXBlIGdldENsaWVudERhdGFUeXBlKGNvbnN0IHN0
ZDo6dmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYjEx
YzU4OTUzMjliZDI1ZGVmODI5YTQxYTExYzE1MjYwNzRjZGNjNy4uZjU5ZTk0YTk1NjlmNWU4MTRj
MjlmM2JiYzJkZTFmZWEzMjQ3ODk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIFdlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkoKQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVu
dGlhbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywg
VmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gp
LCBXVEZNb3ZlKG9wdGlvbnMpLCBtX3dlYlBhZ2VQcm94eSwgV2ViQXV0aGVudGljYXRpb25QYW5l
bFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7IG1f
d2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1vdmUoZnJhbWVJbmZvKSwg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25z
KSwgbV93ZWJQYWdlUHJveHksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxh
YmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQ
YWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSwgU3RyaW5nKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCB9LCBXVEZNb3ZlKGhhbmRsZXIp
KTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0
aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBW
ZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMm
JiBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
OmdldEFzc2VydGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zJiYgb3B0aW9ucywgTWVkaWF0aW9uUmVxdWlyZW1lbnQgbWVkaWF0aW9uLCBib29s
IHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxl
cikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25z
KSwgbV93ZWJQYWdlUHJveHksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxh
YmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQ
YWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxl
UmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1fd2ViUGFnZVByb3h5
LCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xv
YmFsRnJhbWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQg
fSwgV1RGTW92ZShmcmFtZUluZm8pLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBu
dWxscHRyLCBtZWRpYXRpb24gfSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRp
b25SZXF1ZXN0RGF0YSYmIGRhdGEsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
CkBAIC0xMDYsNiArMTA2LDExIEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHk6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsCiB7CiAgICAgaGFu
ZGxlcihMb2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxlKCkpOwogfQorCit2b2lkIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1
ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIoZmFsc2UpOwor
fQogI2VuZGlmIC8vICFIQVZFKFVOSUZJRURfQVNDX0FVVEhfVUkpCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5LmgKaW5kZXggODY5NzFkYTdjODYwOGE4N2IwYmRmZThhMzY4NDk5MTE5OGM2MzQ4MS4uMzlj
ODNjY2FiZmIwZmJkM2RiMmY2YWEyMGQxZWJlNTVjYjRhNzVhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNjksOCArNzAsOSBAQCBwcml2YXRlOgogCiAg
ICAgLy8gUmVjZWl2ZXJzLgogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiwgYm9vbCBwcm9jZXNzaW5n
VXNlckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGdldEFz
c2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgVmVjdG9y
PHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiYsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXImJik7CisgICAgdm9pZCBnZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBG
cmFtZUluZm9EYXRhJiYsIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmLCBXZWJDb3JlOjpDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50LCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwg
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxh
dGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJik7Cisg
ICAgdm9pZCBpc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhh
bmRsZXImJik7CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1
ZXN0RGF0YSYmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggY2I5M2M4OWYyNDQ3MGYzOTlhMGIxOWIxZDMyOWU3N2E3Zjc1NmFmYS4uYjQwMWJk
ZjVkYTlmOGFmMDgyNmUzNDhhN2JmNzUzYWIzMDE5NGMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
QEAgLTI3LDcgKzI3LDggQEAKIG1lc3NhZ2VzIC0+IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgTWFrZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJ
bmZvLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUp
IC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVt
OmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCi0gICAgR2V0QXNzZXJ0aW9u
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5n
VXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YSBkYXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2ht
ZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAg
R2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVj
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgZW51
bTp1aW50OF90IFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6TWVkaWF0aW9uUmVx
dWlyZW1lbnQgbWVkaWF0aW9uLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVj
dCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBpc0NvbmRpdGlvbmFsTWVkaWF0aW9u
QXZhaWxhYmxlKCkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogICAgIElzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSgpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRl
eCBiZWMyNmFkODQ2ZjRjMzBhNzcwNjM2ZWZkODU2NDE4ZmU5NzYxM2Q4Li5iMWJhM2U0MTNkYjcz
MmY5MDVjNjhmYTcyMDQzNDZkN2RhNjgyY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIFdlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBj
b25zdCBTZWN1cgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZVdlYkF1dGhuUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok1ha2VDcmVkZW50aWFsKGhhc2gsIG9w
dGlvbnMsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAK
LXZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIE1lZGlhdGlvblJlcXVpcmVtZW50IG1l
ZGlhdGlvbiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKICAgICBhdXRv
KiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKICAgICBpZiAoIXdl
YkZyYW1lKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdAogICAgIGJv
b2wgdXNlV2ViQXV0aG5Qcm9jZXNzID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQoKTsKICNlbmRpZgogICAgIGlm
ICghdXNlV2ViQXV0aG5Qcm9jZXNzKSB7Ci0gICAgICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpHZXRBc3Nl
cnRpb24od2ViRnJhbWUtPmZyYW1lSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgaGFzaCwgb3B0aW9u
cywgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICAgICAg
bV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHk6OkdldEFzc2VydGlvbih3ZWJGcmFtZS0+ZnJhbWVJRCgpLCB3ZWJGcmFt
ZS0+aW5mbygpLCBoYXNoLCBvcHRpb25zLCBtZWRpYXRpb24sIGlzUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKSwgV1RGTW92ZShoYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEw
Niw2ICsxMDYsMTEgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2Vy
dGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3VyaXQKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpHZXRBc3NlcnRpb24oaGFzaCwgb3B0aW9ucywgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUp
LCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxl
ciYmIGhhbmRsZXIpCit7CisgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzQ29uZGl0aW9uYWxNZWRpYXRp
b25BdmFpbGFibGUoKSwgV1RGTW92ZShoYW5kbGVyKSk7Cit9OworCiB2b2lkIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewogI2lmIEhBVkUoVU5J
RklFRF9BU0NfQVVUSF9VSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaAppbmRleCA1ZTFjN2RkZjUxOGU5OWNkYTdlMDYwZDgwN2EwOTgyODRlZDA0ZjRkLi4y
NTljOWU1NjJjMzkzYjBlNjNlYmI3OGUzZjc3YzI3OWRhNjk3MmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC00MSw3ICs0MSw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xp
ZW50CiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIFdlYkNvcmU6OlJl
cXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGdldEFzc2VydGlvbihj
b25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CisgICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwg
Y29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgV2ViQ29y
ZTo6TWVkaWF0aW9uUmVxdWlyZW1lbnQsIFdlYkNvcmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKKyAgICB2b2lkIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoV2Vi
Q29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGlzVXNlclZl
cmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRVc2VyR2VzdHVyZVJlcXVpcmVt
ZW50KCkgZmluYWwgeyBtX3JlcXVpcmVVc2VyR2VzdHVyZSA9IGZhbHNlOyB9CiAK
</data>
<flag name="commit-queue"
          id="479641"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452557</attachid>
            <date>2022-02-18 12:07:56 -0800</date>
            <delta_ts>2022-02-18 13:09:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236820-20220218120754.patch</filename>
            <type>text/plain</type>
            <size>49157</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTliZTFmYWY2Zjg0OGVk
MTE2YzgxY2FmMmVjNGQzNjA5OGM4M2U0MC4uZmZjNThhYWNkMmU4MGJkYzAzZTE3ODYwNmU2ZDg4
MTg1MDcyMjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE4ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
Zm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODIwCisgICAgICAgIHJkYXI6Ly84NDgyMTk0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0gYW5kIENocmlzIER1bWV6LgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBtZWRpYXRpb24sIGFzIGRl
ZmluZWQgaW4gdGhlCisgICAgICAgIGNyZWRlbnRpYWxzIG1hbmFnZW1lbnQgc3BlYzogaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jcmVkZW50aWFsLW1hbmFnZW1lbnQvI2RvbS1jcmVk
ZW50aWFsbWVkaWF0aW9ucmVxdWlyZW1lbnQtY29uZGl0aW9uYWwKKworICAgICAgICAqIE1vZHVs
ZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJhc2ljQ3JlZGVudGlhbDo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSk6
CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlh
bC5pZGw6CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGw6CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1l
ZGlhdGlvbkF2YWlsYWJsZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0xOCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAg
PGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0gQ2Fubm90IGZpbmQgT3BlbkdM
IHdoZW4gc3lzdGVtIHByb3ZpZGVzIG9wZW5nbC5wYyBpbnN0ZWFkIG9mIGdsLnBjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDY4ZDZiZGUxNjNlZmYxNDQwMTA4YmE1YmMzYjA1YTU2MjkwMGI0ZTIuLmQ1NTViNDExZDhi
YWFhMDdmN2ZmM2NmNjI5OGFmYzMzMTExNTc1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMjItMDItMTggIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtX
ZWJBdXRobl0gU3VwcG9ydCBmb3IgY29uZGl0aW9uYWwgbWVkaWF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4MjAKKyAgICAgICAgcmRhcjov
Lzg0ODIxOTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbSBhbmQgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGNvbmRpdGlvbmFs
IG1lZGlhdGlvbiwgYXMgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgY3JlZGVudGlhbHMgbWFuYWdl
bWVudCBzcGVjOiBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLWNyZWRlbnRpYWwtbWFu
YWdlbWVudC8jZG9tLWNyZWRlbnRpYWxtZWRpYXRpb25yZXF1aXJlbWVudC1jb25kaXRpb25hbAor
CisgICAgICAgICogUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3Jl
U1BJLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25maWd1
cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Y29udGV4dEZvclJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cGVyZm9ybVJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXND
b25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eTo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0
QXNzZXJ0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorCiAyMDIyLTAyLTE4ICBBZHJpYW4gUGVyZXogZGUg
Q2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBDYW5ub3QgZmlu
ZCBPcGVuR0wgd2hlbiBzeXN0ZW0gcHJvdmlkZXMgb3BlbmdsLnBjIGluc3RlYWQgb2YgZ2wucGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
QmFzaWNDcmVkZW50aWFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1h
bmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcAppbmRleCBhMjNkZjEwN2YxNjVkZmI3MTE0Y2Uy
OThiNTQ4ODBhN2I3OWNlNjJmLi4zZjlhNzRlZDA5YTNmOWFhZTdjYWRjY2Q0Y2RkM2RkOGE5N2Uz
MWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2Vt
ZW50L0Jhc2ljQ3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVk
ZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQmFzaWNDcmVkZW50aWFsLmgiCiAKKyNpbmNs
dWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDYgKzUyLDE0IEBAIFN0cmluZyBCYXNpY0Ny
ZWRlbnRpYWw6OnR5cGUoKSBjb25zdAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCit2
b2lkIEJhc2ljQ3JlZGVudGlhbDo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShEb2N1
bWVudCYgZG9jdW1lbnQsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2Up
Cit7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCisgICAgICAgIHBhZ2Ut
PmF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpLmlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFi
bGUoV1RGTW92ZShwcm9taXNlKSk7CisgICAgZWxzZQorICAgICAgICBwcm9taXNlLnJlamVjdChF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlh
bC5oCmluZGV4IDNiOGYxNDIyMmVjNGFjNWY2NzIxMDc5MGE1ZjlmYTU1ZDNlY2FhMTkuLjVkN2U0
NDEyMzY0ZTdlNzQ4Y2Q2NjViMjkwMmU4MjQxNTgwZmIxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRl
bnRpYWwuaApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHR5cGUoKSBjb25z
dDsKICAgICBEaXNjb3ZlcnkgZGlzY292ZXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNjb3Zlcnk7
IH0KIAorICAgIHN0YXRpYyB2b2lkIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoRG9j
dW1lbnQmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7CisKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1faWQ7CiAgICAgVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlh
bC5pZGwKaW5kZXggNDk5MzE3ZTc4Y2U3NzQxOTg0Yzc1NjJjMDFmNWVmZDk0ZGQ1NDMwZC4uMjQ5
MjIyNWMwNWFlMzU0ODNiNDRjYzkxY2YyZDRjZDFhYjc1NDk0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWND
cmVkZW50aWFsLmlkbApAQCAtMzMsNCArMzMsNiBAQAogXSBpbnRlcmZhY2UgQmFzaWNDcmVkZW50
aWFsIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGlkOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKKworICAgIFtDYWxsV2l0aD1DdXJyZW50RG9jdW1l
bnRdIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFi
bGUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxt
YW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaAppbmRl
eCA4MWM5NGVhYWZhNzU5ZGQ4ZDI2OTU1M2FlMzE4YjY4ZjQxZmRkNTgzLi5iNmNmNDE2MDU5NmY0
NjM3NmJmNGU2ODliMTBjNTQxMDc2NWNjMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zLmgKQEAgLTM1LDggKzM1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQWJvcnRTaWduYWw7CiAKK2VudW0gY2xhc3MgTWVkaWF0aW9uUmVxdWlyZW1lbnQg
OiB1aW50OF90IHsgU2lsZW50LCBPcHRpb25hbCwgUmVxdWlyZWQsIENvbmRpdGlvbmFsIH07CisK
IHN0cnVjdCBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgewotICAgIGVudW0gY2xhc3MgTWVkaWF0
aW9uUmVxdWlyZW1lbnQgeyBTaWxlbnQsIE9wdGlvbmFsLCBSZXF1aXJlZCB9OworICAgIHVzaW5n
IE1lZGlhdGlvblJlcXVpcmVtZW50ID0gTWVkaWF0aW9uUmVxdWlyZW1lbnQ7CiAKICAgICBNZWRp
YXRpb25SZXF1aXJlbWVudCBtZWRpYXRpb247CiAgICAgUmVmUHRyPEFib3J0U2lnbmFsPiBzaWdu
YWw7CkBAIC00NSw0ICs0NywxOSBAQCBzdHJ1Y3QgQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIHsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM6Ok1l
ZGlhdGlvblJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAg
ICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJl
bWVudCwKKyAgICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRp
b25SZXF1aXJlbWVudDo6U2lsZW50LAorICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50OjpPcHRpb25hbCwKKyAgICAgICAgV2ViQ29y
ZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudDo6UmVxdWly
ZWQsCisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6TWVkaWF0aW9u
UmVxdWlyZW1lbnQ6OkNvbmRpdGlvbmFsCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMuaWRsCmluZGV4IDkzYTBjZjE0NzI4YWEyODY5ZTU4MDlmNTNl
ZmYxOTgyYjNhODdlYTkuLjdkYjU5ZDlhYjIxMmIxMTcxYWM4MWI2YmM0NDQxYWQyYjhhODFiOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGwKQEAgLTI5
LDcgKzI5LDggQEAKIF0gZW51bSBDcmVkZW50aWFsTWVkaWF0aW9uUmVxdWlyZW1lbnQgewogICAg
ICJzaWxlbnQiLAogICAgICJvcHRpb25hbCIsCi0gICAgInJlcXVpcmVkIgorICAgICJyZXF1aXJl
ZCIsCisgICAgImNvbmRpdGlvbmFsIgogfTsKIAogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxz
Q29udGFpbmVyLmNwcAppbmRleCBjMWFjNzBiZjY3MmM5MGEwNWM4N2FhNDE5MzA1ZWQ1NWQzNmE3
YzI5Li45NjA2MDhjYTEzNWY4YWM2OTU2ZmE5Y2YyM2YyM2E4OTU0ZTQ4YWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxz
Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIENy
ZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9u
cywgQ3JlZGVudGlhbFBybwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kb2N1bWVu
dC0+cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5kaXNjb3ZlckZyb21FeHRlcm5h
bFNvdXJjZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUoKSwgc2NvcGUoKSwg
V1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fZG9jdW1l
bnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuZGlzY292ZXJGcm9tRXh0ZXJu
YWxTb3VyY2UoKm1fZG9jdW1lbnQsIFdURk1vdmUob3B0aW9ucyksIHNjb3BlKCksIFdURk1vdmUo
cHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpzdG9yZShjb25zdCBC
YXNpY0NyZWRlbnRpYWwmLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHAKaW5kZXggNWQ0Nzc3YjhjMDNhMDkyZjcxOTFkZTQ0NDU0OGVhN2Y5YzZmM2M3
Ni4uNTQ5NjVmZjJlYWVjZWFlN2VjODg3MDBlYzYyZjE0Mzc5YzdmZGExZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRmVhdHVyZVBvbGljeS5oIgogI2luY2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgi
CisjaW5jbHVkZSAiSlNDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCIKICNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWwuaCIKICNp
bmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgiCkBAIC0xNzYsMTIg
KzE3NywxMyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAgIG1fY2xpZW50LT5tYWtlQ3Jl
ZGVudGlhbCgqZnJhbWUsIGNhbGxlck9yaWdpbiwgY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25z
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgV2ViQXV0aG46
OlNjb3BlIHNjb3BlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRp
YWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIENy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIHJlcXVlc3RPcHRpb25zLCBXZWJBdXRobjo6U2NvcGUg
c2NvcGUsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKIHsKICAgICB1c2luZyBu
YW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CiAKICAgICBhdXRvJiBj
YWxsZXJPcmlnaW4gPSBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOwogICAgIGF1dG8qIGZyYW1l
ID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBjb25zdCBhdXRvJiBvcHRpb25zID0gcmVxdWVzdE9w
dGlvbnMucHVibGljS2V5LnZhbHVlKCk7CiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNjcmVh
dGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTdGVwIDEsIDMsIDEz
IGFyZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIuCkBAIC0yMzAsNyArMjMyLDcgQEAgdm9pZCBBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJh
Y2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChB
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQg
YXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgYXV0
byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwgPSBXVEZNb3ZlKHJlcXVlc3RP
cHRpb25zLnNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRl
ZCgpKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9y
LCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVy
RnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWUKICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoZXhjZXB0aW9uLnRvRXhjZXB0aW9uKCkpOwogICAgIH07CiAgICAgLy8gQXN5bmMg
b3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgot
ICAgIG1fY2xpZW50LT5nZXRBc3NlcnRpb24oKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVudERh
dGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fY2xpZW50LT5n
ZXRBc3NlcnRpb24oKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVudERhdGFKc29uSGFzaCwgb3B0
aW9ucywgcmVxdWVzdE9wdGlvbnMubWVkaWF0aW9uLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
IHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJv
bWlzZSkgY29uc3QKQEAgLTI2Niw2ICsyNjgsMjEgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET00K
ICAgICBtX2NsaWVudC0+aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxh
YmxlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorCit2b2lkIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShET01Qcm9taXNl
RGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKSBjb25zdAoreworICAgIGlmICghbV9jbGll
bnQpICB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwg
IlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0gKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3Vs
dCk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBo
YW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAgbV9jbGllbnQtPmlzQ29uZGl0aW9uYWxNZWRp
YXRpb25BdmFpbGFibGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6cmVzZXRVc2VyR2VzdHVyZVJlcXVpcmVtZW50KCkKIHsK
ICAgICBtX2NsaWVudC0+cmVzZXRVc2VyR2VzdHVyZVJlcXVpcmVtZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaAppbmRleCBmNDk1MDMwODZjOWFjYzc5MTkzMzg3Zjc2ZmI2YTViZWEyMDc4MGFiLi40
ZDlhYmE2OGU4ODgzMDUwODliZmUxOTMwYzM1MDhjYWRmNTNmZWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiAKIHN0cnVjdCBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9uczsKK3N0cnVjdCBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKIApAQCAtNTgs
OCArNTksOSBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVt
ZW50IHN0YXRpYyBtZXRob2RzIG9mIFB1YmxpY0tleUNyZWRlbnRpYWwuCiAgICAgdm9pZCBjcmVh
dGUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJiwgV2ViQXV0aG46OlNjb3BlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQ
cm9taXNlJiYpIGNvbnN0OwotICAgIHZvaWQgZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29u
c3QgRG9jdW1lbnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBX
ZWJBdXRobjo6U2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2Um
JikgY29uc3Q7CisgICAgdm9pZCBkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1
bWVudCYsIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmLCBXZWJBdXRobjo6U2NvcGUsIENyZWRl
bnRpYWxQcm9taXNlJiYpIGNvbnN0OwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKSBj
b25zdDsKKyAgICB2b2lkIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoRE9NUHJvbWlz
ZURlZmVycmVkPElETEJvb2xlYW4+JiYpIGNvbnN0OwogCiAgICAgdm9pZCByZXNldFVzZXJHZXN0
dXJlUmVxdWlyZW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXgg
NjQ2MWFlOTY0ZmFiZDgyMmRmYjEwMDg3MDU2ODFjNmU0NTU3YjQ5Yy4uM2JiNjVhODZiOGYzM2Rj
YjM2MjQ2Yjg5Y2VmZDk2YWRiMjdiOTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAKIGVudW0gY2xhc3MgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ7CitlbnVtIGNsYXNzIE1lZGlh
dGlvblJlcXVpcmVtZW50IDogdWludDhfdDsKIAogc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNwb25z
ZURhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKQEAgLTQ2
LDE2ICs0NywxNyBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwog
dXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRhY2htZW50LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYpPjsKIHVzaW5nIFF1ZXJ5Q29t
cGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPjsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50IDogcHVibGljIENh
bk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4geworY2xhc3MgQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dCk7CiBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZh
dWx0OwogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCgpID0gZGVm
YXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYm
KSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGdldEFzc2VydGlvbihjb25zdCBGcmFtZSYsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIHsg
fTsKLSAgICB2aXJ0dWFsIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgeyB9OworICAgIHZpcnR1YWwgdm9p
ZCBtYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldEFzc2VydGlvbihjb25zdCBGcmFtZSYsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
JiwgTWVkaWF0aW9uUmVxdWlyZW1lbnQsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoUXVlcnlD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGlzVXNlclZlcmlmeWlu
Z1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1lbnQoKSB7
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZTBlMjQxZTcxMjUwYzE1YTU3ZmY0ZWM0Nzc3YWNjNGQyOTg1ZTEwYy4uNzQx
MDc2MjAxMDUzZWY3NTdiMzM3ZjAyYmY1Y2ZiYTlhNmU0NGUxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM3NCw3ICsyMzc0
LDcgQEAKIAkJNzdBMTdBQTcxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3
QUEzMTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggKi87IH07CiAJ
CTc3RDUxMDA0MUVENEY3MUUwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdENTBGRkYx
RUQ0RjcwQzAwREE0Qzg3IC8qIEpTQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggKi87IH07CiAJ
CTc3RDUxMDA2MUVENEY3MjUwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RDUwRkZE
MUVENEY3MEMwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCAqLzsgfTsK
LQkJNzdENTEwMEIxRUQ1RTI4ODAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdENTBGRkIx
RUQ0RjE2QzAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovOyB9OworCQk3
N0Q1MTAwQjFFRDVFMjg4MDBEQTRDODcgLyogQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0Q1MEZGQjFFRDRG
MTZDMDBEQTRDODcgLyogQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzdENTEwMEQxRUQ1RTI5NTAwREE0
Qzg3IC8qIENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QUFENjg1MUVDRkJEMzkwMEJGQTJEMSAvKiBDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi87IH07CiAJCTc3RDUxMDE3MUVENjAyMjIwMERBNEM4
NyAvKiBDcmVkZW50aWFsc0NvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzdENTEwMTYxRUQ2MDIxQjAwREE0Qzg3IC8qIENyZWRlbnRpYWxz
Q29udGFpbmVyLmggKi87IH07CiAJCTc3RDUxMDFDMUVENzIyQkYwMERBNEM4NyAvKiBKU0NyZWRl
bnRpYWxzQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3N0Q1MTAxQjFFRDcyMkI1MDBEQTRDODcgLyogSlNDcmVkZW50aWFsc0NvbnRhaW5l
ci5oICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2Ev
QXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
c3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKaW5kZXggZDIyYWIyY2I3
ZGE1MzVjYjVhNDI1MDAxYjgzMzdmNWFmNTg0MjZkZi4uMzdhZDMxYmI2ZjQxNTM2MzZjMDQ2OTAw
NDZlN2EyNWRkYjI4MzQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
Q29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCkBAIC0y
MjksNiArMjI5LDExIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBBU0NDcmVkZW50
aWFsUmVxdWVzdFR5cGVzKSB7CiAKIEBlbmQKIAordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
QVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlKSB7CisgICAgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxl
TW9kYWwsCisgICAgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlQXV0b0ZpbGwsCit9OworCiBAaW50
ZXJmYWNlIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dCA6IE5TT2JqZWN0IDxOU1NlY3VyZUNv
ZGluZz4KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CkBAIC0yNDUsNiAr
MjUwLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIEFTQ0NyZWRlbnRpYWxSZXF1
ZXN0VHlwZXMpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgQVNDUHVi
bGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnMgKnBsYXRmb3JtS2V5Q3JlZGVudGlhbEFz
c2VydGlvbk9wdGlvbnM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIEFT
Q1B1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zICpzZWN1cml0eUtleUNyZWRlbnRp
YWxBc3NlcnRpb25PcHRpb25zOwogCitAcHJvcGVydHkgKG5vbmF0b21pYykgQVNDcmVkZW50aWFs
UmVxdWVzdFN0eWxlIHJlcXVlc3RTdHlsZTsKKwogQGVuZAogCiBAcHJvdG9jb2wgQVNDQ3JlZGVu
dGlhbFByb3RvY29sIDxOU09iamVjdCwgTlNTZWN1cmVDb2Rpbmc+CkBAIC0zMjAsNiArMzI3LDgg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlw
ZXMpIHsKIC0gKHZvaWQpdXNlclNlbGVjdGVkTG9naW5DaG9pY2U6KGlkIDxBU0NMb2dpbkNob2lj
ZVByb3RvY29sPilsb2dpbkNob2ljZSBhdXRoZW50aWNhdGVkQ29udGV4dDooTEFDb250ZXh0ICop
Y29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90
b2NvbD4gX051bGxhYmxlLCBOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsK
IAogLSAodm9pZClyZXF1ZXN0Q29tcGxldGVkV2l0aENyZWRlbnRpYWw6KG51bGxhYmxlIGlkPEFT
Q0NyZWRlbnRpYWxQcm90b2NvbD4pY3JlZGVudGlhbCBlcnJvcjoobnVsbGFibGUgTlNFcnJvciAq
KWVycm9yOworCistICh2b2lkKXBlcmZvcm1BdXRvRmlsbEF1dGhvcml6YXRpb25SZXF1ZXN0c0Zv
ckNvbnRleHQ6KEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dCAqKWNvbnRleHQgd2l0aENvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBfTnVsbGFi
bGUgY3JlZGVudGlhbCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRs
ZXI7CiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCA3ZDRk
NjBkOTcxZjFmNThhMzE2YjI4YWRmYzY1Yzk3MDQ5Y2RhYjE3Li5jZTgzNDY3OTgyYzY4OWM2NDVl
Y2NiNjNlMTcxZDUwY2Y5Y2JlMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAt
ODEzLDcgKzgxMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uCiAgICAgICAgICAgICBoYW5k
bGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpleGNl
cHRpb24uY29kZSB1c2VySW5mbzpAeyBOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5OiBleGNlcHRp
b24ubWVzc2FnZSB9XSk7CiAgICAgICAgIH0pOwogICAgIH07Ci0gICAgX3BhbmVsLT5oYW5kbGVS
ZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVy
dFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJL
aXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBz
dGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0
aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmlu
ZygpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogI2VuZGlm
CiB9CiAKQEAgLTgyNyw3ICs4MjcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvbgogICAgICAg
ICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWlu
IGNvZGU6ZXhjZXB0aW9uLmNvZGUgdXNlckluZm86QHsgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktl
eTogZXhjZXB0aW9uLm1lc3NhZ2UgfV0pOwogICAgICAgICB9KTsKICAgICB9OwotICAgIF9wYW5l
bC0+aGFuZGxlUmVxdWVzdCh7IHZlY3RvckZyb21OU0RhdGEoY2xpZW50RGF0YUhhc2gpLCBbX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9w
dGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJp
bmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgX3BhbmVsLT5oYW5kbGVS
ZXF1ZXN0KHsgdmVjdG9yRnJvbU5TRGF0YShjbGllbnREYXRhSGFzaCksIFtfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9uczpvcHRp
b25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2
YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBudWxs
cHRyLCBzdGQ6Om51bGxvcHQgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogI2VuZGlmCiB9CiAKQEAg
LTg3Nyw3ICs4NzcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcAogICAgICAgICAgICAgaGFu
ZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvclVua25vd24gdXNlckluZm86bmlsXSk7CiAgICAgICAgIH0pOwogICAgIH07Ci0gICAgX3Bh
bmVsLT5oYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RPcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51
bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUs
IG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgX3BhbmVsLT5oYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZSho
YXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RPcHRp
b25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRp
b25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0
cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoY2FsbGJhY2sp
KTsKICNlbmRpZgogfQogCkBAIC04OTEsNyArODkxLDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3AKICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tF
cnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOwogICAgICAgICB9
KTsKICAgICB9OwotICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IHZlY3RvckZyb21OU0RhdGEo
Y2xpZW50RGF0YUhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3Jl
UmVxdWVzdE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxs
b3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGNsaWVudERhdGFI
YXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RPcHRp
b25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRp
b25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0
cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoY2FsbGJhY2sp
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tCmluZGV4IDE5YWI3YTE4ZDIyZmZlM2NlYjYyYjk2
MGQ5YTFlMGIwNTkyYmZjNTMuLjcyNTgxMGI2MTA2ODM2ZTA4MmMwMzA0MjFjM2U1NzE4Yjk1ZjVi
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Lm1tCkBAIC0yMzYsNyArMjM2LDcgQEAgc3RhdGljIFJldGFpblB0cjxB
U0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJlcXVlc3RD
b250ZXgKICAgICByZXR1cm4gcmVxdWVzdENvbnRleHQ7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8
QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVz
dENvbnRleHQoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25z
LCBWZWN0b3I8dWludDhfdD4gaGFzaCkKK3N0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJl
cXVlc3RDb250ZXh0PiBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQoY29uc3Qg
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBWZWN0b3I8dWludDhf
dD4gaGFzaCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYXRpb25SZXF1aXJlbWVudD4gbWVk
aWF0aW9uKQogewogICAgIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZXMgcmVxdWVzdFR5cGVzID0g
QVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlUGxhdGZvcm1QdWJsaWNLZXlBc3NlcnRpb24gfCBBU0ND
cmVkZW50aWFsUmVxdWVzdFR5cGVTZWN1cml0eUtleVB1YmxpY0tleUFzc2VydGlvbjsKIApAQCAt
MjYwLDYgKzI2MCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250
ZXh0PiBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRlCiAKICAgICBhdXRvIHJlcXVl
c3RDb250ZXh0ID0gYWRvcHROUyhbYWxsb2NBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHRJbnN0
YW5jZSgpIGluaXRXaXRoUmVxdWVzdFR5cGVzOnJlcXVlc3RUeXBlc10pOwogICAgIFtyZXF1ZXN0
Q29udGV4dCBzZXRSZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlvbnMucnBJZF07CisgICAgaWYg
KG1lZGlhdGlvbiA9PSBNZWRpYXRpb25SZXF1aXJlbWVudDo6Q29uZGl0aW9uYWwgJiYgW3JlcXVl
c3RDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UmVxdWVzdFN0eWxlOild
KQorICAgICAgICByZXF1ZXN0Q29udGV4dC5nZXQoKS5yZXF1ZXN0U3R5bGUgPSBBU0NyZWRlbnRp
YWxSZXF1ZXN0U3R5bGVBdXRvRmlsbDsKIAogICAgIGlmIChyZXF1ZXN0VHlwZXMgJiBBU0NDcmVk
ZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbikgewogICAgICAgICBh
dXRvIGFzc2VydGlvbk9wdGlvbnMgPSBhZG9wdE5TKGFsbG9jQVNDUHVibGljS2V5Q3JlZGVudGlh
bEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpKTsKQEAgLTMwMCw3ICszMDIsNyBAQCBSZXRhaW5Q
dHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eTo6Y29udGV4dAogICAgIFdURjo6c3dpdGNoT24ocmVxdWVzdERhdGEub3B0aW9ucywg
WyZdKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMpIHsK
ICAgICAgICAgcmVzdWx0ID0gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleHQob3B0
aW9ucywgcmVxdWVzdERhdGEuaGFzaCk7CiAgICAgfSwgWyZdKGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykgewotICAgICAgICByZXN1bHQgPSBjb25maWd1
cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQob3B0aW9ucywgcmVxdWVzdERhdGEuaGFzaCk7
CisgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4dChv
cHRpb25zLCByZXF1ZXN0RGF0YS5oYXNoLCByZXF1ZXN0RGF0YS5tZWRpYXRpb24pOwogICAgIH0p
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zMDksODUgKzMxMSwxMDAgQEAgdm9pZCBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cGVyZm9ybVJlcXVlc3QoUmV0YWluUHRyPEFT
Q0NyZWRlbnRpYWxSZXEKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHROUyhbYWxsb2NBU0NBZ2Vu
dFByb3h5SW5zdGFuY2UoKSBpbml0XSk7CiAKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oaWQgPEFTQ0NyZWRlbnRp
YWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAg
ICBlbnN1cmVPbk1haW5SdW5Mb29wKFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgY3JlZGVu
dGlhbCA9IHJldGFpblB0cihjcmVkZW50aWFsKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgcmVzcG9u
c2U7CisgICAgICAgICAgICBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50OworICAg
ICAgICAgICAgRXhjZXB0aW9uRGF0YSBleGNlcHRpb25EYXRhOworCisgICAgICAgICAgICBpZiAo
W2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRp
YWxSZWdpc3RyYXRpb25DbGFzcygpXSkgeworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBB
dXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm07CisgICAgICAgICAgICAgICAgcmVzcG9u
c2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IHRydWU7CisKKyAgICAgICAg
ICAgICAgICBBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb24gKnJlZ2lz
dHJhdGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdldCgpOworICAgICAgICAgICAgICAgIHJl
c3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmNyZWRl
bnRpYWxJRCk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QgPSB0
b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuYXR0ZXN0YXRpb25PYmplY3QpOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNsYXNzOmdldEFTQ1Nl
Y3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbkNsYXNzKCldKSB7CisgICAg
ICAgICAgICAgICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1Bs
YXRmb3JtOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UgPSB0cnVlOworCisgICAgICAgICAgICAgICAgQVNDU2VjdXJpdHlLZXlQdWJs
aWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uICpyZWdpc3RyYXRpb25DcmVkZW50aWFsID0gY3Jl
ZGVudGlhbC5nZXQoKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlC
dWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOworICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRp
b25DcmVkZW50aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
W2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRp
YWxBc3NlcnRpb25DbGFzcygpXSkgeworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRo
ZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm07CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uu
aXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IGZhbHNlOworCisgICAgICAgICAg
ICAgICAgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uICphc3NlcnRpb25D
cmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQoKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5y
YXdJZCA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwor
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhID0gdG9BcnJheUJ1ZmZl
cihhc3NlcnRpb25DcmVkZW50aWFsLmF1dGhlbnRpY2F0b3JEYXRhKTsKKyAgICAgICAgICAgICAg
ICByZXNwb25zZS5zaWduYXR1cmUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRpYWwu
c2lnbmF0dXJlKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9BcnJh
eUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLnVzZXJIYW5kbGUpOworICAgICAgICAgICAgfSBl
bHNlIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNsYXNzOmdldEFTQ1NlY3VyaXR5S2V5UHVibGlj
S2V5Q3JlZGVudGlhbEFzc2VydGlvbkNsYXNzKCldKSB7CisgICAgICAgICAgICAgICAgYXR0YWNo
bWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtOworICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSBmYWxz
ZTsKKworICAgICAgICAgICAgICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbEFz
c2VydGlvbiAqYXNzZXJ0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CisgICAgICAg
ICAgICAgICAgcmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRp
YWwuY3JlZGVudGlhbElEKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5hdXRoZW50aWNhdG9y
RGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5hdXRoZW50aWNhdG9yRGF0
YSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2lnbmF0dXJlID0gdG9BcnJheUJ1ZmZlcihh
c3NlcnRpb25DcmVkZW50aWFsLnNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uu
dXNlckhhbmRsZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC51c2VySGFuZGxl
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXR0YWNobWVudCA9IChB
dXRoZW50aWNhdG9yQXR0YWNobWVudCkgMDsKKyAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGV4Y2VwdGlvbkNvZGU7CisgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9
IG5pbDsKKyAgICAgICAgICAgICAgICBpZiAoW2Vycm9yLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9T
dHJpbmc6V0tFcnJvckRvbWFpbl0pIHsKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ29k
ZSA9IHRvRXhjZXB0aW9uQ29kZShlcnJvci5nZXQoKS5jb2RlKTsKKyAgICAgICAgICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gZXJyb3IuZ2V0KCkudXNlckluZm9bTlNMb2NhbGl6ZWREZXNjcmlw
dGlvbktleV07CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9uQ29kZSA9IE5vdEFsbG93ZWRFcnJvcjsKKworICAgICAgICAgICAgICAgICAgICBp
ZiAoW2Vycm9yLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6QVNDQXV0aG9yaXphdGlvbkVy
cm9yRG9tYWluXSAmJiBlcnJvci5nZXQoKS5jb2RlID09IEFTQ0F1dGhvcml6YXRpb25FcnJvclVz
ZXJDYW5jZWxlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAiVGhp
cyByZXF1ZXN0IGhhcyBiZWVuIGNhbmNlbGxlZCBieSB0aGUgdXNlci4iOworICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIk9w
ZXJhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBl
eGNlcHRpb25EYXRhID0geyBleGNlcHRpb25Db2RlLCBlcnJvck1lc3NhZ2UgfTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZSwgYXR0YWNobWVudCwgZXhjZXB0
aW9uRGF0YSk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIAorICAgIGlmIChbcmVxdWVzdENv
bnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZXF1ZXN0U3R5bGUpXSAmJiByZXF1
ZXN0Q29udGV4dC5nZXQoKS5yZXF1ZXN0U3R5bGUgPT0gQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxl
QXV0b0ZpbGwpIHsKKyAgICAgICAgW3Byb3h5IHBlcmZvcm1BdXRvRmlsbEF1dGhvcml6YXRpb25S
ZXF1ZXN0c0ZvckNvbnRleHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5k
bGVyOm1ha2VCbG9ja1B0cihbcHJveHkgPSBXVEZNb3ZlKHByb3h5KSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2Nv
bD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY3JlZGVudGlhbCwgZXJyb3IpOworICAgICAgICB9KS5nZXQoKV07Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIFtwcm94
eSBwZXJmb3JtQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29udGV4dC5n
ZXQoKSB3aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtoYW5kbGVyID0gV1RGTW92
ZShoYW5kbGVyKSwgcHJveHkgPSBXVEZNb3ZlKHByb3h5KV0oaWQgPEFTQ0NyZWRlbnRpYWxQcm90
b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewotICAgICAgICBjYWxs
T25NYWluUnVuTG9vcChbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIHByb3h5ID0gV1RGTW92
ZShwcm94eSksIGNyZWRlbnRpYWwgPSByZXRhaW5QdHIoY3JlZGVudGlhbCksIGVycm9yID0gcmV0
YWluUHRyKGVycm9yKV0gKCkgbXV0YWJsZSB7CisgICAgW3Byb3h5IHBlcmZvcm1BdXRob3JpemF0
aW9uUmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhDb21wbGV0aW9u
SGFuZGxlcjptYWtlQmxvY2tQdHIoW3Byb3h5ID0gV1RGTW92ZShwcm94eSksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGlkIDxBU0NDcmVkZW50aWFsUHJv
dG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY3JlZGVudGlhbCwgZXJyb3IpOworICAgIH0pLmdldCgpXTsKICNlbGlm
IFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IG1fd2ViUGFn
ZVByb3h5LnBsYXRmb3JtV2luZG93KCk7Ci0gICAgW3Byb3h5IHBlcmZvcm1BdXRob3JpemF0aW9u
UmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhDbGVhcmFuY2VIYW5k
bGVyOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlciksIHdpbmRvdyA9IFdURk1vdmUod2luZG93KSwgcHJveHkgPSBXVEZN
b3ZlKHByb3h5KV0oTlNYUENMaXN0ZW5lckVuZHBvaW50ICpkYWVtb25FbmRwb2ludCwgTlNFcnJv
ciAqZXJyb3IpIG11dGFibGUgewotICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMs
IGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCB3aW5kb3cgPSBXVEZNb3ZlKHdpbmRvdyksIHBy
b3h5ID0gV1RGTW92ZShwcm94eSksIGRhZW1vbkVuZHBvaW50ID0gcmV0YWluUHRyKGRhZW1vbkVu
ZHBvaW50KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSAoKSBtdXRhYmxlIHsKKyAgICBbcHJv
eHkgcGVyZm9ybUF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNvbnRleHQ6cmVxdWVzdENvbnRleHQu
Z2V0KCkgd2l0aENsZWFyYW5jZUhhbmRsZXI6bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCB3aW5kb3cgPSBXVEZNb3ZlKHdpbmRvdyksIHByb3h5ID0gV1RGTW92ZShwcm94eSldKE5T
WFBDTGlzdGVuZXJFbmRwb2ludCAqZGFlbW9uRW5kcG9pbnQsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3aW5kb3cgPSBXVEZNb3ZlKHdpbmRv
dyksIHByb3h5ID0gV1RGTW92ZShwcm94eSksIGRhZW1vbkVuZHBvaW50ID0gcmV0YWluUHRyKGRh
ZW1vbkVuZHBvaW50KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIWRhZW1vbkVuZHBvaW50KSB7CiAgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY29ubmVjdCB0byBhdXRob3JpemF0aW9uIGRhZW1v
bjogJUBcbiIsIGVycm9yLmdldCgpKTsKLSAgICAgICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3Is
ICJPcGVyYXRpb24gZmFpbGVkLiIgfSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBlcnJvci5nZXQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcmVzZW50ZXIgPSBhZG9wdE5TKFthbGxv
Y0FTQ0F1dGhvcml6YXRpb25SZW1vdGVQcmVzZW50ZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICAg
ICAgICAgIFt3ZWFrVGhpcy0+bV9wcmVzZW50ZXIgcHJlc2VudFdpdGhXaW5kb3c6d2luZG93Lmdl
dCgpIGRhZW1vbkVuZHBvaW50OmRhZW1vbkVuZHBvaW50LmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Om1ha2VCbG9ja1B0cihbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIHByb3h5ID0gV1RGTW92
ZShwcm94eSldKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWxOb3RSZXRhaW4s
IE5TRXJyb3IgKmVycm9yTm90UmV0YWluKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBhdXRv
IGNyZWRlbnRpYWwgPSByZXRhaW5QdHIoY3JlZGVudGlhbE5vdFJldGFpbik7Ci0gICAgICAgICAg
ICAgICAgYXV0byBlcnJvciA9IHJldGFpblB0cihlcnJvck5vdFJldGFpbik7Ci0jZW5kaWYKLSAg
ICAgICAgICAgICAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIHJlc3BvbnNlID0geyB9Owot
ICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQ7Ci0gICAg
ICAgICAgICAgICAgRXhjZXB0aW9uRGF0YSBleGNlcHRpb25EYXRhID0geyB9OwotCi0gICAgICAg
ICAgICAgICAgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDUGxhdGZvcm1QdWJs
aWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybTsKLSAgICAg
ICAgICAgICAgICAgICAgcmVzcG9uc2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZSA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVk
ZW50aWFsUmVnaXN0cmF0aW9uICpyZWdpc3RyYXRpb25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5n
ZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVy
KHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuY3JlZGVudGlhbElEKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlv
bkNyZWRlbnRpYWwuYXR0ZXN0YXRpb25PYmplY3QpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNy
ZWRlbnRpYWxSZWdpc3RyYXRpb25DbGFzcygpXSkgewotICAgICAgICAgICAgICAgICAgICBhdHRh
Y2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm07Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Ug
PSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3Jl
ZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0cmF0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwu
Z2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZl
cihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJRCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRp
b25DcmVkZW50aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVk
ZW50aWFsQXNzZXJ0aW9uQ2xhc3MoKV0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVu
dCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IGZhbHNlOwot
Ci0gICAgICAgICAgICAgICAgICAgIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbEFzc2Vy
dGlvbiAqYXNzZXJ0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50
aWFsLmNyZWRlbnRpYWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF1dGhlbnRp
Y2F0b3JEYXRhID0gdG9BcnJheUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmF1dGhlbnRpY2F0
b3JEYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2lnbmF0dXJlID0gdG9BcnJh
eUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLnVzZXJIYW5kbGUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRp
YWwudXNlckhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBp
c0tpbmRPZkNsYXNzOmdldEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlv
bkNsYXNzKCldKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNh
dG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9u
c2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IGZhbHNlOwotCi0gICAgICAg
ICAgICAgICAgICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbiAq
YXNzZXJ0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmNy
ZWRlbnRpYWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF1dGhlbnRpY2F0b3JE
YXRhID0gdG9BcnJheUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmF1dGhlbnRpY2F0b3JEYXRh
KTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2lnbmF0dXJlID0gdG9BcnJheUJ1ZmZl
cihhc3NlcnRpb25DcmVkZW50aWFsLnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlLnVzZXJIYW5kbGUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRpYWwudXNl
ckhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
YXR0YWNobWVudCA9IChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkgMDsKLSAgICAgICAgICAgICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOwotICAgICAgICAgICAgICAgICAgICBO
U1N0cmluZyAqZXJyb3JNZXNzYWdlID0gbmlsOwotICAgICAgICAgICAgICAgICAgICBpZiAoW2Vy
cm9yLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6V0tFcnJvckRvbWFpbl0pIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNvZGUgPSB0b0V4Y2VwdGlvbkNvZGUoZXJyb3Iu
Z2V0KCkuY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnJv
ci5nZXQoKS51c2VySW5mb1tOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKLSAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNvZGUg
PSBOb3RBbGxvd2VkRXJyb3I7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbZXJyb3Iu
Z2V0KCkuZG9tYWluIGlzRXF1YWxUb1N0cmluZzpBU0NBdXRob3JpemF0aW9uRXJyb3JEb21haW5d
ICYmIGVycm9yLmdldCgpLmNvZGUgPT0gQVNDQXV0aG9yaXphdGlvbkVycm9yVXNlckNhbmNlbGVk
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAiVGhpcyByZXF1
ZXN0IGhhcyBiZWVuIGNhbmNlbGxlZCBieSB0aGUgdXNlci4iOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAi
T3BlcmF0aW9uIGZhaWxlZC4iOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uRGF0YSA9IHsgZXhjZXB0aW9uQ29kZSwgZXJyb3JNZXNzYWdlIH07
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZSwg
YXR0YWNobWVudCwgZXhjZXB0aW9uRGF0YSk7Ci0jaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAg
ICAgW3dlYWtUaGlzLT5tX3ByZXNlbnRlciBwcmVzZW50V2l0aFdpbmRvdzp3aW5kb3cuZ2V0KCkg
ZGFlbW9uRW5kcG9pbnQ6ZGFlbW9uRW5kcG9pbnQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtwcm94eSA9IFdURk1vdmUocHJveHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVk
ZW50aWFsLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoY3JlZGVudGlhbCwgZXJyb3IpOwogICAgICAgICAgICAgfSkuZ2V0KCldOwot
I2VuZGlmCiAgICAgICAgIH0pOwogICAgIH0pLmdldCgpXTsKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpCit9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzQ29uZGl0
aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
Cit7CisgICAgaGFuZGxlcihbZ2V0QVNDV2ViS2l0U1BJU3VwcG9ydENsYXNzKCkgc2hvdWxkVXNl
QWx0ZXJuYXRlQ3JlZGVudGlhbFN0b3JlXSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHk6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVx
dWVzdERhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaAppbmRleCAwODIxNzc4MTY4ODM1MTI3OGUwY2U4
MDg0MWJiZmNmNzM2ZjI1ZDliLi5iODM5NjUwNGUxYzk0MzFkNGFmZTMwNjcwN2E4MDlkZjQ3M2Vh
OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgog
I2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkZs
YWdzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CkBAIC01Niw2ICs1Nyw3IEBA
IHN0cnVjdCBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhIHsKICAgICBib29sIHByb2Nlc3Np
bmdVc2VyR2VzdHVyZTsKICAgICBTdHJpbmcgY2FjaGVkUGluOyAvLyBPbmx5IHVzZWQgdG8gaW1w
cm92ZSBORkMgQ2xpZW50IFBJTiBleHBlcmllbmNlLgogICAgIFdlYWtQdHI8QVBJOjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsPiB3ZWFrUGFuZWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpN
ZWRpYXRpb25SZXF1aXJlbWVudD4gbWVkaWF0aW9uOwogfTsKIAogV2ViQ29yZTo6Q2xpZW50RGF0
YVR5cGUgZ2V0Q2xpZW50RGF0YVR5cGUoY29uc3Qgc3RkOjp2YXJpYW50PFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBiMTFjNTg5NTMyOWJkMjVkZWY4MjlhNDFhMTFj
MTUyNjA3NGNkY2M3Li5mNTllOTRhOTU2OWY1ZTgxNGMyOWYzYmJjMmRlMWZlYTMyNDc4OTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
Y3BwCkBAIC01OCwxMiArNTgsMTIgQEAgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
On5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSgpCiAKIHZvaWQgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9ucywgYm9vbCBwcm9jZXNz
aW5nVXNlckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0g
ICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1fd2Vi
UGFnZVByb3h5LCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVs
bHB0ciwgR2xvYmFsRnJhbWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCks
IGZyYW1lSWQgfSwgV1RGTW92ZShmcmFtZUluZm8pLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0
cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJlcXVlc3Qo
eyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtX3dlYlBhZ2VQcm94eSwgV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1l
SWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1v
dmUoZnJhbWVJbmZvKSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciwg
c3RkOjpudWxsb3B0IH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1l
SWQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4m
JiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBNZWRp
YXRpb25SZXF1aXJlbWVudCBtZWRpYXRpb24sIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3Qo
eyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtX3dlYlBhZ2VQcm94eSwgV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1l
SWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1v
dmUoZnJhbWVJbmZvKSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9
LCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwg
V1RGTW92ZShvcHRpb25zKSwgbV93ZWJQYWdlUHJveHksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dl
YlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIsIG1lZGlhdGlvbiB9LCBXVEZN
b3ZlKGhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eTo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYgZGF0YSwgUmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKQEAgLTEwNiw2ICsxMDYsMTEgQEAgdm9p
ZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yQXZhaWwKIHsKICAgICBoYW5kbGVyKExvY2FsU2VydmljZTo6aXNBdmFp
bGFibGUoKSk7CiB9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Omlz
Q29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCit7CisgICAgaGFuZGxlcihmYWxzZSk7Cit9CiAjZW5kaWYgLy8gIUhBVkUoVU5JRklF
RF9BU0NfQVVUSF9VSSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAppbmRleCA4Njk3MWRhN2M4NjA4
YTg3YjBiZGZlOGEzNjg0OTkxMTk4YzYzNDgxLi4zOWM4M2NjYWJmYjBmYmQzZGIyZjZhYTIwZDFl
YmU1NWNiNGE3NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CkBAIC02OSw4ICs3MCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBSZWNlaXZlcnMuCiAgICAgdm9p
ZCBtYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyYmLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiwgYm9vbCBwcm9jZXNzaW5nVXNl
ckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGdldEFzc2Vy
dGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgVmVjdG9yPHVp
bnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
JiYsIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6TWVkaWF0aW9uUmVxdWlyZW1l
bnQsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIm
Jik7CiAgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGlzQ29uZGl0aW9uYWxNZWRp
YXRpb25BdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHZvaWQgaGFu
ZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYsIFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlciYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjYjkzYzg5ZjI0NDcwZjM5
OWEwYjE5YjFkMzI5ZTc3YTdmNzU2YWZhLi5iNDAxYmRmNWRhOWY4YWYwODI2ZTM0OGE3YmY3NTNh
YjMwMTk0YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjcsNyArMjcsOCBAQAogbWVzc2Fn
ZXMgLT4gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgTm90UmVmQ291bnRlZCB7CiAK
ICAgICBNYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiBoYXNo
LCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRp
b25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4
Y2VwdGlvbikgQXN5bmMKLSAgICBHZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBWZWN0b3I8
dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBHZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJ
bmZvLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudCBtZWRpYXRpb24sIGJvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1l
bnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBB
c3luYworICAgIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoKSAtPiAoYm9vbCByZXN1
bHQpIEFzeW5jCiAgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxh
YmxlKCkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IGJlYzI2YWQ4NDZmNGMzMGE3NzA2MzZl
ZmQ4NTY0MThmZTk3NjEzZDguLmIxYmEzZTQxM2RiNzMyZjkwNWM2OGZhNzIwNDM0NmQ3ZGE2ODJj
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3Bw
CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjptYWtl
Q3JlZGVudGlhbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3VyCiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhuQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6TWFrZUNyZWRlbnRpYWwoaGFzaCwgb3B0aW9ucywgaXNQcm9jZXNzaW5nVXNlckdl
c3R1cmUpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYm
IGhhbmRsZXIpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9u
KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYg
b3B0aW9ucywgTWVkaWF0aW9uUmVxdWlyZW1lbnQgbWVkaWF0aW9uLCBSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXImJiBoYW5kbGVyKQogewogICAgIGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZy
b21Db3JlRnJhbWUoZnJhbWUpOwogICAgIGlmICghd2ViRnJhbWUpCkBAIC05Nyw3ICs5Nyw3IEBA
IHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBTZWN1cml0CiAgICAgYm9vbCB1c2VXZWJBdXRoblByb2Nlc3MgPSBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkF1dGhlbnRpY2F0aW9u
TW9kZXJuRW5hYmxlZCgpOwogI2VuZGlmCiAgICAgaWYgKCF1c2VXZWJBdXRoblByb2Nlc3MpIHsK
LSAgICAgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2VydGlvbih3ZWJGcmFtZS0+ZnJhbWVJRCgp
LCB3ZWJGcmFtZS0+aW5mbygpLCBoYXNoLCBvcHRpb25zLCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVy
ZSksIFdURk1vdmUoaGFuZGxlcikpOworICAgICAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6R2V0QXNzZXJ0
aW9uKHdlYkZyYW1lLT5mcmFtZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIGhhc2gsIG9wdGlvbnMs
IG1lZGlhdGlvbiwgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA2LDYgKzEwNiwxMSBAQCB2b2lkIFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwg
Y29uc3QgU2VjdXJpdAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZVdlYkF1dGhu
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEFzc2VydGlvbihoYXNoLCBv
cHRpb25zLCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxlcikpOwogfQog
Cit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1lZGlhdGlv
bkF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBtX3dl
YlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSgpLCBXVEZNb3ZlKGhh
bmRsZXIpKTsKK307CisKIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFu
ZGxlciYmIGhhbmRsZXIpCiB7CiAjaWYgSEFWRShVTklGSUVEX0FTQ19BVVRIX1VJKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IDVlMWM3ZGRmNTE4
ZTk5Y2RhN2UwNjBkODA3YTA5ODI4NGVkMDRmNGQuLjI1OWM5ZTU2MmMzOTNiMGU2M2ViYjc4ZTNm
NzdjMjc5ZGE2OTcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmgKQEAgLTQxLDcgKzQxLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQKICAgICB2b2lkIG1ha2VDcmVkZW50
aWFsKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gs
IGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkNv
cmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGdldEFzc2Vy
dGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpNZWRpYXRpb25SZXF1aXJlbWVudCwg
V2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgaXND
b25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAg
ICAgdm9pZCByZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1lbnQoKSBmaW5hbCB7IG1fcmVxdWlyZVVz
ZXJHZXN0dXJlID0gZmFsc2U7IH0KIAo=
</data>
<flag name="commit-queue"
          id="479647"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452561</attachid>
            <date>2022-02-18 12:33:53 -0800</date>
            <delta_ts>2022-02-18 16:29:33 -0800</delta_ts>
            <desc>[fast-cq]Patch for landing</desc>
            <filename>bug-236820-20220218123352.patch</filename>
            <type>text/plain</type>
            <size>50971</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTliZTFmYWY2Zjg0OGVk
MTE2YzgxY2FmMmVjNGQzNjA5OGM4M2U0MC4uZmZjNThhYWNkMmU4MGJkYzAzZTE3ODYwNmU2ZDg4
MTg1MDcyMjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE4ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
Zm9yIGNvbmRpdGlvbmFsIG1lZGlhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODIwCisgICAgICAgIHJkYXI6Ly84NDgyMTk0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0gYW5kIENocmlzIER1bWV6LgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBjb25kaXRpb25hbCBtZWRpYXRpb24sIGFzIGRl
ZmluZWQgaW4gdGhlCisgICAgICAgIGNyZWRlbnRpYWxzIG1hbmFnZW1lbnQgc3BlYzogaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jcmVkZW50aWFsLW1hbmFnZW1lbnQvI2RvbS1jcmVk
ZW50aWFsbWVkaWF0aW9ucmVxdWlyZW1lbnQtY29uZGl0aW9uYWwKKworICAgICAgICAqIE1vZHVs
ZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJhc2ljQ3JlZGVudGlhbDo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSk6
CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlh
bC5pZGw6CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGw6CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1l
ZGlhdGlvbkF2YWlsYWJsZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0xOCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAg
PGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0gQ2Fubm90IGZpbmQgT3BlbkdM
IHdoZW4gc3lzdGVtIHByb3ZpZGVzIG9wZW5nbC5wYyBpbnN0ZWFkIG9mIGdsLnBjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDY4ZDZiZGUxNjNlZmYxNDQwMTA4YmE1YmMzYjA1YTU2MjkwMGI0ZTIuLmQ1NTViNDExZDhi
YWFhMDdmN2ZmM2NmNjI5OGFmYzMzMTExNTc1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMjItMDItMTggIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtX
ZWJBdXRobl0gU3VwcG9ydCBmb3IgY29uZGl0aW9uYWwgbWVkaWF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4MjAKKyAgICAgICAgcmRhcjov
Lzg0ODIxOTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbSBhbmQgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGNvbmRpdGlvbmFs
IG1lZGlhdGlvbiwgYXMgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgY3JlZGVudGlhbHMgbWFuYWdl
bWVudCBzcGVjOiBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLWNyZWRlbnRpYWwtbWFu
YWdlbWVudC8jZG9tLWNyZWRlbnRpYWxtZWRpYXRpb25yZXF1aXJlbWVudC1jb25kaXRpb25hbAor
CisgICAgICAgICogUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3Jl
U1BJLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25maWd1
cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Y29udGV4dEZvclJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cGVyZm9ybVJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXND
b25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eTo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0
QXNzZXJ0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorCiAyMDIyLTAyLTE4ICBBZHJpYW4gUGVyZXogZGUg
Q2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBDYW5ub3QgZmlu
ZCBPcGVuR0wgd2hlbiBzeXN0ZW0gcHJvdmlkZXMgb3BlbmdsLnBjIGluc3RlYWQgb2YgZ2wucGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
QmFzaWNDcmVkZW50aWFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1h
bmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcAppbmRleCBhMjNkZjEwN2YxNjVkZmI3MTE0Y2Uy
OThiNTQ4ODBhN2I3OWNlNjJmLi4zZjlhNzRlZDA5YTNmOWFhZTdjYWRjY2Q0Y2RkM2RkOGE5N2Uz
MWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2Vt
ZW50L0Jhc2ljQ3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVk
ZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQmFzaWNDcmVkZW50aWFsLmgiCiAKKyNpbmNs
dWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDYgKzUyLDE0IEBAIFN0cmluZyBCYXNpY0Ny
ZWRlbnRpYWw6OnR5cGUoKSBjb25zdAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCit2
b2lkIEJhc2ljQ3JlZGVudGlhbDo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShEb2N1
bWVudCYgZG9jdW1lbnQsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2Up
Cit7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCisgICAgICAgIHBhZ2Ut
PmF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpLmlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFi
bGUoV1RGTW92ZShwcm9taXNlKSk7CisgICAgZWxzZQorICAgICAgICBwcm9taXNlLnJlamVjdChF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlh
bC5oCmluZGV4IDNiOGYxNDIyMmVjNGFjNWY2NzIxMDc5MGE1ZjlmYTU1ZDNlY2FhMTkuLjVkN2U0
NDEyMzY0ZTdlNzQ4Y2Q2NjViMjkwMmU4MjQxNTgwZmIxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRl
bnRpYWwuaApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHR5cGUoKSBjb25z
dDsKICAgICBEaXNjb3ZlcnkgZGlzY292ZXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNjb3Zlcnk7
IH0KIAorICAgIHN0YXRpYyB2b2lkIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoRG9j
dW1lbnQmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7CisKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1faWQ7CiAgICAgVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlh
bC5pZGwKaW5kZXggNDk5MzE3ZTc4Y2U3NzQxOTg0Yzc1NjJjMDFmNWVmZDk0ZGQ1NDMwZC4uMjQ5
MjIyNWMwNWFlMzU0ODNiNDRjYzkxY2YyZDRjZDFhYjc1NDk0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWND
cmVkZW50aWFsLmlkbApAQCAtMzMsNCArMzMsNiBAQAogXSBpbnRlcmZhY2UgQmFzaWNDcmVkZW50
aWFsIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGlkOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKKworICAgIFtDYWxsV2l0aD1DdXJyZW50RG9jdW1l
bnRdIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFi
bGUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxt
YW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaAppbmRl
eCA4MWM5NGVhYWZhNzU5ZGQ4ZDI2OTU1M2FlMzE4YjY4ZjQxZmRkNTgzLi5iNmNmNDE2MDU5NmY0
NjM3NmJmNGU2ODliMTBjNTQxMDc2NWNjMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zLmgKQEAgLTM1LDggKzM1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQWJvcnRTaWduYWw7CiAKK2VudW0gY2xhc3MgTWVkaWF0aW9uUmVxdWlyZW1lbnQg
OiB1aW50OF90IHsgU2lsZW50LCBPcHRpb25hbCwgUmVxdWlyZWQsIENvbmRpdGlvbmFsIH07CisK
IHN0cnVjdCBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgewotICAgIGVudW0gY2xhc3MgTWVkaWF0
aW9uUmVxdWlyZW1lbnQgeyBTaWxlbnQsIE9wdGlvbmFsLCBSZXF1aXJlZCB9OworICAgIHVzaW5n
IE1lZGlhdGlvblJlcXVpcmVtZW50ID0gTWVkaWF0aW9uUmVxdWlyZW1lbnQ7CiAKICAgICBNZWRp
YXRpb25SZXF1aXJlbWVudCBtZWRpYXRpb247CiAgICAgUmVmUHRyPEFib3J0U2lnbmFsPiBzaWdu
YWw7CkBAIC00NSw0ICs0NywxOSBAQCBzdHJ1Y3QgQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIHsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM6Ok1l
ZGlhdGlvblJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAg
ICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJl
bWVudCwKKyAgICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRp
b25SZXF1aXJlbWVudDo6U2lsZW50LAorICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnM6Ok1lZGlhdGlvblJlcXVpcmVtZW50OjpPcHRpb25hbCwKKyAgICAgICAgV2ViQ29y
ZTo6Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudDo6UmVxdWly
ZWQsCisgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6TWVkaWF0aW9u
UmVxdWlyZW1lbnQ6OkNvbmRpdGlvbmFsCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMuaWRsCmluZGV4IDkzYTBjZjE0NzI4YWEyODY5ZTU4MDlmNTNl
ZmYxOTgyYjNhODdlYTkuLjdkYjU5ZDlhYjIxMmIxMTcxYWM4MWI2YmM0NDQxYWQyYjhhODFiOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGwKQEAgLTI5
LDcgKzI5LDggQEAKIF0gZW51bSBDcmVkZW50aWFsTWVkaWF0aW9uUmVxdWlyZW1lbnQgewogICAg
ICJzaWxlbnQiLAogICAgICJvcHRpb25hbCIsCi0gICAgInJlcXVpcmVkIgorICAgICJyZXF1aXJl
ZCIsCisgICAgImNvbmRpdGlvbmFsIgogfTsKIAogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxz
Q29udGFpbmVyLmNwcAppbmRleCBjMWFjNzBiZjY3MmM5MGEwNWM4N2FhNDE5MzA1ZWQ1NWQzNmE3
YzI5Li45NjA2MDhjYTEzNWY4YWM2OTU2ZmE5Y2YyM2YyM2E4OTU0ZTQ4YWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxz
Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIENy
ZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9u
cywgQ3JlZGVudGlhbFBybwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kb2N1bWVu
dC0+cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5kaXNjb3ZlckZyb21FeHRlcm5h
bFNvdXJjZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUoKSwgc2NvcGUoKSwg
V1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fZG9jdW1l
bnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuZGlzY292ZXJGcm9tRXh0ZXJu
YWxTb3VyY2UoKm1fZG9jdW1lbnQsIFdURk1vdmUob3B0aW9ucyksIHNjb3BlKCksIFdURk1vdmUo
cHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpzdG9yZShjb25zdCBC
YXNpY0NyZWRlbnRpYWwmLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHAKaW5kZXggNWQ0Nzc3YjhjMDNhMDkyZjcxOTFkZTQ0NDU0OGVhN2Y5YzZmM2M3
Ni4uNTQ5NjVmZjJlYWVjZWFlN2VjODg3MDBlYzYyZjE0Mzc5YzdmZGExZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRmVhdHVyZVBvbGljeS5oIgogI2luY2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgi
CisjaW5jbHVkZSAiSlNDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCIKICNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWwuaCIKICNp
bmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgiCkBAIC0xNzYsMTIg
KzE3NywxMyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAgIG1fY2xpZW50LT5tYWtlQ3Jl
ZGVudGlhbCgqZnJhbWUsIGNhbGxlck9yaWdpbiwgY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25z
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgV2ViQXV0aG46
OlNjb3BlIHNjb3BlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRp
YWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIENy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIHJlcXVlc3RPcHRpb25zLCBXZWJBdXRobjo6U2NvcGUg
c2NvcGUsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKIHsKICAgICB1c2luZyBu
YW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CiAKICAgICBhdXRvJiBj
YWxsZXJPcmlnaW4gPSBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOwogICAgIGF1dG8qIGZyYW1l
ID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBjb25zdCBhdXRvJiBvcHRpb25zID0gcmVxdWVzdE9w
dGlvbnMucHVibGljS2V5LnZhbHVlKCk7CiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNjcmVh
dGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTdGVwIDEsIDMsIDEz
IGFyZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIuCkBAIC0yMzAsNyArMjMyLDcgQEAgdm9pZCBBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJh
Y2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChB
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQg
YXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgYXV0
byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwgPSBXVEZNb3ZlKHJlcXVlc3RP
cHRpb25zLnNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRl
ZCgpKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9y
LCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVy
RnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWUKICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoZXhjZXB0aW9uLnRvRXhjZXB0aW9uKCkpOwogICAgIH07CiAgICAgLy8gQXN5bmMg
b3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgot
ICAgIG1fY2xpZW50LT5nZXRBc3NlcnRpb24oKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVudERh
dGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fY2xpZW50LT5n
ZXRBc3NlcnRpb24oKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVudERhdGFKc29uSGFzaCwgb3B0
aW9ucywgcmVxdWVzdE9wdGlvbnMubWVkaWF0aW9uLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
IHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJv
bWlzZSkgY29uc3QKQEAgLTI2Niw2ICsyNjgsMjEgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET00K
ICAgICBtX2NsaWVudC0+aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxh
YmxlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorCit2b2lkIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6aXNDb25kaXRpb25hbE1lZGlhdGlvbkF2YWlsYWJsZShET01Qcm9taXNl
RGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKSBjb25zdAoreworICAgIGlmICghbV9jbGll
bnQpICB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwg
IlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0gKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3Vs
dCk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBo
YW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAgbV9jbGllbnQtPmlzQ29uZGl0aW9uYWxNZWRp
YXRpb25BdmFpbGFibGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6cmVzZXRVc2VyR2VzdHVyZVJlcXVpcmVtZW50KCkKIHsK
ICAgICBtX2NsaWVudC0+cmVzZXRVc2VyR2VzdHVyZVJlcXVpcmVtZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaAppbmRleCBmNDk1MDMwODZjOWFjYzc5MTkzMzg3Zjc2ZmI2YTViZWEyMDc4MGFiLi40
ZDlhYmE2OGU4ODgzMDUwODliZmUxOTMwYzM1MDhjYWRmNTNmZWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiAKIHN0cnVjdCBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9uczsKK3N0cnVjdCBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKIApAQCAtNTgs
OCArNTksOSBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVt
ZW50IHN0YXRpYyBtZXRob2RzIG9mIFB1YmxpY0tleUNyZWRlbnRpYWwuCiAgICAgdm9pZCBjcmVh
dGUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJiwgV2ViQXV0aG46OlNjb3BlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQ
cm9taXNlJiYpIGNvbnN0OwotICAgIHZvaWQgZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29u
c3QgRG9jdW1lbnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBX
ZWJBdXRobjo6U2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2Um
JikgY29uc3Q7CisgICAgdm9pZCBkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1
bWVudCYsIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmLCBXZWJBdXRobjo6U2NvcGUsIENyZWRl
bnRpYWxQcm9taXNlJiYpIGNvbnN0OwogICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKSBj
b25zdDsKKyAgICB2b2lkIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoRE9NUHJvbWlz
ZURlZmVycmVkPElETEJvb2xlYW4+JiYpIGNvbnN0OwogCiAgICAgdm9pZCByZXNldFVzZXJHZXN0
dXJlUmVxdWlyZW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXgg
NjQ2MWFlOTY0ZmFiZDgyMmRmYjEwMDg3MDU2ODFjNmU0NTU3YjQ5Yy4uM2JiNjVhODZiOGYzM2Rj
YjM2MjQ2Yjg5Y2VmZDk2YWRiMjdiOTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAKIGVudW0gY2xhc3MgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ7CitlbnVtIGNsYXNzIE1lZGlh
dGlvblJlcXVpcmVtZW50IDogdWludDhfdDsKIAogc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNwb25z
ZURhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKQEAgLTQ2
LDE2ICs0NywxNyBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwog
dXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRhY2htZW50LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYpPjsKIHVzaW5nIFF1ZXJ5Q29t
cGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPjsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50IDogcHVibGljIENh
bk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4geworY2xhc3MgQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dCk7CiBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZh
dWx0OwogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCgpID0gZGVm
YXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYm
KSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGdldEFzc2VydGlvbihjb25zdCBGcmFtZSYsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIHsg
fTsKLSAgICB2aXJ0dWFsIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgeyB9OworICAgIHZpcnR1YWwgdm9p
ZCBtYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldEFzc2VydGlvbihjb25zdCBGcmFtZSYsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
JiwgTWVkaWF0aW9uUmVxdWlyZW1lbnQsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoUXVlcnlD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGlzVXNlclZlcmlmeWlu
Z1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1lbnQoKSB7
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZTBlMjQxZTcxMjUwYzE1YTU3ZmY0ZWM0Nzc3YWNjNGQyOTg1ZTEwYy4uNzQx
MDc2MjAxMDUzZWY3NTdiMzM3ZjAyYmY1Y2ZiYTlhNmU0NGUxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM3NCw3ICsyMzc0
LDcgQEAKIAkJNzdBMTdBQTcxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3
QUEzMTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggKi87IH07CiAJ
CTc3RDUxMDA0MUVENEY3MUUwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdENTBGRkYx
RUQ0RjcwQzAwREE0Qzg3IC8qIEpTQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggKi87IH07CiAJ
CTc3RDUxMDA2MUVENEY3MjUwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RDUwRkZE
MUVENEY3MEMwMERBNEM4NyAvKiBKU0NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCAqLzsgfTsK
LQkJNzdENTEwMEIxRUQ1RTI4ODAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdENTBGRkIx
RUQ0RjE2QzAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovOyB9OworCQk3
N0Q1MTAwQjFFRDVFMjg4MDBEQTRDODcgLyogQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0Q1MEZGQjFFRDRG
MTZDMDBEQTRDODcgLyogQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzdENTEwMEQxRUQ1RTI5NTAwREE0
Qzg3IC8qIENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QUFENjg1MUVDRkJEMzkwMEJGQTJEMSAvKiBDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi87IH07CiAJCTc3RDUxMDE3MUVENjAyMjIwMERBNEM4
NyAvKiBDcmVkZW50aWFsc0NvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzdENTEwMTYxRUQ2MDIxQjAwREE0Qzg3IC8qIENyZWRlbnRpYWxz
Q29udGFpbmVyLmggKi87IH07CiAJCTc3RDUxMDFDMUVENzIyQkYwMERBNEM4NyAvKiBKU0NyZWRl
bnRpYWxzQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3N0Q1MTAxQjFFRDcyMkI1MDBEQTRDODcgLyogSlNDcmVkZW50aWFsc0NvbnRhaW5l
ci5oICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2Ev
QXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
c3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKaW5kZXggZDIyYWIyY2I3
ZGE1MzVjYjVhNDI1MDAxYjgzMzdmNWFmNTg0MjZkZi4uMzdhZDMxYmI2ZjQxNTM2MzZjMDQ2OTAw
NDZlN2EyNWRkYjI4MzQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
Q29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCkBAIC0y
MjksNiArMjI5LDExIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBBU0NDcmVkZW50
aWFsUmVxdWVzdFR5cGVzKSB7CiAKIEBlbmQKIAordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
QVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlKSB7CisgICAgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxl
TW9kYWwsCisgICAgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlQXV0b0ZpbGwsCit9OworCiBAaW50
ZXJmYWNlIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dCA6IE5TT2JqZWN0IDxOU1NlY3VyZUNv
ZGluZz4KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CkBAIC0yNDUsNiAr
MjUwLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIEFTQ0NyZWRlbnRpYWxSZXF1
ZXN0VHlwZXMpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgQVNDUHVi
bGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnMgKnBsYXRmb3JtS2V5Q3JlZGVudGlhbEFz
c2VydGlvbk9wdGlvbnM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIEFT
Q1B1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zICpzZWN1cml0eUtleUNyZWRlbnRp
YWxBc3NlcnRpb25PcHRpb25zOwogCitAcHJvcGVydHkgKG5vbmF0b21pYykgQVNDcmVkZW50aWFs
UmVxdWVzdFN0eWxlIHJlcXVlc3RTdHlsZTsKKwogQGVuZAogCiBAcHJvdG9jb2wgQVNDQ3JlZGVu
dGlhbFByb3RvY29sIDxOU09iamVjdCwgTlNTZWN1cmVDb2Rpbmc+CkBAIC0zMjAsNiArMzI3LDgg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlw
ZXMpIHsKIC0gKHZvaWQpdXNlclNlbGVjdGVkTG9naW5DaG9pY2U6KGlkIDxBU0NMb2dpbkNob2lj
ZVByb3RvY29sPilsb2dpbkNob2ljZSBhdXRoZW50aWNhdGVkQ29udGV4dDooTEFDb250ZXh0ICop
Y29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90
b2NvbD4gX051bGxhYmxlLCBOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsK
IAogLSAodm9pZClyZXF1ZXN0Q29tcGxldGVkV2l0aENyZWRlbnRpYWw6KG51bGxhYmxlIGlkPEFT
Q0NyZWRlbnRpYWxQcm90b2NvbD4pY3JlZGVudGlhbCBlcnJvcjoobnVsbGFibGUgTlNFcnJvciAq
KWVycm9yOworCistICh2b2lkKXBlcmZvcm1BdXRvRmlsbEF1dGhvcml6YXRpb25SZXF1ZXN0c0Zv
ckNvbnRleHQ6KEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dCAqKWNvbnRleHQgd2l0aENvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBfTnVsbGFi
bGUgY3JlZGVudGlhbCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRs
ZXI7CiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCA3ZDRk
NjBkOTcxZjFmNThhMzE2YjI4YWRmYzY1Yzk3MDQ5Y2RhYjE3Li5jZTgzNDY3OTgyYzY4OWM2NDVl
Y2NiNjNlMTcxZDUwY2Y5Y2JlMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAt
ODEzLDcgKzgxMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uCiAgICAgICAgICAgICBoYW5k
bGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpleGNl
cHRpb24uY29kZSB1c2VySW5mbzpAeyBOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5OiBleGNlcHRp
b24ubWVzc2FnZSB9XSk7CiAgICAgICAgIH0pOwogICAgIH07Ci0gICAgX3BhbmVsLT5oYW5kbGVS
ZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVy
dFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJL
aXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBz
dGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0
aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmlu
ZygpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogI2VuZGlm
CiB9CiAKQEAgLTgyNyw3ICs4MjcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvbgogICAgICAg
ICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWlu
IGNvZGU6ZXhjZXB0aW9uLmNvZGUgdXNlckluZm86QHsgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktl
eTogZXhjZXB0aW9uLm1lc3NhZ2UgfV0pOwogICAgICAgICB9KTsKICAgICB9OwotICAgIF9wYW5l
bC0+aGFuZGxlUmVxdWVzdCh7IHZlY3RvckZyb21OU0RhdGEoY2xpZW50RGF0YUhhc2gpLCBbX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9w
dGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJp
bmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgX3BhbmVsLT5oYW5kbGVS
ZXF1ZXN0KHsgdmVjdG9yRnJvbU5TRGF0YShjbGllbnREYXRhSGFzaCksIFtfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9uczpvcHRp
b25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2
YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBudWxs
cHRyLCBzdGQ6Om51bGxvcHQgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogI2VuZGlmCiB9CiAKQEAg
LTg3Nyw3ICs4NzcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcAogICAgICAgICAgICAgaGFu
ZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvclVua25vd24gdXNlckluZm86bmlsXSk7CiAgICAgICAgIH0pOwogICAgIH07Ci0gICAgX3Bh
bmVsLT5oYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RPcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51
bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUs
IG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgX3BhbmVsLT5oYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZSho
YXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RPcHRp
b25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRp
b25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0
cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoY2FsbGJhY2sp
KTsKICNlbmRpZgogfQogCkBAIC04OTEsNyArODkxLDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3AKICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tF
cnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOwogICAgICAgICB9
KTsKICAgICB9OwotICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IHZlY3RvckZyb21OU0RhdGEo
Y2xpZW50RGF0YUhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3Jl
UmVxdWVzdE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxs
b3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGNsaWVudERhdGFI
YXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RPcHRp
b25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRp
b25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0
cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoY2FsbGJhY2sp
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tCmluZGV4IDE5YWI3YTE4ZDIyZmZlM2NlYjYyYjk2
MGQ5YTFlMGIwNTkyYmZjNTMuLjcyNTgxMGI2MTA2ODM2ZTA4MmMwMzA0MjFjM2U1NzE4Yjk1ZjVi
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Lm1tCkBAIC0yMzYsNyArMjM2LDcgQEAgc3RhdGljIFJldGFpblB0cjxB
U0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJlcXVlc3RD
b250ZXgKICAgICByZXR1cm4gcmVxdWVzdENvbnRleHQ7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8
QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVz
dENvbnRleHQoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25z
LCBWZWN0b3I8dWludDhfdD4gaGFzaCkKK3N0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJl
cXVlc3RDb250ZXh0PiBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQoY29uc3Qg
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBWZWN0b3I8dWludDhf
dD4gaGFzaCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYXRpb25SZXF1aXJlbWVudD4gbWVk
aWF0aW9uKQogewogICAgIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZXMgcmVxdWVzdFR5cGVzID0g
QVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlUGxhdGZvcm1QdWJsaWNLZXlBc3NlcnRpb24gfCBBU0ND
cmVkZW50aWFsUmVxdWVzdFR5cGVTZWN1cml0eUtleVB1YmxpY0tleUFzc2VydGlvbjsKIApAQCAt
MjYwLDYgKzI2MCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250
ZXh0PiBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRlCiAKICAgICBhdXRvIHJlcXVl
c3RDb250ZXh0ID0gYWRvcHROUyhbYWxsb2NBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHRJbnN0
YW5jZSgpIGluaXRXaXRoUmVxdWVzdFR5cGVzOnJlcXVlc3RUeXBlc10pOwogICAgIFtyZXF1ZXN0
Q29udGV4dCBzZXRSZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlvbnMucnBJZF07CisgICAgaWYg
KG1lZGlhdGlvbiA9PSBNZWRpYXRpb25SZXF1aXJlbWVudDo6Q29uZGl0aW9uYWwgJiYgW3JlcXVl
c3RDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UmVxdWVzdFN0eWxlOild
KQorICAgICAgICByZXF1ZXN0Q29udGV4dC5nZXQoKS5yZXF1ZXN0U3R5bGUgPSBBU0NyZWRlbnRp
YWxSZXF1ZXN0U3R5bGVBdXRvRmlsbDsKIAogICAgIGlmIChyZXF1ZXN0VHlwZXMgJiBBU0NDcmVk
ZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbikgewogICAgICAgICBh
dXRvIGFzc2VydGlvbk9wdGlvbnMgPSBhZG9wdE5TKGFsbG9jQVNDUHVibGljS2V5Q3JlZGVudGlh
bEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpKTsKQEAgLTMwMCw3ICszMDIsNyBAQCBSZXRhaW5Q
dHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eTo6Y29udGV4dAogICAgIFdURjo6c3dpdGNoT24ocmVxdWVzdERhdGEub3B0aW9ucywg
WyZdKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMpIHsK
ICAgICAgICAgcmVzdWx0ID0gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleHQob3B0
aW9ucywgcmVxdWVzdERhdGEuaGFzaCk7CiAgICAgfSwgWyZdKGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykgewotICAgICAgICByZXN1bHQgPSBjb25maWd1
cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQob3B0aW9ucywgcmVxdWVzdERhdGEuaGFzaCk7
CisgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4dChv
cHRpb25zLCByZXF1ZXN0RGF0YS5oYXNoLCByZXF1ZXN0RGF0YS5tZWRpYXRpb24pOwogICAgIH0p
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zMDksODUgKzMxMSwxMDAgQEAgdm9pZCBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cGVyZm9ybVJlcXVlc3QoUmV0YWluUHRyPEFT
Q0NyZWRlbnRpYWxSZXEKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHROUyhbYWxsb2NBU0NBZ2Vu
dFByb3h5SW5zdGFuY2UoKSBpbml0XSk7CiAKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oaWQgPEFTQ0NyZWRlbnRp
YWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAg
ICBlbnN1cmVPbk1haW5SdW5Mb29wKFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgY3JlZGVu
dGlhbCA9IHJldGFpblB0cihjcmVkZW50aWFsKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgcmVzcG9u
c2U7CisgICAgICAgICAgICBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50OworICAg
ICAgICAgICAgRXhjZXB0aW9uRGF0YSBleGNlcHRpb25EYXRhOworCisgICAgICAgICAgICBpZiAo
W2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRp
YWxSZWdpc3RyYXRpb25DbGFzcygpXSkgeworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBB
dXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm07CisgICAgICAgICAgICAgICAgcmVzcG9u
c2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IHRydWU7CisKKyAgICAgICAg
ICAgICAgICBBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb24gKnJlZ2lz
dHJhdGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdldCgpOworICAgICAgICAgICAgICAgIHJl
c3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmNyZWRl
bnRpYWxJRCk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QgPSB0
b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuYXR0ZXN0YXRpb25PYmplY3QpOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNsYXNzOmdldEFTQ1Nl
Y3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbkNsYXNzKCldKSB7CisgICAg
ICAgICAgICAgICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1Bs
YXRmb3JtOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UgPSB0cnVlOworCisgICAgICAgICAgICAgICAgQVNDU2VjdXJpdHlLZXlQdWJs
aWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uICpyZWdpc3RyYXRpb25DcmVkZW50aWFsID0gY3Jl
ZGVudGlhbC5nZXQoKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlC
dWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOworICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRp
b25DcmVkZW50aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
W2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRp
YWxBc3NlcnRpb25DbGFzcygpXSkgeworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRo
ZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm07CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uu
aXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IGZhbHNlOworCisgICAgICAgICAg
ICAgICAgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uICphc3NlcnRpb25D
cmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQoKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5y
YXdJZCA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwor
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhID0gdG9BcnJheUJ1ZmZl
cihhc3NlcnRpb25DcmVkZW50aWFsLmF1dGhlbnRpY2F0b3JEYXRhKTsKKyAgICAgICAgICAgICAg
ICByZXNwb25zZS5zaWduYXR1cmUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRpYWwu
c2lnbmF0dXJlKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS51c2VySGFuZGxlID0gdG9BcnJh
eUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLnVzZXJIYW5kbGUpOworICAgICAgICAgICAgfSBl
bHNlIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNsYXNzOmdldEFTQ1NlY3VyaXR5S2V5UHVibGlj
S2V5Q3JlZGVudGlhbEFzc2VydGlvbkNsYXNzKCldKSB7CisgICAgICAgICAgICAgICAgYXR0YWNo
bWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtOworICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSBmYWxz
ZTsKKworICAgICAgICAgICAgICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbEFz
c2VydGlvbiAqYXNzZXJ0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CisgICAgICAg
ICAgICAgICAgcmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRp
YWwuY3JlZGVudGlhbElEKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5hdXRoZW50aWNhdG9y
RGF0YSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC5hdXRoZW50aWNhdG9yRGF0
YSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2lnbmF0dXJlID0gdG9BcnJheUJ1ZmZlcihh
c3NlcnRpb25DcmVkZW50aWFsLnNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uu
dXNlckhhbmRsZSA9IHRvQXJyYXlCdWZmZXIoYXNzZXJ0aW9uQ3JlZGVudGlhbC51c2VySGFuZGxl
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXR0YWNobWVudCA9IChB
dXRoZW50aWNhdG9yQXR0YWNobWVudCkgMDsKKyAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGV4Y2VwdGlvbkNvZGU7CisgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9
IG5pbDsKKyAgICAgICAgICAgICAgICBpZiAoW2Vycm9yLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9T
dHJpbmc6V0tFcnJvckRvbWFpbl0pIHsKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ29k
ZSA9IHRvRXhjZXB0aW9uQ29kZShlcnJvci5nZXQoKS5jb2RlKTsKKyAgICAgICAgICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gZXJyb3IuZ2V0KCkudXNlckluZm9bTlNMb2NhbGl6ZWREZXNjcmlw
dGlvbktleV07CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9uQ29kZSA9IE5vdEFsbG93ZWRFcnJvcjsKKworICAgICAgICAgICAgICAgICAgICBp
ZiAoW2Vycm9yLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6QVNDQXV0aG9yaXphdGlvbkVy
cm9yRG9tYWluXSAmJiBlcnJvci5nZXQoKS5jb2RlID09IEFTQ0F1dGhvcml6YXRpb25FcnJvclVz
ZXJDYW5jZWxlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAiVGhp
cyByZXF1ZXN0IGhhcyBiZWVuIGNhbmNlbGxlZCBieSB0aGUgdXNlci4iOworICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIk9w
ZXJhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBl
eGNlcHRpb25EYXRhID0geyBleGNlcHRpb25Db2RlLCBlcnJvck1lc3NhZ2UgfTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZSwgYXR0YWNobWVudCwgZXhjZXB0
aW9uRGF0YSk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIAorICAgIGlmIChbcmVxdWVzdENv
bnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZXF1ZXN0U3R5bGUpXSAmJiByZXF1
ZXN0Q29udGV4dC5nZXQoKS5yZXF1ZXN0U3R5bGUgPT0gQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxl
QXV0b0ZpbGwpIHsKKyAgICAgICAgW3Byb3h5IHBlcmZvcm1BdXRvRmlsbEF1dGhvcml6YXRpb25S
ZXF1ZXN0c0ZvckNvbnRleHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5k
bGVyOm1ha2VCbG9ja1B0cihbcHJveHkgPSBXVEZNb3ZlKHByb3h5KSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2Nv
bD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY3JlZGVudGlhbCwgZXJyb3IpOworICAgICAgICB9KS5nZXQoKV07Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIFtwcm94
eSBwZXJmb3JtQXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDpyZXF1ZXN0Q29udGV4dC5n
ZXQoKSB3aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtoYW5kbGVyID0gV1RGTW92
ZShoYW5kbGVyKSwgcHJveHkgPSBXVEZNb3ZlKHByb3h5KV0oaWQgPEFTQ0NyZWRlbnRpYWxQcm90
b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewotICAgICAgICBjYWxs
T25NYWluUnVuTG9vcChbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIHByb3h5ID0gV1RGTW92
ZShwcm94eSksIGNyZWRlbnRpYWwgPSByZXRhaW5QdHIoY3JlZGVudGlhbCksIGVycm9yID0gcmV0
YWluUHRyKGVycm9yKV0gKCkgbXV0YWJsZSB7CisgICAgW3Byb3h5IHBlcmZvcm1BdXRob3JpemF0
aW9uUmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhDb21wbGV0aW9u
SGFuZGxlcjptYWtlQmxvY2tQdHIoW3Byb3h5ID0gV1RGTW92ZShwcm94eSksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGlkIDxBU0NDcmVkZW50aWFsUHJv
dG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY3JlZGVudGlhbCwgZXJyb3IpOworICAgIH0pLmdldCgpXTsKICNlbGlm
IFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IG1fd2ViUGFn
ZVByb3h5LnBsYXRmb3JtV2luZG93KCk7Ci0gICAgW3Byb3h5IHBlcmZvcm1BdXRob3JpemF0aW9u
UmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhDbGVhcmFuY2VIYW5k
bGVyOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlciksIHdpbmRvdyA9IFdURk1vdmUod2luZG93KSwgcHJveHkgPSBXVEZN
b3ZlKHByb3h5KV0oTlNYUENMaXN0ZW5lckVuZHBvaW50ICpkYWVtb25FbmRwb2ludCwgTlNFcnJv
ciAqZXJyb3IpIG11dGFibGUgewotICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMs
IGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCB3aW5kb3cgPSBXVEZNb3ZlKHdpbmRvdyksIHBy
b3h5ID0gV1RGTW92ZShwcm94eSksIGRhZW1vbkVuZHBvaW50ID0gcmV0YWluUHRyKGRhZW1vbkVu
ZHBvaW50KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSAoKSBtdXRhYmxlIHsKKyAgICBbcHJv
eHkgcGVyZm9ybUF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNvbnRleHQ6cmVxdWVzdENvbnRleHQu
Z2V0KCkgd2l0aENsZWFyYW5jZUhhbmRsZXI6bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCB3aW5kb3cgPSBXVEZNb3ZlKHdpbmRvdyksIHByb3h5ID0gV1RGTW92ZShwcm94eSldKE5T
WFBDTGlzdGVuZXJFbmRwb2ludCAqZGFlbW9uRW5kcG9pbnQsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3aW5kb3cgPSBXVEZNb3ZlKHdpbmRv
dyksIHByb3h5ID0gV1RGTW92ZShwcm94eSksIGRhZW1vbkVuZHBvaW50ID0gcmV0YWluUHRyKGRh
ZW1vbkVuZHBvaW50KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIWRhZW1vbkVuZHBvaW50KSB7CiAgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY29ubmVjdCB0byBhdXRob3JpemF0aW9uIGRhZW1v
bjogJUBcbiIsIGVycm9yLmdldCgpKTsKLSAgICAgICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3Is
ICJPcGVyYXRpb24gZmFpbGVkLiIgfSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBlcnJvci5nZXQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcmVzZW50ZXIgPSBhZG9wdE5TKFthbGxv
Y0FTQ0F1dGhvcml6YXRpb25SZW1vdGVQcmVzZW50ZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICAg
ICAgICAgIFt3ZWFrVGhpcy0+bV9wcmVzZW50ZXIgcHJlc2VudFdpdGhXaW5kb3c6d2luZG93Lmdl
dCgpIGRhZW1vbkVuZHBvaW50OmRhZW1vbkVuZHBvaW50LmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Om1ha2VCbG9ja1B0cihbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIHByb3h5ID0gV1RGTW92
ZShwcm94eSldKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWxOb3RSZXRhaW4s
IE5TRXJyb3IgKmVycm9yTm90UmV0YWluKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBhdXRv
IGNyZWRlbnRpYWwgPSByZXRhaW5QdHIoY3JlZGVudGlhbE5vdFJldGFpbik7Ci0gICAgICAgICAg
ICAgICAgYXV0byBlcnJvciA9IHJldGFpblB0cihlcnJvck5vdFJldGFpbik7Ci0jZW5kaWYKLSAg
ICAgICAgICAgICAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIHJlc3BvbnNlID0geyB9Owot
ICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQ7Ci0gICAg
ICAgICAgICAgICAgRXhjZXB0aW9uRGF0YSBleGNlcHRpb25EYXRhID0geyB9OwotCi0gICAgICAg
ICAgICAgICAgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDUGxhdGZvcm1QdWJs
aWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybTsKLSAgICAg
ICAgICAgICAgICAgICAgcmVzcG9uc2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZSA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVk
ZW50aWFsUmVnaXN0cmF0aW9uICpyZWdpc3RyYXRpb25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5n
ZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVy
KHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuY3JlZGVudGlhbElEKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlv
bkNyZWRlbnRpYWwuYXR0ZXN0YXRpb25PYmplY3QpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNy
ZWRlbnRpYWxSZWdpc3RyYXRpb25DbGFzcygpXSkgewotICAgICAgICAgICAgICAgICAgICBhdHRh
Y2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm07Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Ug
PSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3Jl
ZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0cmF0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwu
Z2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZl
cihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJRCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRp
b25DcmVkZW50aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVk
ZW50aWFsQXNzZXJ0aW9uQ2xhc3MoKV0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVu
dCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IGZhbHNlOwot
Ci0gICAgICAgICAgICAgICAgICAgIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbEFzc2Vy
dGlvbiAqYXNzZXJ0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50
aWFsLmNyZWRlbnRpYWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF1dGhlbnRp
Y2F0b3JEYXRhID0gdG9BcnJheUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmF1dGhlbnRpY2F0
b3JEYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2lnbmF0dXJlID0gdG9BcnJh
eUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLnVzZXJIYW5kbGUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRp
YWwudXNlckhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBp
c0tpbmRPZkNsYXNzOmdldEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlv
bkNsYXNzKCldKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNh
dG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9u
c2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IGZhbHNlOwotCi0gICAgICAg
ICAgICAgICAgICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbiAq
YXNzZXJ0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmNy
ZWRlbnRpYWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmF1dGhlbnRpY2F0b3JE
YXRhID0gdG9BcnJheUJ1ZmZlcihhc3NlcnRpb25DcmVkZW50aWFsLmF1dGhlbnRpY2F0b3JEYXRh
KTsKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2lnbmF0dXJlID0gdG9BcnJheUJ1ZmZl
cihhc3NlcnRpb25DcmVkZW50aWFsLnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlLnVzZXJIYW5kbGUgPSB0b0FycmF5QnVmZmVyKGFzc2VydGlvbkNyZWRlbnRpYWwudXNl
ckhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
YXR0YWNobWVudCA9IChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkgMDsKLSAgICAgICAgICAgICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOwotICAgICAgICAgICAgICAgICAgICBO
U1N0cmluZyAqZXJyb3JNZXNzYWdlID0gbmlsOwotICAgICAgICAgICAgICAgICAgICBpZiAoW2Vy
cm9yLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6V0tFcnJvckRvbWFpbl0pIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNvZGUgPSB0b0V4Y2VwdGlvbkNvZGUoZXJyb3Iu
Z2V0KCkuY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnJv
ci5nZXQoKS51c2VySW5mb1tOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKLSAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNvZGUg
PSBOb3RBbGxvd2VkRXJyb3I7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbZXJyb3Iu
Z2V0KCkuZG9tYWluIGlzRXF1YWxUb1N0cmluZzpBU0NBdXRob3JpemF0aW9uRXJyb3JEb21haW5d
ICYmIGVycm9yLmdldCgpLmNvZGUgPT0gQVNDQXV0aG9yaXphdGlvbkVycm9yVXNlckNhbmNlbGVk
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAiVGhpcyByZXF1
ZXN0IGhhcyBiZWVuIGNhbmNlbGxlZCBieSB0aGUgdXNlci4iOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAi
T3BlcmF0aW9uIGZhaWxlZC4iOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uRGF0YSA9IHsgZXhjZXB0aW9uQ29kZSwgZXJyb3JNZXNzYWdlIH07
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZSwg
YXR0YWNobWVudCwgZXhjZXB0aW9uRGF0YSk7Ci0jaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAg
ICAgW3dlYWtUaGlzLT5tX3ByZXNlbnRlciBwcmVzZW50V2l0aFdpbmRvdzp3aW5kb3cuZ2V0KCkg
ZGFlbW9uRW5kcG9pbnQ6ZGFlbW9uRW5kcG9pbnQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtwcm94eSA9IFdURk1vdmUocHJveHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVk
ZW50aWFsLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoY3JlZGVudGlhbCwgZXJyb3IpOwogICAgICAgICAgICAgfSkuZ2V0KCldOwot
I2VuZGlmCiAgICAgICAgIH0pOwogICAgIH0pLmdldCgpXTsKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpCit9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzQ29uZGl0
aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
Cit7CisgICAgaGFuZGxlcihbZ2V0QVNDV2ViS2l0U1BJU3VwcG9ydENsYXNzKCkgc2hvdWxkVXNl
QWx0ZXJuYXRlQ3JlZGVudGlhbFN0b3JlXSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHk6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVx
dWVzdERhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaAppbmRleCAwODIxNzc4MTY4ODM1MTI3OGUwY2U4
MDg0MWJiZmNmNzM2ZjI1ZDliLi5iODM5NjUwNGUxYzk0MzFkNGFmZTMwNjcwN2E4MDlkZjQ3M2Vh
OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgog
I2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkZs
YWdzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CkBAIC01Niw2ICs1Nyw3IEBA
IHN0cnVjdCBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhIHsKICAgICBib29sIHByb2Nlc3Np
bmdVc2VyR2VzdHVyZTsKICAgICBTdHJpbmcgY2FjaGVkUGluOyAvLyBPbmx5IHVzZWQgdG8gaW1w
cm92ZSBORkMgQ2xpZW50IFBJTiBleHBlcmllbmNlLgogICAgIFdlYWtQdHI8QVBJOjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsPiB3ZWFrUGFuZWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpN
ZWRpYXRpb25SZXF1aXJlbWVudD4gbWVkaWF0aW9uOwogfTsKIAogV2ViQ29yZTo6Q2xpZW50RGF0
YVR5cGUgZ2V0Q2xpZW50RGF0YVR5cGUoY29uc3Qgc3RkOjp2YXJpYW50PFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBiMTFjNTg5NTMyOWJkMjVkZWY4MjlhNDFhMTFj
MTUyNjA3NGNkY2M3Li5mNTllOTRhOTU2OWY1ZTgxNGMyOWYzYmJjMmRlMWZlYTMyNDc4OTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
Y3BwCkBAIC01OCwxMiArNTgsMTIgQEAgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
On5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSgpCiAKIHZvaWQgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9ucywgYm9vbCBwcm9jZXNz
aW5nVXNlckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0g
ICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1fd2Vi
UGFnZVByb3h5LCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVs
bHB0ciwgR2xvYmFsRnJhbWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCks
IGZyYW1lSWQgfSwgV1RGTW92ZShmcmFtZUluZm8pLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0
cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJlcXVlc3Qo
eyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtX3dlYlBhZ2VQcm94eSwgV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1l
SWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1v
dmUoZnJhbWVJbmZvKSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciwg
c3RkOjpudWxsb3B0IH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1l
SWQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4m
JiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBNZWRp
YXRpb25SZXF1aXJlbWVudCBtZWRpYXRpb24sIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3Qo
eyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtX3dlYlBhZ2VQcm94eSwgV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1l
SWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1v
dmUoZnJhbWVJbmZvKSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9
LCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwg
V1RGTW92ZShvcHRpb25zKSwgbV93ZWJQYWdlUHJveHksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dl
YlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIsIG1lZGlhdGlvbiB9LCBXVEZN
b3ZlKGhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eTo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYgZGF0YSwgUmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKQEAgLTEwNiw2ICsxMDYsMTEgQEAgdm9p
ZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yQXZhaWwKIHsKICAgICBoYW5kbGVyKExvY2FsU2VydmljZTo6aXNBdmFp
bGFibGUoKSk7CiB9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Omlz
Q29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCit7CisgICAgaGFuZGxlcihmYWxzZSk7Cit9CiAjZW5kaWYgLy8gIUhBVkUoVU5JRklF
RF9BU0NfQVVUSF9VSSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAppbmRleCA4Njk3MWRhN2M4NjA4
YTg3YjBiZGZlOGEzNjg0OTkxMTk4YzYzNDgxLi4zOWM4M2NjYWJmYjBmYmQzZGIyZjZhYTIwZDFl
YmU1NWNiNGE3NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CkBAIC02OSw4ICs3MCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBSZWNlaXZlcnMuCiAgICAgdm9p
ZCBtYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyYmLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiwgYm9vbCBwcm9jZXNzaW5nVXNl
ckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGdldEFzc2Vy
dGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgVmVjdG9yPHVp
bnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
JiYsIFdlYkNvcmU6OkNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6TWVkaWF0aW9uUmVxdWlyZW1l
bnQsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIm
Jik7CiAgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGlzQ29uZGl0aW9uYWxNZWRp
YXRpb25BdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHZvaWQgaGFu
ZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYsIFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlciYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjYjkzYzg5ZjI0NDcwZjM5
OWEwYjE5YjFkMzI5ZTc3YTdmNzU2YWZhLi5iNDAxYmRmNWRhOWY4YWYwODI2ZTM0OGE3YmY3NTNh
YjMwMTk0YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjcsNyArMjcsOCBAQAogbWVzc2Fn
ZXMgLT4gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgTm90UmVmQ291bnRlZCB7CiAK
ICAgICBNYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiBoYXNo
LCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRp
b25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4
Y2VwdGlvbikgQXN5bmMKLSAgICBHZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBWZWN0b3I8
dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBHZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJ
bmZvLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zOjpNZWRpYXRpb25SZXF1aXJlbWVudCBtZWRpYXRpb24sIGJvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1l
bnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBB
c3luYworICAgIGlzQ29uZGl0aW9uYWxNZWRpYXRpb25BdmFpbGFibGUoKSAtPiAoYm9vbCByZXN1
bHQpIEFzeW5jCiAgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxh
YmxlKCkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCAxNzIxZThiZWE1NDBiNjgxOGFhYjE0Njk2OTgzYzA3MmFmMjhhZjM5Li5l
NGI0YjZiMzRjMGJmMmU1MjE5N2E2ZGZmZTIyM2IxY2U3YjViNWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTk2LDEyICs5NiwxMiBAQCBib29sIFdlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lYwogCiB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWFrZUNyZWRlbnRp
YWwoVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhh
c2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBudWxscHRyLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHByb2Nlc3NpbmdV
c2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAg
aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIs
IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6
Om51bGxvcHQsIHsgfSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciwg
c3RkOjpudWxsb3B0IH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dGhuQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0QXNzZXJ0aW9uKFZlY3Rvcjx1aW50OF90PiYmIGhhc2gs
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vz
c2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewot
ICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBudWxs
cHRyLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwg
c3RkOjpudWxsb3B0LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxw
dHIgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFz
aCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgcHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0IH0sIFdURk1vdmUoaGFu
ZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFuZGxl
UmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYgZGF0YSwgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHAKaW5kZXggYmVjMjZhZDg0NmY0YzMwYTc3MDYzNmVmZDg1NjQxOGZl
OTc2MTNkOC4uYjFiYTNlNDEzZGI3MzJmOTA1YzY4ZmE3MjA0MzQ2ZDdkYTY4MmNkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTg0LDcg
Kzg0LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFs
KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpN
YWtlQ3JlZGVudGlhbChoYXNoLCBvcHRpb25zLCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdU
Rk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6
Z2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
K3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBN
ZWRpYXRpb25SZXF1aXJlbWVudCBtZWRpYXRpb24sIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYm
IGhhbmRsZXIpCiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFt
ZShmcmFtZSk7CiAgICAgaWYgKCF3ZWJGcmFtZSkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFNlY3VyaXQKICAgICBib29sIHVzZVdlYkF1dGhuUHJvY2VzcyA9IFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFi
bGVkKCk7CiAjZW5kaWYKICAgICBpZiAoIXVzZVdlYkF1dGhuUHJvY2VzcykgewotICAgICAgICBt
X3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eTo6R2V0QXNzZXJ0aW9uKHdlYkZyYW1lLT5mcmFtZUlEKCksIHdlYkZyYW1l
LT5pbmZvKCksIGhhc2gsIG9wdGlvbnMsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSwgV1RGTW92
ZShoYW5kbGVyKSk7CisgICAgICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpHZXRBc3NlcnRpb24od2ViRnJh
bWUtPmZyYW1lSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgaGFzaCwgb3B0aW9ucywgbWVkaWF0aW9u
LCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxlcikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMDYsNiArMTA2LDExIEBAIHZvaWQgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1
cml0CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlV2ViQXV0aG5Qcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1
dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0QXNzZXJ0aW9uKGhhc2gsIG9wdGlvbnMsIGlz
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKK3ZvaWQgV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxl
KFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIG1fd2ViUGFnZS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
Ojppc0NvbmRpdGlvbmFsTWVkaWF0aW9uQXZhaWxhYmxlKCksIFdURk1vdmUoaGFuZGxlcikpOwor
fTsKKwogdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFu
ZGxlcikKIHsKICNpZiBIQVZFKFVOSUZJRURfQVNDX0FVVEhfVUkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggNWUxYzdkZGY1MThlOTljZGE3ZTA2
MGQ4MDdhMDk4Mjg0ZWQwNGY0ZC4uMjU5YzllNTYyYzM5M2IwZTYzZWJiNzhlM2Y3N2MyNzlkYTY5
NzJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApA
QCAtNDEsNyArNDEsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudAogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3Qg
V2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVz
dENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0
IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyYsIFdlYkNvcmU6Ok1lZGlhdGlvblJlcXVpcmVtZW50LCBXZWJDb3JlOjpS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBpc0NvbmRpdGlvbmFs
TWVkaWF0aW9uQXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIHJl
c2V0VXNlckdlc3R1cmVSZXF1aXJlbWVudCgpIGZpbmFsIHsgbV9yZXF1aXJlVXNlckdlc3R1cmUg
PSBmYWxzZTsgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>